Commit 24a7aae0 authored by sasha@mysql.sashanet.com's avatar sasha@mysql.sashanet.com
Browse files

fixed bugs in delayed insert replication and when slave loses connection after...

fixed bugs in delayed insert replication and when slave loses connection after Int_var but before Query
public test suite now tests replication code as well
parent f046a115
Loading
Loading
Loading
Loading
+16 −32
Original line number Diff line number Diff line
@@ -5,38 +5,21 @@
# This scripts creates the privilege tables db, host, user, tables_priv,
# columns_priv in the mysql database, as well as the func table.

ldata=var/lib

if [ x$1 = x"-slave" ] 
then
 shift $#
 ldata=var/slave-data
 logdir=var/log
 mdata=$ldata/mysql
 execdir=../sql
 bindir=../client

# Get mysqld/safe_mysqld options from /etc/my.cnf or ~/.my.cnf
if test -w /
then
  conf=@sysconfdir@/my.cnf
else
  conf=$HOME/.my.cnf
fi

if test -f "$conf"
then
  if grep "^datadir" $conf >/dev/null
  then
    ldata=`grep "^datadir" $conf | sed '.*=[ \t]*//`
  fi
  if grep "^execdir" $conf >/dev/null
  then
    execdir=`grep "^execdir" $conf | sed '.*=[ \t]*//`
  fi
  if grep "^bindir" $conf >/dev/null
  then
    bindir=`grep "^bindir" $conf | sed '.*=[ \t]*//`
  fi
  if grep "^user" $conf >/dev/null
  then
    user=`grep "^user" $conf | sed '.*=[ \t]*//`
  fi
 ldata=var/lib
 logdir=var/log
 mdata=$ldata/mysql
 execdir=../sql
 bindir=../client
fi

if test ! -x $execdir/mysqld
@@ -51,6 +34,7 @@ hostname=`hostname` # Install this too in the user table

resolved=127.0.0.1


# Create database directories mysql & test
if test ! -d $ldata; then (mkdir -p $ldata || exit 1) && \
 (chmod 700  $ldata || exit 1) ; fi
@@ -207,8 +191,8 @@ then
  c_c="$c_c   comment='Column privileges';"
fi

if $execdir/mysqld --bootstrap --skip-grant-tables \
    --basedir=. --datadir=$ldata "$@" << END_OF_DATA
if $execdir/mysqld --no-defaults --bootstrap --skip-grant-tables \
    --basedir=. --datadir=$ldata  << END_OF_DATA
use mysql;
$c_d
$i_d
+89 −26
Original line number Diff line number Diff line
@@ -25,12 +25,18 @@ TOT_TEST=0
USERT=0
SYST=0
REALT=0
MY_TMP_DIR=$CWD/var/tmp
TIMEFILE="$CWD/var/tmp/mysqltest-time"
DASHBLANK="----	----	-------"
MYSQLD_SRC_DIRS="strings mysys include extra regex isam merge myisam \
 myisammrg heap sql"
GCOV_MSG=/tmp/mysqld-gcov.out #gcov output
GCOV_ERR=/tmp/mysqld-gcov.err  
GCOV_MASTER_MSG=/tmp/mysqld-master-gcov.out #gcov output
GCOV_MASTER_ERR=/tmp/mysqld-master-gcov.err  
GCOV_SLAVE_MSG=/tmp/mysqld-slave-gcov.out #gcov output
GCOV_SLAVE_ERR=/tmp/mysqld-slave-gcov.err  
GCOV_SLAVE_SRC=/tmp/mysqld-slave-src/

[ -d $MY_TMP_DIR ]  || mkdir -p $MY_TMP_DIR

[ -z $COLUMNS ] && COLUMNS=80
E=`expr $COLUMNS - 8`
@@ -45,12 +51,20 @@ done
#++
# mysqld Environment Parameters
#--
MYPORT=9306
MYDDIR="$CWD/var/lib"
MYSOCK="$CWD/var/tmp/mysql.sock"
MYPID="$CWD/var/run/mysqld.pid"
MYLOG="$CWD/var/log/mysqld.log"
MYERR="$CWD/var/log/mysqld.err"
MYRUN_DIR=var/run
MASTER_MYPORT=9306
MASTER_MYDDIR="$CWD/var/lib"
MASTER_MYSOCK="$CWD/var/tmp/mysql.sock"
MASTER_MYPID="$CWD/var/run/mysqld.pid"
MASTER_MYLOG="$CWD/var/log/mysqld.log"
MASTER_MYERR="$CWD/var/log/mysqld.err"

SLAVE_MYPORT=9307
SLAVE_MYDDIR="$CWD/var/slave-data"
SLAVE_MYSOCK="$CWD/var/tmp/mysql-slave.sock"
SLAVE_MYPID="$CWD/var/run/mysqld-slave.pid"
SLAVE_MYLOG="$CWD/var/log/mysqld-slave.log"
SLAVE_MYERR="$CWD/var/log/mysqld-slave.err"

#++
# Program Definitions
@@ -70,7 +84,7 @@ XARGS=`which xargs`
MYSQLD="$BASEDIR/sql/mysqld"
MYSQL_TEST="$BASEDIR/client/mysqltest"
MYSQLADMIN="$BASEDIR/client/mysqladmin"
MYSQL_TEST="$MYSQL_TEST --socket=$MYSOCK --database=$DB --user=$DBUSER --password=$DBPASSWD --silent"
MYSQL_TEST="$MYSQL_TEST --socket=$MASTER_MYSOCK --database=$DB --user=$DBUSER --password=$DBPASSWD --silent"
INSTALL_DB="$MYBIN/mysql-test_install_db"

