#!/bin/sh # # Copyright (c) 2006 MySQL AB # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA echo "######################################################################" echo "#" echo "# Test BUG#16218 - Crash on insert delayed" echo "# Test BUG#17294 - INSERT DELAYED puting an \\n before data" echo "# Test BUG#16611 - INSERT DELAYED corrupts data" echo "# Test BUG#13707 - Server crash with INSERT DELAYED on MyISAM table" echo "#" echo "# Part 1 - to be run on 4.1. Creates tables to be used from 5.0 later." echo "#" ####################################################################### # # Settings. CAUTION: Paths are not space safe. # # BASEDIR="install directory" # DATADIR="databases directory e.g. $BASEDIR/var" DATADIR="${DATADIR:-$BASEDIR/var}" TREEROOT="${TREEROOT:-$HOME}" MYSQLD="$BASEDIR/libexec/mysqld" MYSQLC="$BASEDIR/bin/mysql" MYSQLA="$BASEDIR/bin/mysqladmin" MYSQLT="$BASEDIR/bin/mysqltest" PORT_1="${MYSQL_TCP_PORT:+--port=$MYSQL_TCP_PORT}" SOCK_1="${MYSQL_UNIX_PORT:+--socket=$MYSQL_UNIX_PORT}" USER_1="-u root -D test" CLNT_1="-A -v -f" DATA_1="--basedir=$BASEDIR --datadir=$DATADIR" SERV_1="--log-error --core" #SERV_1="$SERV_1 --skip-concurrent-insert" DBUG_1= #DBUG_1="--debug=d,query,enter:i:O,$DATADIR/mysqld.trace" #DBUG_1="--debug=d,thrlock:i:O,$DATADIR/mysqld.trace" #DBUG_1="--debug=t:d,query,send_data:i:O,$DATADIR/mysqld.trace" #DBUG_1="--debug=t:d:i:O,$DATADIR/mysqld.trace" DDD= #DDD=1 cd $DATADIR || exit $? rm -f *.trace *.err *.pid core* test/#sql* bug16218* ####################################################################### # # Functions. sleep_until_file_created () { file=$1 loop=$2 org_time=$2 while (test $loop -gt 0) do if [ -r $file ] then return 0 fi sleep 1 loop=`expr $loop - 1` done echo "ERROR: $file was not created in $org_time seconds; Aborting" exit 1; } sleep_until_file_deleted () { pid=$1; file=$2 loop=$3 while (test $loop -gt 0) do if [ ! -r $file ] then if test $pid != "0" then wait_for_pid $pid fi return fi sleep 1 loop=`expr $loop - 1` done } echo "######################################################################" echo "#" echo "# Starting database server." "$MYSQLD" $PORT_1 $SOCK_1 $DATA_1 $SERV_1 $DBUG_1 & SERV_1_PID=$! echo "Process_id $SERV_1_PID" echo sleep_until_file_created `uname -n`.pid 400 echo "######################################################################" echo "#" echo "# Creating table." "$MYSQLC" $PORT_1 $SOCK_1 $USER_1 $CLNT_1 <<\EOF DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( `ipa` INT(11) NOT NULL DEFAULT '0', `gsku` INT(11) NOT NULL DEFAULT '0', `name` VARCHAR(9) NOT NULL DEFAULT '', `pass` VARCHAR(8) NOT NULL DEFAULT '', `serial` VARCHAR(22) DEFAULT NULL, `sid` INT(11) NOT NULL DEFAULT '0', `msg` VARCHAR(255) NOT NULL DEFAULT '', `time` INT(11) NOT NULL DEFAULT '0' ) ENGINE=MyISAM; DROP TABLE IF EXISTS t2; CREATE TABLE t2 ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `from` VARCHAR(20) NOT NULL DEFAULT '', `to` VARCHAR(10) NOT NULL DEFAULT '', `body` VARCHAR(160) NOT NULL DEFAULT '', `date` DATETIME DEFAULT NULL, PRIMARY KEY (`id`), KEY `from` (`from`), KEY `body` (`body`), KEY `to` (`to`) ) ENGINE=MyISAM; DROP TABLE IF EXISTS t3; CREATE TABLE `t3` ( `c1` VARCHAR(16) NOT NULL ) ENGINE=MyISAM; DROP TABLE IF EXISTS t4; CREATE TABLE t4 ( `RateDate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `endDate` DATE NOT NULL DEFAULT '0000-00-00', `Currency` VARCHAR(3) NOT NULL DEFAULT '', `Rate` DECIMAL(19,6) NOT NULL DEFAULT '0.000000', `DataSource` CHAR(1) NOT NULL DEFAULT '', `UserSign` SMALLINT(5) NOT NULL DEFAULT '0', PRIMARY KEY (RateDate,Currency) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO t4 VALUES ('2004-07-31 00:00:00','2004-11-30','USD','0.737250','I',1), ('2005-09-22 00:00:00','9999-12-31','USD','0.819130','I',7), ('2005-09-21 00:00:00','9999-12-31','GBP','1.484490','I',7); show variables like 'data%'; EOF echo "#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" echo "# Note the above datadir. You will have to supply it to part 2." echo "#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" echo sleep 1 echo "######################################################################" echo "#" echo "# Stopping database server." "$MYSQLA" $PORT_1 $SOCK_1 -u root shutdown sleep_until_file_deleted 0 `uname -n`.pid 60 echo "# End of Test." echo "#" echo "######################################################################"