[ "$1" = "-gcov" ] && DO_GCOV=1
@@ -165,52 +179,97 @@ report_stats () {
}

mysql_install_db () {
    `$INSTALL_DB`
    $RM -rf $MASTER_MYDDIR $SLAVE_MYDDIR $SLAVE_MYLOG $MASTER_MYLOG \
     $SLAVE_MYERR $MASTER_MYERR
    [ -d $MYRUN_DIR ] || mkdir -p $MYRUN_DIR 
    $INSTALL_DB
    if [ $? != 0 ]; then
	error "Could not install master test DBs"
	exit 1
    fi
    $INSTALL_DB -slave
    if [ $? != 0 ]; then
	error "Could not install test DBs"
	error "Could not install slave test DBs"
	exit 1
    fi
    return 0
}

gcov_clean () {
gcov_prepare () {
    $FIND $BASEDIR -name \*.gcov \
    -or -name \*.da | $XARGS $RM
    $RM -rf $GCOV_SLAVE_SRC
    for d in $MYSQLD_SRC_DIRS; do
	cd $BASEDIR/$d
        mkdir -p $GCOV_SLAVE_SRC/$d  
	for f in *.h *.cc *.c; do
	  cp $f $GCOV_SLAVE_SRC/$d
	done
	cd $CWD
   done    
}

gcov_collect () {
    $ECHO "Collecting source coverage info..."
    [ -f $GCOV_MSG ] && $RM $GCOV_MSG
    [ -f $GCOV_ERR ] && $RM $GCOV_ERR
    [ -f $GCOV_MASTER_MSG ] && $RM $GCOV_MASTER_MSG
    [ -f $GCOV_MASTER_ERR ] && $RM $GCOV_MASTER_ERR
    [ -f $GCOV_SLAVE_MSG ] && $RM $GCOV_SLAVE_MSG
    [ -f $GCOV_SLAVE_ERR ] && $RM $GCOV_SLAVE_ERR
    for d in $MYSQLD_SRC_DIRS; do
	cd $BASEDIR/$d
	for f in *.h *.cc *.c; do
	    $GCOV $f 2>>$GCOV_ERR  >>$GCOV_MSG
	    $GCOV $f 2>>$GCOV_MASTER_ERR  >>$GCOV_MASTER_MSG
	done
	cd $CWD
	cd $GCOV_SLAVE_SRC/$d
	for f in *.h *.cc *.c; do
	    $GCOV $f 2>>$GCOV_SLAVE_ERR  >>$GCOV_SLAVE_MSG
	done
	cd $CWD
    done

    $ECHO "gcov info in $GCOV_MSG, errors in $GCOV_ERR"
    $ECHO "gcov master info in $GCOV_MASTER_MSG, errors in $GCOV_MASTER_ERR"
    $ECHO "gcov slave info in $GCOV_SLAVE_MSG, errors in $GCOV_SLAVE_ERR"
}

mysql_start () {

    cd $BASEDIR # for gcov
    $MYSQLD --no-defaults \
            --skip-networking \
    #start master
    $MYSQLD --no-defaults --log-bin \
    	    --server-id=1 \
            --basedir=$CWD \
	    --port=$MASTER_MYPORT \
	    --core-file \
            --datadir=$MASTER_MYDDIR \
	    --pid-file=$MASTER_MYPID \
	    --socket=$MASTER_MYSOCK \
            --log=$MASTER_MYLOG \
	    --language=english  >> $MASTER_MYERR 2>&1 &
    #allow master to get setteled so slave can connect right away without error
    sleep 1
    #start slave
    $MYSQLD --no-defaults --server-id=2 \
	    --master-user=root \
	    --master-connect-retry=5 \
	    --master-host=127.0.0.1 \
	    --master-port=$MASTER_MYPORT \
	    --core-file \
            --basedir=$CWD \
            --datadir=$MYDDIR \
	    --pid-file=$MYPID \
	    --socket=$MYSOCK \
            --log=$MYLOG \
            --language=english >> $MYERR 2>&1 &
            --datadir=$SLAVE_MYDDIR \
	    --pid-file=$SLAVE_MYPID \
	    --port=$SLAVE_MYPORT \
	    --socket=$SLAVE_MYSOCK \
            --log=$SLAVE_MYLOG \
            --language=english  >> $SLAVE_MYERR 2>&1 &
    cd $CWD
    return 1
}

mysql_stop () {

    `$MYSQLADMIN --socket=$MYSOCK -u root shutdown`
    $MYSQLADMIN --socket=$MASTER_MYSOCK -u root shutdown
    $MYSQLADMIN --socket=$SLAVE_MYSOCK -u root shutdown

    return 1
}
@@ -230,13 +289,14 @@ mysql_restart () {

mysql_loadstd () {

    sleep 2
    #sleep 2
    return 1
}

[ "$DO_GCOV" -a ! -x "$GCOV" ] && error "No gcov found"

[ "$DO_GCOV" ] && gcov_clean # clean up stale gcov files if running with gcov
[ "$DO_GCOV" ] && gcov_prepare 


mysql_install_db

@@ -289,6 +349,9 @@ do
	total_inc

    if [ $res != 0 ]; then
        $ECHO "failed output"
	$CAT $TIMEFILE
	$ECHO
	$ECHO
	$SETCOLOR_NORMAL && $ECHO -n "Restarting mysqld	$DASHBLANK"
	mysql_restart
+3 −0
Original line number Diff line number Diff line
n	
1	
2	
+2 −0
Original line number Diff line number Diff line
sum(length(word))	
363634	
+4 −0
Original line number Diff line number Diff line
n	
2000	
2001	
2002	
Loading