Commit 20b95d08 authored by Alexander Nozdrin's avatar Alexander Nozdrin

Auto-merge from mysql-next-mr.

parents 273454b9 0eda4846
...@@ -442,6 +442,7 @@ Exit_status Load_log_processor::process_first_event(const char *bname, ...@@ -442,6 +442,7 @@ Exit_status Load_log_processor::process_first_event(const char *bname,
{ {
error("Could not construct local filename %s%s.", error("Could not construct local filename %s%s.",
target_dir_name,bname); target_dir_name,bname);
my_free(fname, MYF(0));
delete ce; delete ce;
DBUG_RETURN(ERROR_STOP); DBUG_RETURN(ERROR_STOP);
} }
...@@ -449,9 +450,15 @@ Exit_status Load_log_processor::process_first_event(const char *bname, ...@@ -449,9 +450,15 @@ Exit_status Load_log_processor::process_first_event(const char *bname,
rec.fname= fname; rec.fname= fname;
rec.event= ce; rec.event= ce;
/*
fname is freed in process_event()
after Execute_load_query_log_event or Execute_load_log_event
will have been processed, otherwise in Load_log_processor::destroy()
*/
if (set_dynamic(&file_names, (uchar*)&rec, file_id)) if (set_dynamic(&file_names, (uchar*)&rec, file_id))
{ {
error("Out of memory."); error("Out of memory.");
my_free(fname, MYF(0));
delete ce; delete ce;
DBUG_RETURN(ERROR_STOP); DBUG_RETURN(ERROR_STOP);
} }
...@@ -831,7 +838,17 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev, ...@@ -831,7 +838,17 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
print_event_info->common_header_len= print_event_info->common_header_len=
glob_description_event->common_header_len; glob_description_event->common_header_len;
ev->print(result_file, print_event_info); ev->print(result_file, print_event_info);
ev->temp_buf= 0; // as the event ref is zeroed if (!remote_opt)
{
ev->free_temp_buf(); // free memory allocated in dump_local_log_entries
}
else
{
/*
disassociate but not free dump_remote_log_entries time memory
*/
ev->temp_buf= 0;
}
/* /*
We don't want this event to be deleted now, so let's hide it (I We don't want this event to be deleted now, so let's hide it (I
(Guilhem) should later see if this triggers a non-serious Valgrind (Guilhem) should later see if this triggers a non-serious Valgrind
......
dnl -*- ksh -*- dnl -*- ksh -*-
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
# Copyright (C) 2008-2009 Sun Microsystems, Inc
#
# 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; version 2 of the License.
#
# 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
AC_PREREQ(2.52)dnl Minimum Autoconf version required. AC_PREREQ(2.52)dnl Minimum Autoconf version required.
AC_INIT(sql/mysqld.cc) AC_INIT(sql/mysqld.cc)
...@@ -2944,7 +2959,54 @@ case $SYSTEM_TYPE in ...@@ -2944,7 +2959,54 @@ case $SYSTEM_TYPE in
esac esac
AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS) AC_SUBST(MAKE_BINARY_DISTRIBUTION_OPTIONS)
#--------------------------------------------------------------------
# Support for WL#2373 (Use cycle counter for timing)
#--------------------------------------------------------------------
AC_CHECK_HEADERS(time.h)
AC_CHECK_HEADERS(sys/time.h)
AC_CHECK_HEADERS(sys/times.h)
AC_CHECK_HEADERS(asm/msr.h)
#msr.h has rdtscll()
AC_CHECK_HEADERS(ia64intrin.h)
AC_CHECK_FUNCS(times)
AC_CHECK_FUNCS(gettimeofday)
AC_CHECK_FUNCS(read_real_time)
# This should work on AIX.
AC_CHECK_FUNCS(ftime)
# This is still a normal call for milliseconds.
AC_CHECK_FUNCS(time)
# We can use time() on Macintosh if there is no ftime().
AC_CHECK_FUNCS(rdtscll)
# I doubt that we'll ever reach the check for this.
# When compiling with Sun Studio C / C++ we need to include
# my_timer_cycles.il, an "inline templates" separate file,
# on the command line. It has assembly code, "rd %tick" for
# SPARC or "rdtsc" for x86.
RDTSC_SPARC_ASSEMBLY=""
case $CC_VERSION in
*Sun*C*)
RDTSC_SPARC_ASSEMBLY="my_timer_cycles.il"
;;
esac
case $CXX_VERSION in
*Sun*C++*)
RDTSC_SPARC_ASSEMBLY="my_timer_cycles.il"
;;
esac
AC_SUBST([RDTSC_SPARC_ASSEMBLY])
#--------------------------------------------------------------------
# Output results # Output results
#--------------------------------------------------------------------
if test -d "$srcdir/pstack" ; then if test -d "$srcdir/pstack" ; then
AC_CONFIG_FILES(pstack/Makefile pstack/aout/Makefile) AC_CONFIG_FILES(pstack/Makefile pstack/aout/Makefile)
fi fi
......
...@@ -38,6 +38,7 @@ noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \ ...@@ -38,6 +38,7 @@ noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \
my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \ my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \
thr_lock.h t_ctype.h violite.h my_md5.h base64.h \ thr_lock.h t_ctype.h violite.h my_md5.h base64.h \
my_handler.h my_time.h service_versions.h \ my_handler.h my_time.h service_versions.h \
my_rdtsc.h \
my_vle.h my_user.h my_atomic.h atomic/nolock.h \ my_vle.h my_user.h my_atomic.h atomic/nolock.h \
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \ atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \ atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
......
/* Copyright (C) 2008, 2009 Sun Microsystems, Inc
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; version 2 of the License.
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 */
/*
rdtsc3 -- multi-platform timer code
pgulutzan@mysql.com, 2005-08-29
modified 2008-11-02
*/
#ifndef MY_RDTSC_H
#define MY_RDTSC_H
/**
Characteristics of a timer.
*/
struct my_timer_unit_info
{
/** Routine used for the timer. */
ulonglong routine;
/** Overhead of the timer. */
ulonglong overhead;
/** Frequency of the timer. */
ulonglong frequency;
/** Resolution of the timer. */
ulonglong resolution;
};
/**
Characteristics of all the supported timers.
@sa my_timer_init().
*/
struct my_timer_info
{
/** Characteristics of the cycle timer. */
struct my_timer_unit_info cycles;
/** Characteristics of the nanosecond timer. */
struct my_timer_unit_info nanoseconds;
/** Characteristics of the microsecond timer. */
struct my_timer_unit_info microseconds;
/** Characteristics of the millisecond timer. */
struct my_timer_unit_info milliseconds;
/** Characteristics of the tick timer. */
struct my_timer_unit_info ticks;
};
typedef struct my_timer_info MY_TIMER_INFO;
C_MODE_START
/**
A cycle timer.
@return the current timer value, in cycles.
*/
ulonglong my_timer_cycles(void);
/**
A namoseconds timer.
@return the current timer value, in nanoseconds.
*/
ulonglong my_timer_nanoseconds(void);
/**
A microseconds timer.
@return the current timer value, in microseconds.
*/
ulonglong my_timer_microseconds(void);
/**
A millisecond timer.
@return the current timer value, in milliseconds.
*/
ulonglong my_timer_milliseconds(void);
/**
A ticks timer.
@return the current timer value, in ticks.
*/
ulonglong my_timer_ticks(void);
/**
Timer initialization function.
@param [out] mti the timer characteristics.
*/
void my_timer_init(MY_TIMER_INFO *mti);
C_MODE_END
#define MY_TIMER_ROUTINE_ASM_X86 1
#define MY_TIMER_ROUTINE_ASM_X86_64 2
#define MY_TIMER_ROUTINE_RDTSCLL 3
#define MY_TIMER_ROUTINE_ASM_X86_WIN 4
#define MY_TIMER_ROUTINE_RDTSC 5
#define MY_TIMER_ROUTINE_ASM_IA64 6
#define MY_TIMER_ROUTINE_ASM_PPC 7
#define MY_TIMER_ROUTINE_SGI_CYCLE 8
#define MY_TIMER_ROUTINE_GETHRTIME 9
#define MY_TIMER_ROUTINE_READ_REAL_TIME 10
#define MY_TIMER_ROUTINE_CLOCK_GETTIME 11
#define MY_TIMER_ROUTINE_NXGETTIME 12
#define MY_TIMER_ROUTINE_GETTIMEOFDAY 13
#define MY_TIMER_ROUTINE_QUERYPERFORMANCECOUNTER 14
#define MY_TIMER_ROUTINE_GETTICKCOUNT 15
#define MY_TIMER_ROUTINE_TIME 16
#define MY_TIMER_ROUTINE_TIMES 17
#define MY_TIMER_ROUTINE_FTIME 18
#define MY_TIMER_ROUTINE_ASM_PPC64 19
#define MY_TIMER_ROUTINE_ASM_SUNPRO_SPARC64 20
#define MY_TIMER_ROUTINE_ASM_SUNPRO_SPARC32 21
#define MY_TIMER_ROUTINE_ASM_SUNPRO_I386 22
#define MY_TIMER_ROUTINE_ASM_GCC_SPARC64 23
#define MY_TIMER_ROUTINE_ASM_GCC_SPARC32 24
#define MY_TIMER_ROUTINE_MACH_ABSOLUTE_TIME 25
#define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26
#define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64 27
#endif
...@@ -81,4 +81,3 @@ parts.partition_syntax_ndb ...@@ -81,4 +81,3 @@ parts.partition_syntax_ndb
parts.partition_alter1_1_2_ndb parts.partition_alter1_1_2_ndb
parts.partition_basic_ndb parts.partition_basic_ndb
parts.partition_mgm_lc0_ndb parts.partition_mgm_lc0_ndb
...@@ -179,7 +179,9 @@ begin ...@@ -179,7 +179,9 @@ begin
end| end|
delimiter ;| delimiter ;|
--disable_warnings
insert into t1 (last_id) values (0); insert into t1 (last_id) values (0);
--enable_warnings
drop trigger t1_bi; drop trigger t1_bi;
...@@ -512,7 +514,9 @@ set sql_log_bin=0; ...@@ -512,7 +514,9 @@ set sql_log_bin=0;
insert into t2 (id) values(5),(6),(7); insert into t2 (id) values(5),(6),(7);
delete from t2 where id>=5; delete from t2 where id>=5;
set sql_log_bin=1; set sql_log_bin=1;
--disable_warnings
insert into t1 select insid(); insert into t1 select insid();
--enable_warnings
select * from t1 order by id; select * from t1 order by id;
select * from t2 order by id; select * from t2 order by id;
......
...@@ -22,6 +22,7 @@ source include/show_slave_status2.inc; ...@@ -22,6 +22,7 @@ source include/show_slave_status2.inc;
reset slave; reset slave;
source include/show_slave_status2.inc; source include/show_slave_status2.inc;
change master to master_user='root';
start slave; start slave;
sync_with_master; sync_with_master;
source include/show_slave_status2.inc; source include/show_slave_status2.inc;
......
...@@ -36,7 +36,7 @@ SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; ...@@ -36,7 +36,7 @@ SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
sleep 5; --source include/wait_for_ndb_to_binlog.inc
--echo --echo
--echo **** Data Insert Validation Slave Section test.t1 **** --echo **** Data Insert Validation Slave Section test.t1 ****
--echo --echo
...@@ -56,12 +56,10 @@ UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; ...@@ -56,12 +56,10 @@ UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
--echo --echo
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
# Sleep is needed for NDB to allow time for
# Injector thread to populate the bin log.
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
sleep 5; --source include/wait_for_ndb_to_binlog.inc
--echo --echo
--echo **** Data Update Validation Slave Section test.t1 **** --echo **** Data Update Validation Slave Section test.t1 ****
--echo --echo
...@@ -132,7 +130,7 @@ FROM test.t2 WHERE c1=2; ...@@ -132,7 +130,7 @@ FROM test.t2 WHERE c1=2;
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
sleep 5; --source include/wait_for_ndb_to_binlog.inc
--echo --echo
--echo **** Data Insert Validation Slave Section test.t2 **** --echo **** Data Insert Validation Slave Section test.t2 ****
--echo --echo
...@@ -155,12 +153,10 @@ SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) ...@@ -155,12 +153,10 @@ SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=1; FROM test.t2 WHERE c1=1;
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=2; FROM test.t2 WHERE c1=2;
# Sleep is needed for NDB to allow time for
# Injector thread to populate the bin log.
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
sleep 5; --source include/wait_for_ndb_to_binlog.inc
--echo --echo
--echo **** Data Update Validation Slave Section test.t2 **** --echo **** Data Update Validation Slave Section test.t2 ****
--echo --echo
......
...@@ -3,10 +3,7 @@ ...@@ -3,10 +3,7 @@
# Original Date: Aug/15/2005 # # Original Date: Aug/15/2005 #
# Update: 08/29/2005 Comment out sleep. Only needed for debugging # # Update: 08/29/2005 Comment out sleep. Only needed for debugging #
############################################################################# #############################################################################
# Note: Many lines are commented out in this test case. These were used for # # Note: Time changes and is not deteministic, so instead we dump both the #
# creating the test case and debugging and are being left for #
# debugging, but they can not be used for the regular testing as the #
# Time changes and is not deteministic, so instead we dump both the #
# master and slave and diff the dumps. If the dumps differ then the # # master and slave and diff the dumps. If the dumps differ then the #
# test case will fail. To run during diff failuers, comment out the # # test case will fail. To run during diff failuers, comment out the #
# diff. # # diff. #
...@@ -26,7 +23,6 @@ DROP TABLE IF EXISTS test.t1; ...@@ -26,7 +23,6 @@ DROP TABLE IF EXISTS test.t1;
--enable_warnings --enable_warnings
eval CREATE TABLE test.t1 (a INT NOT NULL AUTO_INCREMENT, c CHAR(16),PRIMARY KEY(a))ENGINE=$engine_type; eval CREATE TABLE test.t1 (a INT NOT NULL AUTO_INCREMENT, c CHAR(16),PRIMARY KEY(a))ENGINE=$engine_type;
delimiter |; delimiter |;
...@@ -44,33 +40,24 @@ END| ...@@ -44,33 +40,24 @@ END|
delimiter ;| delimiter ;|
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1()); INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
sleep 6;
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1()); INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
sleep 6;
#Select in this test are used for debugging
#select * from test.t1;
#connection slave;
#select * from test.t1;
connection master;
SET AUTOCOMMIT=0; SET AUTOCOMMIT=0;
START TRANSACTION; START TRANSACTION;
INSERT INTO test.t1 VALUES (null,test.f1()); INSERT INTO test.t1 VALUES (null,test.f1());
ROLLBACK; ROLLBACK;
SET AUTOCOMMIT=1; SET AUTOCOMMIT=1;
#select * from test.t1;
#sleep 6;
#connection slave;
#select * from test.t1;
#connection master;
#used for debugging # Sync master and slave for all engines except NDB
#show binlog events; if (`SELECT UPPER(LEFT('$engine_type', 3)) != 'NDB'`) {
sync_slave_with_master;
connection master;
}
# Sync master and slave for NDB engine
let $wait_time= 6;
--source include/wait_for_ndb_to_binlog.inc
# time to dump the databases and so we can see if they match # Time to dump the databases and so we can see if they match
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_master.sql --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_slave.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_slave.sql
...@@ -87,5 +74,8 @@ DROP TABLE test.t1; ...@@ -87,5 +74,8 @@ DROP TABLE test.t1;
diff_files $MYSQLTEST_VARDIR/tmp/func003_master.sql $MYSQLTEST_VARDIR/tmp/func003_slave.sql; diff_files $MYSQLTEST_VARDIR/tmp/func003_master.sql $MYSQLTEST_VARDIR/tmp/func003_slave.sql;
# Clean up
remove_file $MYSQLTEST_VARDIR/tmp/func003_master.sql;
remove_file $MYSQLTEST_VARDIR/tmp/func003_slave.sql;
# End of 5.0 test case # End of 5.0 test case
...@@ -41,10 +41,7 @@ CALL test.p2(); ...@@ -41,10 +41,7 @@ CALL test.p2();
SELECT release_lock("test"); SELECT release_lock("test");
SELECT * FROM test.t1; SELECT * FROM test.t1;
#show binlog events; #show binlog events;
# Added sleep for use with NDB to ensure that --source include/wait_for_ndb_to_binlog.inc
# the injector thread will populate log before
# we switch to the slave.
sleep 5;
sync_slave_with_master; sync_slave_with_master;
connection slave; connection slave;
SELECT * FROM test.t1; SELECT * FROM test.t1;
......
...@@ -68,8 +68,8 @@ enable_query_log; ...@@ -68,8 +68,8 @@ enable_query_log;
connection slave; connection slave;
lock tables t1 read; lock tables t1 read;
start slave; start slave;
#hope this is long enough for I/O thread to fetch over 16K relay log data connection master;
sleep 3; --source include/sync_slave_io_with_master.inc
unlock tables; unlock tables;
#test handling of aborted connection in the middle of update #test handling of aborted connection in the middle of update
......
...@@ -35,9 +35,8 @@ INSERT INTO test.t2 VALUES (1, 0.0); ...@@ -35,9 +35,8 @@ INSERT INTO test.t2 VALUES (1, 0.0);
#show binlog events; #show binlog events;
select * from test.t1; select * from test.t1;
select * from test.t2; select * from test.t2;
# Have to sleep for a few seconds to allow let $wait_time= 10;
# NDB injector thread to populate binlog --source include/wait_for_ndb_to_binlog.inc
sleep 10;
sync_slave_with_master; sync_slave_with_master;
connection slave; connection slave;
select * from test.t1; select * from test.t1;
......
...@@ -6,12 +6,29 @@ ...@@ -6,12 +6,29 @@
# Since we expect STOP SLAVE to produce a warning as the slave is # Since we expect STOP SLAVE to produce a warning as the slave is
# stopped (the server was started with skip-slave-start), we disable # stopped (the server was started with skip-slave-start), we disable
# warnings when doing STOP SLAVE. # warnings when doing STOP SLAVE.
#
# $no_change_master If true, no change master will be done nor any reset slave.
# This is to avoid touching the relay-log.info file allowing
# the test to create one itself.
# $skip_slave_start If true, the slave will not be started
connection slave; connection slave;
#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)
--disable_warnings --disable_warnings
stop slave; stop slave;
--disable_query_log
if (!$no_change_master) {
eval CHANGE MASTER TO MASTER_USER='root',
MASTER_CONNECT_RETRY=1,
MASTER_HOST='127.0.0.1',
MASTER_PORT=$MASTER_MYPORT;
}
--enable_query_log
source include/wait_for_slave_to_stop.inc; source include/wait_for_slave_to_stop.inc;
--enable_warnings --enable_warnings
connection master; connection master;
--disable_warnings --disable_warnings
--disable_query_log --disable_query_log
...@@ -20,17 +37,39 @@ use test; ...@@ -20,17 +37,39 @@ use test;
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;
--enable_warnings --enable_warnings
reset master; reset master;
--disable_query_log --disable_query_log
reset slave; if (!$no_change_master) {
reset slave;
}
--enable_query_log --enable_query_log
connection slave; connection slave;
reset slave;
--disable_warnings
# the first RESET SLAVE may produce a warning about non-existent
# 'ndb_apply_status' table, because this table is created
# asynchronously at the server startup and may not exist yet
# if RESET SLAVE comes too soon after the server startup
if (!$no_change_master) {
reset slave;
}
--enable_warnings
# Clean up old test tables # Clean up old test tables
--disable_warnings --disable_warnings
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;
--enable_warnings --enable_warnings
--disable_query_log --disable_query_log
#eval CHANGE MASTER TO MASTER_USER='root',
# MASTER_CONNECT_RETRY=1,
# MASTER_HOST='127.0.0.1',
# MASTER_PORT=$MASTER_MYPORT;
reset master; reset master;
--enable_query_log --enable_query_log
start slave;
source include/wait_for_slave_to_start.inc; if (!$skip_slave_start) {
start slave;
source include/wait_for_slave_to_start.inc;
}
# Replication tests need binlog # Replication tests need binlog
#
# $skip_slave_start If true, the slave will not be started
source include/have_log_bin.inc; source include/have_log_bin.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
...@@ -8,7 +10,10 @@ connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,); ...@@ -8,7 +10,10 @@ connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
-- source include/master-slave-reset.inc -- source include/master-slave-reset.inc
connection master; if (!$skip_slave_start) {
sync_slave_with_master; connection master;
sync_slave_with_master;
}
# Set the default connection to 'master' # Set the default connection to 'master'
connection master; connection master;
--require r/not_ndb_default.require --require r/not_ndb_default.require
disable_query_log; disable_query_log;
select convert(@@table_type using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE"; select convert(@@storage_engine using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE";
enable_query_log; enable_query_log;
# ==== Purpose ====
#
# Several test primitives from mysql-test/extra/rpl_tests
# shared for test cases for MyISAM, InnoDB, NDB and other
# engines. But for NDB all events will be added by NDB
# injector and now there are no way to detect the state of
# NDB injector therefore this primitive waits 5 sec
# if engine type is NDB.
# In future that should be fixed by waiting of proper
# state of NDB injector.
#
# ==== Usage ====
#
# let $engine_type= NDB;
# --source include/wait_for_ndb_to_binlog.inc
#
# ==== Parameters =====
#
# $engine_type
# Type of engine. If type is NDB then it waits $wait_time sec
#
# $wait_time
# Test will wait $wait_time seconds
let $_wait_time= 5;
if (!$wait_time) {
let $_wait_time= $wait_time;
}
if (`SELECT UPPER(LEFT('$engine_type',3)) = 'NDB'`) {
while (!$_wait_time) {
let $_wait_time_internal= 10;
while (!$_wait_time_internal) {
sleep 0.1;
dec $_wait_time_internal;
}
dec $_wait_time;
}
}
...@@ -2,13 +2,16 @@ ...@@ -2,13 +2,16 @@
# #
# SUMMARY # SUMMARY
# #
# Waits until the show statement ($show_statement) has at least within one of # Waits until the show statement ($show_statement) has one or all of the
# the rows of the result set for the field ($field) a value which fulfils # rows of the result set for the field ($field) a value which fulfils
# a condition ($condition), or the operation times out. # a condition ($condition), or the operation times out.
# #
# #
# USAGE # USAGE
# #
# All rows of the result must fulfil the condition if $all_rows_fulfil is 1
# else at least one of the result must fulfil the condition.
# let $wait_for_all= 1;
# let $show_statement= SHOW PROCESSLIST; # let $show_statement= SHOW PROCESSLIST;
# let $field= State; # let $field= State;
# let $condition= = 'Updating'; # let $condition= = 'Updating';
...@@ -46,27 +49,56 @@ inc $max_run_time; ...@@ -46,27 +49,56 @@ inc $max_run_time;
let $found= 0; let $found= 0;
let $max_end_time= `SELECT UNIX_TIMESTAMP() + $max_run_time`; let $max_end_time= `SELECT UNIX_TIMESTAMP() + $max_run_time`;
while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
if (`SELECT '$wait_for_all' != '1'`)
{ {
# Sleep a bit to avoid too heavy load. while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
real_sleep 0.2; {
let $rowno= 1; # Sleep a bit to avoid too heavy load.
let $process_result= 1; real_sleep 0.2;
while (`SELECT $process_result = 1 AND $found = 0`) let $rowno= 1;
{ let $process_result= 1;
let $field_value= query_get_value($show_statement, $field, $rowno); while (`SELECT $process_result = 1 AND $found = 0`)
if (`SELECT '$field_value' $condition`) {
{ let $field_value= query_get_value($show_statement, $field, $rowno);
let $found= 1; if (`SELECT '$field_value' $condition`)
} {
if (`SELECT '$field_value' = 'No such row'`) let $found= 1;
{ }
# We are behind the last row of the result set. if (`SELECT '$field_value' = 'No such row'`)
let $process_result= 0; {
} # We are behind the last row of the result set.
inc $rowno; let $process_result= 0;
} }
inc $rowno;
}
}
} }
if (`SELECT '$wait_for_all' = '1'`)
{
while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
{
# Sleep a bit to avoid too heavy load.
real_sleep 0.2;
let $rowno= 1;
let $process_result= 1;
while (`SELECT $process_result = 1 AND $found = 0`)
{
let $field_value= query_get_value($show_statement, $field, $rowno);
if (`SELECT '$field_value' = 'No such row'`)
{
let $found= 1;
}
if (`SELECT $found = 0 AND NOT '$field_value' $condition`)
{
let process_result= 0;
}
inc $rowno;
}
}
}
if (!$found) if (!$found)
{ {
echo # Timeout in include/wait_show_condition.inc for $wait_condition; echo # Timeout in include/wait_show_condition.inc for $wait_condition;
......
...@@ -4024,15 +4024,26 @@ sub mysqld_arguments ($$$$) { ...@@ -4024,15 +4024,26 @@ sub mysqld_arguments ($$$$) {
} }
else else
{ {
if ($mysql_version_id < 50200) # NOTE: the backport (see BUG#48048) originally removed the
{ # commented out lines below. However, given that they are
mtr_add_arg($args, "%s--master-user=root", $prefix); # protected with a version check (< 50200) now, it should be
mtr_add_arg($args, "%s--master-connect-retry=1", $prefix); # safe to keep them. The problem is that the backported patch
mtr_add_arg($args, "%s--master-host=127.0.0.1", $prefix); # was into a 5.1 GA codebase - mysql-5.1-rep+2 tree - so
mtr_add_arg($args, "%s--master-password=", $prefix); # version is 501XX, consequently check becomes worthless. It
mtr_add_arg($args, "%s--master-port=%d", $prefix, # should be safe to uncomment them when merging up to 5.5.
$master->[0]->{'port'}); # First master #
} # RQG semisync test runs on the 5.1 GA tree and needs MTR v1.
# This was causing the test to fail (slave would not start
# due to unrecognized option(s)).
# if ($mysql_version_id < 50200)
# {
# mtr_add_arg($args, "%s--master-user=root", $prefix);
# mtr_add_arg($args, "%s--master-connect-retry=1", $prefix);
# mtr_add_arg($args, "%s--master-host=127.0.0.1", $prefix);
# mtr_add_arg($args, "%s--master-password=", $prefix);
# mtr_add_arg($args, "%s--master-port=%d", $prefix,
# $master->[0]->{'port'}); # First master
# }
my $slave_server_id= 2 + $idx; my $slave_server_id= 2 + $idx;
my $slave_rpl_rank= $slave_server_id; my $slave_rpl_rank= $slave_server_id;
mtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id); mtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
......
...@@ -68,7 +68,7 @@ use My::File::Path; # Patched version of File::Path ...@@ -68,7 +68,7 @@ use My::File::Path; # Patched version of File::Path
use File::Basename; use File::Basename;
use File::Copy; use File::Copy;
use File::Find; use File::Find;
use File::Temp qw / tempdir /; use File::Temp qw /tempdir/;
use File::Spec::Functions qw / splitdir /; use File::Spec::Functions qw / splitdir /;
use My::Platform; use My::Platform;
use My::SafeProcess; use My::SafeProcess;
......
set global log_bin_trust_routine_creators=1;
ERROR HY000: Unknown system variable 'log_bin_trust_routine_creators'
set table_type='MyISAM';
ERROR HY000: Unknown system variable 'table_type'
select @@table_type='MyISAM';
ERROR HY000: Unknown system variable 'table_type'
backup table t1 to 'data.txt';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'backup table t1 to 'data.txt'' at line 1
restore table t1 from 'data.txt';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'restore table t1 from 'data.txt'' at line 1
show plugin;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'plugin' at line 1
load table t1 from master;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table t1 from master' at line 1
load data from master;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from master' at line 1
SHOW INNODB STATUS;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNODB STATUS' at line 1
create table t1 (t6 timestamp(6));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6))' at line 1
create table t1 (t6 timestamp) type=myisam;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=myisam' at line 1
show table types;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'types' at line 1
show mutex status;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mutex status' at line 1
...@@ -4,11 +4,9 @@ show variables like 'log_bin%'; ...@@ -4,11 +4,9 @@ show variables like 'log_bin%';
Variable_name Value Variable_name Value
log_bin OFF log_bin OFF
log_bin_trust_function_creators ON log_bin_trust_function_creators ON
log_bin_trust_routine_creators ON
flush logs; flush logs;
show variables like 'log_bin%'; show variables like 'log_bin%';
Variable_name Value Variable_name Value
log_bin OFF log_bin OFF
log_bin_trust_function_creators ON log_bin_trust_function_creators ON
log_bin_trust_routine_creators ON
set global expire_logs_days = 0; set global expire_logs_days = 0;
...@@ -412,8 +412,6 @@ prepare stmt1 from ' optimize table t1 ' ; ...@@ -412,8 +412,6 @@ prepare stmt1 from ' optimize table t1 ' ;
prepare stmt1 from ' analyze table t1 ' ; prepare stmt1 from ' analyze table t1 ' ;
prepare stmt1 from ' checksum table t1 ' ; prepare stmt1 from ' checksum table t1 ' ;
prepare stmt1 from ' repair table t1 ' ; prepare stmt1 from ' repair table t1 ' ;
prepare stmt1 from ' restore table t1 from ''<MYSQLTEST_VARDIR>/tmp/data.txt'' ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' handler t1 open '; prepare stmt1 from ' handler t1 open ';
ERROR HY000: This command is not supported in the prepared statement protocol yet ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt3 from ' commit ' ; prepare stmt3 from ' commit ' ;
......
...@@ -808,7 +808,6 @@ show plugins; ...@@ -808,7 +808,6 @@ show plugins;
show columns in t1; show columns in t1;
show slave hosts; show slave hosts;
show keys in t1; show keys in t1;
show table types;
show storage engines; show storage engines;
show authors; show authors;
show contributors; show contributors;
...@@ -1291,11 +1290,6 @@ delete from mysql.db where user='mysqltest_4'; ...@@ -1291,11 +1290,6 @@ delete from mysql.db where user='mysqltest_4';
delete from mysql.tables_priv where user='mysqltest_4'; delete from mysql.tables_priv where user='mysqltest_4';
flush privileges; flush privileges;
drop database mysqltest; drop database mysqltest;
show full plugin;
show warnings;
Level Code Message
Warning 1287 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 6.0. Please use 'SHOW PLUGINS' instead
show plugin;
show plugins; show plugins;
create database `mysqlttest\1`; create database `mysqlttest\1`;
create table `mysqlttest\1`.`a\b` (a int); create table `mysqlttest\1`.`a\b` (a int);
...@@ -1447,7 +1441,6 @@ DROP PROCEDURE p1; ...@@ -1447,7 +1441,6 @@ DROP PROCEDURE p1;
DROP FUNCTION f1; DROP FUNCTION f1;
DROP TABLE t1; DROP TABLE t1;
DROP EVENT ev1; DROP EVENT ev1;
SHOW TABLE TYPES;
CREATE USER test_u@localhost; CREATE USER test_u@localhost;
GRANT PROCESS ON *.* TO test_u@localhost; GRANT PROCESS ON *.* TO test_u@localhost;
SHOW ENGINE MYISAM MUTEX; SHOW ENGINE MYISAM MUTEX;
......
...@@ -20,16 +20,16 @@ return 0; ...@@ -20,16 +20,16 @@ return 0;
end $$ end $$
show procedure code signal_proc; show procedure code signal_proc;
Pos Instruction Pos Instruction
0 stmt 135 "SIGNAL foo" 0 stmt 131 "SIGNAL foo"
1 stmt 135 "SIGNAL foo SET MESSAGE_TEXT = "This i..." 1 stmt 131 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 136 "RESIGNAL foo" 2 stmt 132 "RESIGNAL foo"
3 stmt 136 "RESIGNAL foo SET MESSAGE_TEXT = "This..." 3 stmt 132 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
drop procedure signal_proc; drop procedure signal_proc;
show function code signal_func; show function code signal_func;
Pos Instruction Pos Instruction
0 stmt 135 "SIGNAL foo" 0 stmt 131 "SIGNAL foo"
1 stmt 135 "SIGNAL foo SET MESSAGE_TEXT = "This i..." 1 stmt 131 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 136 "RESIGNAL foo" 2 stmt 132 "RESIGNAL foo"
3 stmt 136 "RESIGNAL foo SET MESSAGE_TEXT = "This..." 3 stmt 132 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
4 freturn 3 0 4 freturn 3 0
drop function signal_func; drop function signal_func;
...@@ -155,11 +155,11 @@ Pos Instruction ...@@ -155,11 +155,11 @@ Pos Instruction
0 stmt 9 "drop temporary table if exists sudoku..." 0 stmt 9 "drop temporary table if exists sudoku..."
1 stmt 1 "create temporary table sudoku_work ( ..." 1 stmt 1 "create temporary table sudoku_work ( ..."
2 stmt 1 "create temporary table sudoku_schedul..." 2 stmt 1 "create temporary table sudoku_schedul..."
3 stmt 93 "call sudoku_init()" 3 stmt 89 "call sudoku_init()"
4 jump_if_not 7(8) p_naive@0 4 jump_if_not 7(8) p_naive@0
5 stmt 4 "update sudoku_work set cnt = 0 where ..." 5 stmt 4 "update sudoku_work set cnt = 0 where ..."
6 jump 8 6 jump 8
7 stmt 93 "call sudoku_count()" 7 stmt 89 "call sudoku_count()"
8 stmt 6 "insert into sudoku_schedule (row,col)..." 8 stmt 6 "insert into sudoku_schedule (row,col)..."
9 set v_scounter@2 0 9 set v_scounter@2 0
10 set v_i@3 1 10 set v_i@3 1
......
...@@ -921,10 +921,6 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; EN ...@@ -921,10 +921,6 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; EN
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END | CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |
ERROR 0A000: LOAD TABLE is not allowed in stored procedures
CREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |
ERROR 0A000: LOAD TABLE is not allowed in stored procedures
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END | CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END | CREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END |
...@@ -1115,18 +1111,6 @@ REPAIR TABLE t1; ...@@ -1115,18 +1111,6 @@ REPAIR TABLE t1;
RETURN 1; RETURN 1;
END| END|
ERROR 0A000: Not allowed to return a result set from a function ERROR 0A000: Not allowed to return a result set from a function
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
BACKUP TABLE t1 TO '/tmp';
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
RESTORE TABLE t1 FROM '/tmp';
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
create table t1 (a int)| create table t1 (a int)|
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1| CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
CREATE FUNCTION bug13012_2() RETURNS INT CREATE FUNCTION bug13012_2() RETURNS INT
...@@ -1639,11 +1623,9 @@ DROP TABLE t1| ...@@ -1639,11 +1623,9 @@ DROP TABLE t1|
drop procedure if exists p1; drop procedure if exists p1;
create procedure p1() create procedure p1()
begin begin
create table t1 (a int) type=MyISAM; create table t1 (a int) engine=MyISAM;
drop table t1; drop table t1;
end| end|
Warnings:
Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed in MySQL 6.0. Please use 'ENGINE=storage_engine' instead
call p1(); call p1();
call p1(); call p1();
drop procedure p1; drop procedure p1;
......
...@@ -4305,19 +4305,10 @@ drop procedure if exists bug13012| ...@@ -4305,19 +4305,10 @@ drop procedure if exists bug13012|
create procedure bug13012() create procedure bug13012()
BEGIN BEGIN
REPAIR TABLE t1; REPAIR TABLE t1;
BACKUP TABLE t1 to '<MYSQLTEST_VARDIR>/tmp/';
DROP TABLE t1;
RESTORE TABLE t1 FROM '<MYSQLTEST_VARDIR>/tmp/';
END| END|
call bug13012()| call bug13012()|
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 repair status OK test.t1 repair status OK
Table Op Msg_type Msg_text
test.t1 backup Warning The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 6.0. Please use MySQL Administrator (mysqldump, mysql) instead
test.t1 backup status OK
Table Op Msg_type Msg_text
test.t1 restore Warning The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 6.0. Please use MySQL Administrator (mysqldump, mysql) instead
test.t1 restore status OK
drop procedure bug13012| drop procedure bug13012|
create view v1 as select * from t1| create view v1 as select * from t1|
create procedure bug13012() create procedure bug13012()
......
...@@ -533,9 +533,7 @@ set @@session.max_heap_table_size=default| ...@@ -533,9 +533,7 @@ set @@session.max_heap_table_size=default|
CREATE DATABASE db_bug7787| CREATE DATABASE db_bug7787|
use db_bug7787| use db_bug7787|
CREATE PROCEDURE p1() CREATE PROCEDURE p1()
SHOW INNODB STATUS; | SHOW ENGINE INNODB STATUS; |
Warnings:
Warning 1287 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 6.0. Please use 'SHOW ENGINE INNODB STATUS' instead
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost| GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
DROP DATABASE db_bug7787| DROP DATABASE db_bug7787|
drop user user_bug7787@localhost| drop user user_bug7787@localhost|
......
...@@ -889,28 +889,12 @@ CREATE TABLE b15776 (a year(0)); ...@@ -889,28 +889,12 @@ CREATE TABLE b15776 (a year(0));
DROP TABLE b15776; DROP TABLE b15776;
CREATE TABLE b15776 (a year(-2)); CREATE TABLE b15776 (a year(-2));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1
CREATE TABLE b15776 (a timestamp(4294967294));
Warnings:
Warning 1287 The syntax 'TIMESTAMP(4294967294)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
DROP TABLE b15776;
CREATE TABLE b15776 (a timestamp(4294967295));
Warnings:
Warning 1287 The syntax 'TIMESTAMP(4294967295)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
DROP TABLE b15776;
CREATE TABLE b15776 (a timestamp(4294967296));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a timestamp(-1));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1))' at line 1
CREATE TABLE b15776 (a timestamp(-2));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1
CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295) ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295) ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295) ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 select cast(null as char(4294967295)); CREATE TABLE b15776 select cast(null as char(4294967295));
show columns from b15776; show columns from b15776;
Field Type Null Key Default Extra Field Type Null Key Default Extra
......
...@@ -97,30 +97,6 @@ date date_time time_stamp ...@@ -97,30 +97,6 @@ date date_time time_stamp
2005-01-01 2005-01-01 00:00:00 2005-01-01 00:00:00 2005-01-01 2005-01-01 00:00:00 2005-01-01 00:00:00
2030-01-01 2030-01-01 00:00:00 2030-01-01 00:00:00 2030-01-01 2030-01-01 00:00:00 2030-01-01 00:00:00
drop table t1; drop table t1;
create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
t14 timestamp(14));
Warnings:
Warning 1287 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
insert t1 values (0,0,0,0,0,0,0),
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
"1997-12-31 23:47:59");
select * from t1;
t2 t4 t6 t8 t10 t12 t14
0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00
1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59
select * from t1;
t2 t4 t6 t8 t10 t12 t14
0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00
1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59
drop table t1;
create table t1 (ix timestamp); create table t1 (ix timestamp);
insert into t1 values (0),(20030101010160),(20030101016001),(20030101240101),(20030132010101),(20031301010101),(20031200000000),(20030000000000); insert into t1 values (0),(20030101010160),(20030101016001),(20030101240101),(20030132010101),(20031301010101),(20031200000000),(20030000000000);
Warnings: Warnings:
...@@ -436,7 +412,7 @@ max(t) ...@@ -436,7 +412,7 @@ max(t)
2004-02-01 00:00:00 2004-02-01 00:00:00
drop table t1; drop table t1;
set sql_mode='maxdb'; set sql_mode='maxdb';
create table t1 (a timestamp, b timestamp(19)); create table t1 (a timestamp, b timestamp);
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE "t1" ( t1 CREATE TABLE "t1" (
......
...@@ -166,9 +166,6 @@ show variables like 'max_error_count'; ...@@ -166,9 +166,6 @@ show variables like 'max_error_count';
Variable_name Value Variable_name Value
max_error_count 10 max_error_count 10
drop table t1; drop table t1;
set table_type=MYISAM;
Warnings:
Warning 1287 The syntax '@@table_type' is deprecated and will be removed in MySQL 6.0. Please use '@@storage_engine' instead
create table t1 (a int); create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc'; update t1 set a='abc';
......
call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0.");
call mtr.add_suppression("Log filename extension number exhausted:");
call mtr.add_suppression("Can't generate a unique log-filename");
RESET MASTER;
FLUSH LOGS;
Warnings:
Warning 1098 Can't generate a unique log-filename master-bin.(1-999)
...@@ -456,7 +456,11 @@ return n; ...@@ -456,7 +456,11 @@ return n;
end| end|
reset master; reset master;
insert into t2 values (bug27417(1)); insert into t2 values (bug27417(1));
Warnings:
Note 1592 Statement may not be safe to log in statement format.
insert into t2 select bug27417(2); insert into t2 select bug27417(2);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
reset master; reset master;
insert into t2 values (bug27417(2)); insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY' ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
...@@ -473,6 +477,8 @@ select count(*) from t2; ...@@ -473,6 +477,8 @@ select count(*) from t2;
count(*) count(*)
2 2
delete from t2 where a=bug27417(3); delete from t2 where a=bug27417(3);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t2 /* nothing got deleted */; select count(*) from t2 /* nothing got deleted */;
count(*) count(*)
2 2
...@@ -486,6 +492,8 @@ count(*) ...@@ -486,6 +492,8 @@ count(*)
5 5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */; delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0 affected rows: 0
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t1 /* must be 7 */; select count(*) from t1 /* must be 7 */;
count(*) count(*)
7 7
...@@ -700,7 +708,11 @@ return n; ...@@ -700,7 +708,11 @@ return n;
end| end|
reset master; reset master;
insert into t2 values (bug27417(1)); insert into t2 values (bug27417(1));
Warnings:
Note 1592 Statement may not be safe to log in statement format.
insert into t2 select bug27417(2); insert into t2 select bug27417(2);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
reset master; reset master;
insert into t2 values (bug27417(2)); insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY' ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
...@@ -716,6 +728,8 @@ select count(*) from t2; ...@@ -716,6 +728,8 @@ select count(*) from t2;
count(*) count(*)
2 2
delete from t2 where a=bug27417(3); delete from t2 where a=bug27417(3);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t2 /* nothing got deleted */; select count(*) from t2 /* nothing got deleted */;
count(*) count(*)
2 2
...@@ -728,6 +742,8 @@ count(*) ...@@ -728,6 +742,8 @@ count(*)
5 5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */; delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0 affected rows: 0
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t1 /* must be 7 */; select count(*) from t1 /* must be 7 */;
count(*) count(*)
7 7
......
RESET MASTER;
create table foo (a int); create table foo (a int);
flush logs; flush logs;
create temporary table tmp1_foo like foo; create temporary table tmp1_foo like foo;
......
...@@ -300,4 +300,59 @@ Warnings: ...@@ -300,4 +300,59 @@ Warnings:
Note 1592 Statement may not be safe to log in statement format. Note 1592 Statement may not be safe to log in statement format.
DROP TABLE t1, t2; DROP TABLE t1, t2;
SET @@SESSION.SQL_MODE = @save_sql_mode; SET @@SESSION.SQL_MODE = @save_sql_mode;
CREATE TABLE t1 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE FUNCTION func_modify_t1 ()
RETURNS INT
BEGIN
INSERT INTO t1 SET a = 1;
RETURN 0;
END|
# The following statement causes auto-incrementation
# of both t1 and t2. It is logged in statement format,
# so it should produce unsafe warning.
INSERT INTO t2 SET a = func_modify_t1();
Warnings:
Note 1592 Statement may not be safe to log in statement format.
SET SESSION binlog_format = MIXED;
# Check if the statement is logged in row format.
INSERT INTO t2 SET a = func_modify_t1();
SHOW BINLOG EVENTS FROM 12283;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 12283 Query 1 12351 BEGIN
master-bin.000001 12351 Table_map 1 12393 table_id: 44 (test.t2)
master-bin.000001 12393 Table_map 1 12435 table_id: 45 (test.t1)
master-bin.000001 12435 Write_rows 1 12473 table_id: 45
master-bin.000001 12473 Write_rows 1 12511 table_id: 44 flags: STMT_END_F
master-bin.000001 12511 Query 1 12580 COMMIT
DROP TABLE t1,t2;
DROP FUNCTION func_modify_t1;
SET SESSION binlog_format = STATEMENT;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t3 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
create trigger tri_modify_two_tables before insert on t1 for each row begin
insert into t2(a) values(new.a);
insert into t3(a) values(new.a);
end |
# The following statement causes auto-incrementation
# of both t2 and t3. It is logged in statement format,
# so it should produce unsafe warning
INSERT INTO t1 SET a = 1;
Warnings:
Note 1592 Statement may not be safe to log in statement format.
SET SESSION binlog_format = MIXED;
# Check if the statement is logged in row format.
INSERT INTO t1 SET a = 2;
SHOW BINLOG EVENTS FROM 13426;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 13426 Query 1 13494 BEGIN
master-bin.000001 13494 Table_map 1 13535 table_id: 47 (test.t1)
master-bin.000001 13535 Table_map 1 13577 table_id: 48 (test.t3)
master-bin.000001 13577 Table_map 1 13619 table_id: 49 (test.t2)
master-bin.000001 13619 Write_rows 1 13657 table_id: 49
master-bin.000001 13657 Write_rows 1 13695 table_id: 48
master-bin.000001 13695 Write_rows 1 13729 table_id: 47 flags: STMT_END_F
master-bin.000001 13729 Query 1 13798 COMMIT
DROP TABLE t1,t2,t3;
"End of tests" "End of tests"
# BUG#40611: MySQL cannot make a binary log after sequential number beyond
# unsigned long.
#
# Problem statement
# =================
#
# Extension for log file names might be created with negative
# numbers (when counter used would wrap around), causing server
# failure when incrementing -00001 (reaching number 000000
# extension).
#
# Test
# ====
# This tests aims at testing the a patch that removes negatives
# numbers from log name extensions and checks that the server
# reports gracefully that the limit has been reached.
#
# It instruments index file to point to a log file close to
# the new maximum and calls flush logs to get warning.
#
call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0.");
call mtr.add_suppression("Log filename extension number exhausted:");
call mtr.add_suppression("Can't generate a unique log-filename");
-- source include/have_log_bin.inc
RESET MASTER;
-- let $MYSQLD_DATADIR= `select @@datadir`
###############################################
# check hitting maximum file name extension:
###############################################
##########
# Prepare
##########
# 1. Stop master server
-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
-- shutdown_server 10
-- source include/wait_until_disconnected.inc
# 2. Prepare log and index file
-- copy_file $MYSQLD_DATADIR/master-bin.index $MYSQLD_DATADIR/master-bin.index.orig
-- copy_file $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.2147483646
-- append_file $MYSQLD_DATADIR/master-bin.index
master-bin.2147483646
EOF
# 3. Restart the server
-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
-- enable_reconnect
-- source include/wait_until_connected_again.inc
###########
# Assertion
###########
# assertion: should throw warning
FLUSH LOGS;
##############
# Clean up
##############
# 1. Stop the server
-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
-- shutdown_server 10
-- source include/wait_until_disconnected.inc
# 2. Undo changes to index and log files
-- remove_file $MYSQLD_DATADIR/master-bin.index
-- copy_file $MYSQLD_DATADIR/master-bin.index.orig $MYSQLD_DATADIR/master-bin.index
-- remove_file $MYSQLD_DATADIR/master-bin.index.orig
-- remove_file $MYSQLD_DATADIR/master-bin.2147483646
-- remove_file $MYSQLD_DATADIR/master-bin.2147483647
# 3. Restart the server
-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
-- enable_reconnect
-- source include/wait_until_connected_again.inc
...@@ -30,7 +30,6 @@ source include/have_binlog_format_mixed_or_statement.inc; ...@@ -30,7 +30,6 @@ source include/have_binlog_format_mixed_or_statement.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
RESET MASTER;
create table foo (a int); create table foo (a int);
......
...@@ -388,4 +388,72 @@ DELETE FROM t1 LIMIT 1; ...@@ -388,4 +388,72 @@ DELETE FROM t1 LIMIT 1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
SET @@SESSION.SQL_MODE = @save_sql_mode; SET @@SESSION.SQL_MODE = @save_sql_mode;
#
# BUG#45827
# The test verifies if stmt that have more than one
# different tables to update with autoinc columns
# will produce unsafe warning
#
# Test case1: stmt that have more than one different tables
# to update with autoinc columns should produce
# unsafe warning when calling a function
CREATE TABLE t1 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
# The purpose of this function is to insert into t1 so that the second
# column is auto_increment'ed.
DELIMITER |;
CREATE FUNCTION func_modify_t1 ()
RETURNS INT
BEGIN
INSERT INTO t1 SET a = 1;
RETURN 0;
END|
DELIMITER ;|
--echo # The following statement causes auto-incrementation
--echo # of both t1 and t2. It is logged in statement format,
--echo # so it should produce unsafe warning.
INSERT INTO t2 SET a = func_modify_t1();
SET SESSION binlog_format = MIXED;
--echo # Check if the statement is logged in row format.
let $pos0_master= query_get_value(SHOW MASTER STATUS, Position, 1);
INSERT INTO t2 SET a = func_modify_t1();
eval SHOW BINLOG EVENTS FROM $pos0_master;
# clean up
DROP TABLE t1,t2;
DROP FUNCTION func_modify_t1;
# Test case2: stmt that have more than one different tables
# to update with autoinc columns should produce
# unsafe warning when invoking a trigger
SET SESSION binlog_format = STATEMENT;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t3 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
# The purpose of this function is to insert into t1 so that the second
# column is auto_increment'ed.
delimiter |;
create trigger tri_modify_two_tables before insert on t1 for each row begin
insert into t2(a) values(new.a);
insert into t3(a) values(new.a);
end |
delimiter ;|
--echo # The following statement causes auto-incrementation
--echo # of both t2 and t3. It is logged in statement format,
--echo # so it should produce unsafe warning
INSERT INTO t1 SET a = 1;
SET SESSION binlog_format = MIXED;
--echo # Check if the statement is logged in row format.
let $pos1_master= query_get_value(SHOW MASTER STATUS, Position, 1);
INSERT INTO t1 SET a = 2;
eval SHOW BINLOG EVENTS FROM $pos1_master;
# clean up
DROP TABLE t1,t2,t3;
--echo "End of tests" --echo "End of tests"
...@@ -3,13 +3,6 @@ ...@@ -3,13 +3,6 @@
!include rpl_1slave_base.cnf !include rpl_1slave_base.cnf
!include include/default_client.cnf !include include/default_client.cnf
[mysqld.2] [mysqld.2]
# Hardcode the host to 127.0.0.1 until running on more
# than one host and it need to be masked
# master-host= @mysqld.1.#host
master-host= 127.0.0.1
master-port= @mysqld.1.port
master-password= @mysqld.1.#password
master-user= @mysqld.1.#user
master-connect-retry= 1
stop slave; stop 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;
reset master; reset master;
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;
stop slave;
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab'; grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab'; grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
start slave; start slave;
......
...@@ -4,50 +4,8 @@ File Position Binlog_Do_DB Binlog_Ignore_DB ...@@ -4,50 +4,8 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB> master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
reset slave; reset slave;
SHOW SLAVE STATUS; SHOW SLAVE STATUS;
change master to master_host='127.0.0.1';
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User test
Master_Port 3306
Connect_Retry 7
Master_Log_File
Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File
Slave_IO_Running No
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table #
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
Until_Log_Pos 0
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 0
change master to master_host='127.0.0.1',master_user='root', change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=MASTER_PORT; master_password='',master_port=MASTER_PORT, MASTER_CONNECT_RETRY=7;
SHOW SLAVE STATUS; SHOW SLAVE STATUS;
Slave_IO_State # Slave_IO_State #
Master_Host 127.0.0.1 Master_Host 127.0.0.1
......
reset master; reset master;
call mtr.add_suppression("Failed during slave I/O thread initialization");
stop slave;
reset slave; reset slave;
call mtr.add_suppression("Failed during slave I/O thread initialization");
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init"; SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
start slave; start slave;
show slave status; show slave status;
......
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
stop slave;
SET @@debug="d,simulate_find_log_pos_error";
reset slave;
ERROR HY000: Target log not found in binlog index
show warnings;
Level Code Message
Error 1373 Target log not found in binlog index
Error 1371 Failed purging old relay logs: Failed during log reset
SET @@debug="";
reset slave;
change master to master_host='dummy';
SET @@debug="d,simulate_find_log_pos_error";
change master to master_host='dummy';
ERROR HY000: Target log not found in binlog index
SET @@debug="";
reset slave;
change master to master_host='dummy';
SET @@debug="d,simulate_find_log_pos_error";
reset master;
ERROR HY000: Target log not found in binlog index
SET @@debug="";
reset master;
SET @@debug="d,simulate_find_log_pos_error";
purge binary logs to 'master-bin.000001';
ERROR HY000: Target log not found in binlog index
SET @@debug="";
purge binary logs to 'master-bin.000001';
End of the tests
...@@ -4,9 +4,10 @@ reset master; ...@@ -4,9 +4,10 @@ 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;
call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'");
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again");
call mtr.add_suppression("Get master clock failed with error: "); call mtr.add_suppression("Get master clock failed with error: ");
call mtr.add_suppression("Get master SERVER_ID failed with error: "); call mtr.add_suppression("Get master SERVER_ID failed with error: ");
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again");
call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*"); call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*");
SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP"); SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP") IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
......
reset master; reset master;
set @restore_slave_net_timeout= @@global.slave_net_timeout; set @restore_slave_net_timeout= @@global.slave_net_timeout;
set @@global.slave_net_timeout= 10; set @@global.slave_net_timeout= 10;
Warnings:
Warning 1624 The currect value for master_heartbeat_period exceeds the new value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root'; change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
show status like 'Slave_heartbeat_period';; show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period Variable_name Slave_heartbeat_period
...@@ -59,7 +57,7 @@ Slave_IO_State # ...@@ -59,7 +57,7 @@ Slave_IO_State #
Master_Host 127.0.0.1 Master_Host 127.0.0.1
Master_User root Master_User root
Master_Port MASTER_PORT Master_Port MASTER_PORT
Connect_Retry 1 Connect_Retry 60
Master_Log_File master-bin.000001 Master_Log_File master-bin.000001
Read_Master_Log_Pos 280 Read_Master_Log_Pos 280
Relay_Log_File # Relay_Log_File #
...@@ -100,7 +98,7 @@ Slave_IO_State # ...@@ -100,7 +98,7 @@ Slave_IO_State #
Master_Host 127.0.0.1 Master_Host 127.0.0.1
Master_User root Master_User root
Master_Port MASTER_PORT Master_Port MASTER_PORT
Connect_Retry 1 Connect_Retry 60
Master_Log_File master-bin.000001 Master_Log_File master-bin.000001
Read_Master_Log_Pos 280 Read_Master_Log_Pos 280
Relay_Log_File # Relay_Log_File #
......
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
create database mysqltest2;
create database mysqltest;
create database mysqltest2;
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(4);
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(5);
create table mysqltest.bar (m int)ENGINE=MyISAM;
insert into mysqltest.bar values(15);
select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
n m
4 15
drop database mysqltest;
drop database if exists mysqltest2;
drop database mysqltest;
ERROR HY000: Can't drop database 'mysqltest'; database doesn't exist
drop database mysqltest2;
set sql_log_bin = 0;
create database mysqltest2;
create database mysqltest;
show databases like 'mysql%';
Database (mysql%)
mysql
mysqltest
mysqltest2
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
(13, 'thirteen test');
set sql_log_bin = 1;
show databases like 'mysql%';
Database (mysql%)
mysql
create database mysqltest2;
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'original foo.t1');
create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t3 values (1, 'original foo.t3');
create database mysqltest3;
create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest3.t1 values (1, 'original foo2.t1');
create database mysqltest;
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'original bar.t1');
create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t3 values (1, 'original bar.t3');
load data from master;
show databases like 'mysql%';
Database (mysql%)
mysql
mysqltest
mysqltest2
mysqltest3
use mysqltest2;
show tables;
Tables_in_mysqltest2
t1
t3
select * from t1;
n s
1 original foo.t1
use mysqltest3;
show tables;
Tables_in_mysqltest3
t1
select * from t1;
n s
1 original foo2.t1
use mysqltest;
show tables;
Tables_in_mysqltest
t1
t2
t3
select * from mysqltest.t1;
n s
1 one test
2 two test
3 three test
select * from mysqltest.t2;
n s
11 eleven test
12 twelve test
13 thirteen test
select * from mysqltest.t3;
n s
1 original bar.t3
insert into mysqltest.t1 values (4, 'four test');
select * from mysqltest.t1;
n s
1 one test
2 two test
3 three test
4 four test
stop slave;
reset slave;
load data from master;
start slave;
insert into mysqltest.t1 values (5, 'five bar');
select * from mysqltest.t1;
n s
1 one test
2 two test
3 three test
4 four test
5 five bar
load table mysqltest.t1 from master;
ERROR 42S01: Table 't1' already exists
drop table mysqltest.t1;
load table mysqltest.t1 from master;
load table bar.t1 from master;
ERROR HY000: Error from master: 'Table 'bar.t1' doesn't exist'
drop database mysqltest;
drop database mysqltest2;
drop database mysqltest2;
drop database mysqltest3;
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
"******************** Test Requirment 1 *************"
SET SQL_LOG_BIN=0,timestamp=200006;
CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
INSERT INTO t1 ( a) VALUE ('F');
select unix_timestamp(t) from t1;
unix_timestamp(t)
200006
load table t1 from master;
select unix_timestamp(t) from t1;
unix_timestamp(t)
200006
set SQL_LOG_BIN=1,timestamp=default;
drop table t1;
set SQL_LOG_BIN=0;
"******************** Test Requirment 2 *************"
CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
INSERT INTO t1 VALUES (1);
load table t1 from master;
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
drop table t1;
set SQL_LOG_BIN=0;
create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t1;
create table t2 (word char(20) not null)ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t2;
create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
load table t1 from master;
load table t2 from master;
load table t3 from master;
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
select count(*) from t2;
count(*)
70
select count(*) from t3;
count(*)
0
set SQL_LOG_BIN=1;
drop table if exists t1,t2,t3;
create table t1(n int);
drop table t1;
...@@ -13,8 +13,8 @@ n ...@@ -13,8 +13,8 @@ n
2001 2001
2002 2002
show slave hosts; show slave hosts;
Server_id Host Port Rpl_recovery_rank Master_id Server_id Host Port Master_id
2 127.0.0.1 9999 0 1 2 127.0.0.1 9999 1
drop table t1; drop table t1;
stop slave; stop slave;
create table t2(id int auto_increment primary key, created datetime); create table t2(id int auto_increment primary key, created datetime);
......
...@@ -92,7 +92,7 @@ reset slave; ...@@ -92,7 +92,7 @@ reset slave;
SHOW SLAVE STATUS; SHOW SLAVE STATUS;
Slave_IO_State # Slave_IO_State #
Master_Host 127.0.0.1 Master_Host 127.0.0.1
Master_User root Master_User test
Master_Port MASTER_PORT Master_Port MASTER_PORT
Connect_Retry 1 Connect_Retry 1
Master_Log_File Master_Log_File
...@@ -130,6 +130,7 @@ Last_SQL_Errno 0 ...@@ -130,6 +130,7 @@ Last_SQL_Errno 0
Last_SQL_Error Last_SQL_Error
Replicate_Ignore_Server_Ids Replicate_Ignore_Server_Ids
Master_Server_Id 1 Master_Server_Id 1
change master to master_user='root';
start slave; start slave;
SHOW SLAVE STATUS; SHOW SLAVE STATUS;
Slave_IO_State # Slave_IO_State #
......
...@@ -4,8 +4,14 @@ reset master; ...@@ -4,8 +4,14 @@ 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;
SHOW SLAVE STATUS; RESET SLAVE;
load table t1 from master; CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_PORT,master_user='root';
ERROR 08S01: Error connecting to master: Master is not configured START SLAVE IO_THREAD;
load table t1 from master; SHOW SLAVE HOSTS;
ERROR HY000: Error from master: 'Table 'test.t1' doesn't exist' Server_id Host Port Master_id
3 slave2 DEFAULT_PORT 1
2 SLAVE_PORT 1
STOP SLAVE IO_THREAD;
SHOW SLAVE HOSTS;
Server_id Host Port Master_id
2 SLAVE_PORT 1
...@@ -191,14 +191,9 @@ begin ...@@ -191,14 +191,9 @@ begin
return unix_timestamp(); return unix_timestamp();
end| end|
ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators; set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
set global log_bin_trust_routine_creators=1;
Warnings:
Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
set global log_bin_trust_function_creators=0; set global log_bin_trust_function_creators=0;
set global log_bin_trust_function_creators=1; set global log_bin_trust_function_creators=1;
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators; set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
set global log_bin_trust_function_creators=1; set global log_bin_trust_function_creators=1;
create function fn2() create function fn2()
...@@ -557,13 +552,7 @@ insert into t values (1); ...@@ -557,13 +552,7 @@ insert into t values (1);
return 0; return 0;
end end
master-bin.000001 # Query # # use `mysqltest`; SELECT `mysqltest2`.`f1`() master-bin.000001 # Query # # use `mysqltest`; SELECT `mysqltest2`.`f1`()
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators; set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators; set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
drop database mysqltest; drop database mysqltest;
drop database mysqltest2; drop database mysqltest2;
......
...@@ -92,7 +92,7 @@ reset slave; ...@@ -92,7 +92,7 @@ reset slave;
SHOW SLAVE STATUS; SHOW SLAVE STATUS;
Slave_IO_State # Slave_IO_State #
Master_Host 127.0.0.1 Master_Host 127.0.0.1
Master_User root Master_User test
Master_Port MASTER_PORT Master_Port MASTER_PORT
Connect_Retry 1 Connect_Retry 1
Master_Log_File Master_Log_File
...@@ -130,6 +130,7 @@ Last_SQL_Errno 0 ...@@ -130,6 +130,7 @@ Last_SQL_Errno 0
Last_SQL_Error Last_SQL_Error
Replicate_Ignore_Server_Ids Replicate_Ignore_Server_Ids
Master_Server_Id 1 Master_Server_Id 1
change master to master_user='root';
start slave; start slave;
SHOW SLAVE STATUS; SHOW SLAVE STATUS;
Slave_IO_State # Slave_IO_State #
......
...@@ -10,6 +10,5 @@ ...@@ -10,6 +10,5 @@
# #
############################################################################## ##############################################################################
rpl_get_master_version_and_clock: # Bug#46931 2009-10-17 joro rpl.rpl_get_master_version_and_clock fails
rpl_cross_version : BUG#43913 2009-10-22 luis rpl_cross_version fails with symptom in described in bug report rpl_cross_version : BUG#43913 2009-10-22 luis rpl_cross_version fails with symptom in described in bug report
rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
...@@ -6,14 +6,10 @@ source include/master-slave.inc; ...@@ -6,14 +6,10 @@ source include/master-slave.inc;
create table t1 (n int not null auto_increment primary key); create table t1 (n int not null auto_increment primary key);
insert into t1 values(NULL); insert into t1 values(NULL);
insert into t1 values(2); insert into t1 values(2);
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select n from t1; select n from t1;
connection master; connection master;
drop table t1; drop table t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
...@@ -4,7 +4,9 @@ create table t1 (n int); ...@@ -4,7 +4,9 @@ create table t1 (n int);
insert into t1 values(1); insert into t1 values(1);
sync_slave_with_master; sync_slave_with_master;
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
start slave; start slave;
--source include/wait_for_slave_to_start.inc
connection master; connection master;
insert into t1 values(2); insert into t1 values(2);
#let slave catch up #let slave catch up
......
...@@ -9,9 +9,7 @@ ...@@ -9,9 +9,7 @@
--source include/have_binlog_format_mixed_or_statement.inc --source include/have_binlog_format_mixed_or_statement.inc
source include/master-slave.inc; source include/master-slave.inc;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
connection master; connection master;
create table t2(n int); create table t2(n int);
...@@ -46,8 +44,6 @@ connection master2; ...@@ -46,8 +44,6 @@ connection master2;
# exist in this connection. # exist in this connection.
drop table if exists t1,t2; drop table if exists t1,t2;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
File mode changed from 100755 to 100644
# The test manually replaces the relay-log.info file with connection
# information which the slave then should pick up. However, to avoid
# overwriting the file, no CHANGE MASTER TO nor RESET SLAVE statements
# should be executed.
#
# Starting replication before granting a replication user privileges
# to replicate will cause the start slave to fail, so we shouldn't do
# that.
let $no_change_master = 1;
let $skip_slave_start = 1;
source include/master-slave.inc; source include/master-slave.inc;
connection slave;
stop slave;
connection master; connection master;
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab'; grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab'; grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
connection slave; connection slave;
start slave; start slave;
source include/wait_for_slave_to_start.inc; source include/wait_for_slave_to_start.inc;
connection master; connection master;
--disable_warnings --disable_warnings
drop table if exists t1; drop table if exists t1;
......
--server-id=22 --master-connect-retry=7 --server-id=22
...@@ -15,14 +15,12 @@ connection slave; ...@@ -15,14 +15,12 @@ connection slave;
reset slave; reset slave;
source include/show_slave_status2.inc; source include/show_slave_status2.inc;
change master to master_host='127.0.0.1';
# The following needs to be cleaned up when change master is fixed
source include/show_slave_status2.inc;
--replace_result $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_user='root', eval change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=$MASTER_MYPORT; master_password='',master_port=$MASTER_MYPORT, MASTER_CONNECT_RETRY=7;
source include/show_slave_status2.inc; source include/show_slave_status2.inc;
start slave; start slave;
--source include/wait_for_slave_to_start.inc
sync_with_master; sync_with_master;
source include/show_slave_status2.inc; source include/show_slave_status2.inc;
connection master; connection master;
......
...@@ -10,15 +10,11 @@ insert into mysqltest.t1 values (1,2); ...@@ -10,15 +10,11 @@ insert into mysqltest.t1 values (1,2);
create table mysqltest.t2 (n int); create table mysqltest.t2 (n int);
insert into mysqltest.t2 values (45); insert into mysqltest.t2 values (45);
rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2; rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select * from mysqltest.t2; select * from mysqltest.t2;
select * from mysqltest.t3; select * from mysqltest.t3;
connection master; connection master;
drop database mysqltest; drop database mysqltest;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
...@@ -51,9 +51,7 @@ CALL simpleproc3(); ...@@ -51,9 +51,7 @@ CALL simpleproc3();
select * from t1; select * from t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
use test1; use test1;
select * from t1; select * from t1;
......
...@@ -78,10 +78,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1; ...@@ -78,10 +78,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
SELECT hex(bit1) FROM test.t1 ORDER BY bit1; SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2; SELECT hex(bit2) from test.t1 ORDER BY bit2;
SELECT hex(bit3) from test.t1 ORDER BY bit3; SELECT hex(bit3) from test.t1 ORDER BY bit3;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1; SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
SELECT hex(bit1) FROM test.t1 ORDER BY bit1; SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2; SELECT hex(bit2) from test.t1 ORDER BY bit2;
......
...@@ -76,10 +76,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 ...@@ -76,10 +76,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
SELECT hex(bit1) from test.t1 ORDER BY bit1; SELECT hex(bit1) from test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2; SELECT hex(bit2) from test.t1 ORDER BY bit2;
SELECT hex(bit3) from test.t1 ORDER BY bit3; SELECT hex(bit3) from test.t1 ORDER BY bit3;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
FROM test.t1 FROM test.t1
ORDER BY oSupp, sSuppD, GSuppDf, VNotSupp, x034; ORDER BY oSupp, sSuppD, GSuppDf, VNotSupp, x034;
...@@ -100,10 +98,8 @@ UPDATE test.t3 SET a = 2 WHERE b = 0; ...@@ -100,10 +98,8 @@ UPDATE test.t3 SET a = 2 WHERE b = 0;
SELECT a, hex(b) FROM test.t2 ORDER BY a,b; SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
SELECT * FROM test.t3 ORDER BY a,b; SELECT * FROM test.t3 ORDER BY a,b;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
SELECT a, hex(b) FROM test.t2 ORDER BY a,b; SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
SELECT * FROM test.t3 ORDER BY a,b; SELECT * FROM test.t3 ORDER BY a,b;
......
...@@ -8,23 +8,25 @@ source include/have_log_bin.inc; ...@@ -8,23 +8,25 @@ source include/have_log_bin.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,); connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
connection master; connection master;
reset master; reset master;
connection slave; connection slave;
reset slave;
# Add suppression for expected warnings in slaves error log # Add suppression for expected warnings in slaves error log
call mtr.add_suppression("Failed during slave I/O thread initialization"); call mtr.add_suppression("Failed during slave I/O thread initialization");
--disable_warnings
stop slave;
--enable_warnings
reset slave;
# Set debug flags on slave to force errors to occur # Set debug flags on slave to force errors to occur
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init"; SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
--disable_query_log
eval CHANGE MASTER TO MASTER_USER='root',
MASTER_CONNECT_RETRY=1,
MASTER_HOST='127.0.0.1',
MASTER_PORT=$MASTER_MYPORT;
--enable_query_log
start slave; start slave;
connection master; connection master;
......
--loose-debug=-d,simulate_find_log_pos_error
# Test for Bug #41902 MYSQL_BIN_LOG::reset_logs() doesn't call my_error()
# in face of an error
#
source include/have_debug.inc;
source include/master-slave.inc;
#
# test checks that
# a. there is no crash when find_log_pos() returns with an error
# that tests expect to receive;
# b. in the case of multiple error messages the first error message is
# reported to the user and others are available as warnings.
#
connection slave;
stop slave;
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
reset slave;
show warnings;
SET @@debug="";
reset slave;
change master to master_host='dummy';
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
change master to master_host='dummy';
SET @@debug="";
reset slave;
change master to master_host='dummy';
connection master;
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
reset master;
SET @@debug="";
reset master;
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
purge binary logs to 'master-bin.000001';
SET @@debug="";
purge binary logs to 'master-bin.000001';
--disable_query_log
call mtr.add_suppression("Failed to locate old binlog or relay log files");
call mtr.add_suppression("MYSQL_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
connection slave;
call mtr.add_suppression("Failed to locate old binlog or relay log files");
call mtr.add_suppression("MYSQL_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
--enable_query_log
--echo End of the tests
...@@ -28,9 +28,7 @@ sync_with_master; ...@@ -28,9 +28,7 @@ sync_with_master;
select * from t1; select * from t1;
connection master; connection master;
drop table t1; drop table t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
......
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
############################################################# #############################################################
--source include/have_innodb.inc --source include/have_innodb.inc
# Use wait_for_slave_to_(start|stop) for current connections
let $keep_connection= 1;
# Set up circular ring and new names for servers # Set up circular ring and new names for servers
--echo *** Set up circular ring by schema A->B->C->D->A *** --echo *** Set up circular ring by schema A->B->C->D->A ***
--source include/circular_rpl_for_4_hosts_init.inc --source include/circular_rpl_for_4_hosts_init.inc
......
...@@ -16,6 +16,7 @@ DROP TABLE IF EXISTS t1; ...@@ -16,6 +16,7 @@ DROP TABLE IF EXISTS t1;
--echo *** Create "wider" table on slave *** --echo *** Create "wider" table on slave ***
sync_slave_with_master; sync_slave_with_master;
STOP SLAVE; STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
RESET SLAVE; RESET SLAVE;
eval CREATE TABLE t1 ( eval CREATE TABLE t1 (
...@@ -69,6 +70,7 @@ RESET MASTER; ...@@ -69,6 +70,7 @@ RESET MASTER;
--echo *** Start replication *** --echo *** Start replication ***
connection slave; connection slave;
START SLAVE; START SLAVE;
--source include/wait_for_slave_to_start.inc
--echo *** Insert data on master and display it. *** --echo *** Insert data on master and display it. ***
connection master; connection master;
......
...@@ -8,9 +8,7 @@ connection master; ...@@ -8,9 +8,7 @@ connection master;
delete from mysql.user where user=_binary'rpl_do_grant'; delete from mysql.user where user=_binary'rpl_do_grant';
delete from mysql.db where user=_binary'rpl_do_grant'; delete from mysql.db where user=_binary'rpl_do_grant';
flush privileges; flush privileges;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# if these DELETE did nothing on the master, we need to do them manually on the # if these DELETE did nothing on the master, we need to do them manually on the
# slave. # slave.
delete from mysql.user where user=_binary'rpl_ignore_grant'; delete from mysql.user where user=_binary'rpl_ignore_grant';
...@@ -21,17 +19,13 @@ flush privileges; ...@@ -21,17 +19,13 @@ flush privileges;
connection master; connection master;
grant select on *.* to rpl_do_grant@localhost; grant select on *.* to rpl_do_grant@localhost;
grant drop on test.* to rpl_do_grant@localhost; grant drop on test.* to rpl_do_grant@localhost;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
show grants for rpl_do_grant@localhost; show grants for rpl_do_grant@localhost;
# test replication of SET PASSWORD # test replication of SET PASSWORD
connection master; connection master;
set password for rpl_do_grant@localhost=password("does it work?"); set password for rpl_do_grant@localhost=password("does it work?");
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select password<>_binary'' from mysql.user where user=_binary'rpl_do_grant'; select password<>_binary'' from mysql.user where user=_binary'rpl_do_grant';
# #
...@@ -44,9 +38,7 @@ select password<>'' from mysql.user where user='rpl_do_grant'; ...@@ -44,9 +38,7 @@ select password<>'' from mysql.user where user='rpl_do_grant';
set sql_mode='ANSI_QUOTES'; set sql_mode='ANSI_QUOTES';
set password for rpl_do_grant@localhost=password('does it work?'); set password for rpl_do_grant@localhost=password('does it work?');
set sql_mode=''; set sql_mode='';
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select password<>'' from mysql.user where user='rpl_do_grant'; select password<>'' from mysql.user where user='rpl_do_grant';
......
...@@ -7,10 +7,6 @@ drop table if exists t1, t2; ...@@ -7,10 +7,6 @@ drop table if exists t1, t2;
create table t1 (a int); create table t1 (a int);
--error 1051 --error 1051
drop table t1, t2; drop table t1, t2;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
...@@ -20,9 +20,7 @@ drop view v1, not_exist_view; ...@@ -20,9 +20,7 @@ drop view v1, not_exist_view;
--error 1146 --error 1146
select * from v1; select * from v1;
drop view v2, v3; drop view v2, v3;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
--error 1146 --error 1146
select * from v1; select * from v1;
--error 1146 --error 1146
......
...@@ -22,6 +22,7 @@ connection master; ...@@ -22,6 +22,7 @@ connection master;
eval change master to master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root"; eval change master to master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root";
start slave; start slave;
--source include/wait_for_slave_to_start.inc
# now we test it # now we test it
...@@ -38,12 +39,11 @@ sync_with_master; ...@@ -38,12 +39,11 @@ sync_with_master;
# log-slave-updates and circul repl # log-slave-updates and circul repl
# #
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
create table t2 (n int); # create one ignored event create table t2 (n int); # create one ignored event
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
connection slave; connection slave;
...@@ -85,6 +85,7 @@ start slave until master_log_file="slave-bin.000001",master_log_pos=663; ...@@ -85,6 +85,7 @@ start slave until master_log_file="slave-bin.000001",master_log_pos=663;
select * from t3; select * from t3;
start slave; start slave;
--source include/wait_for_slave_to_start.inc
# BUG#13023 is that Exec_master_log_pos may stay too low "forever": # BUG#13023 is that Exec_master_log_pos may stay too low "forever":
...@@ -94,9 +95,7 @@ create table t4 (n int); # create 3 ignored events ...@@ -94,9 +95,7 @@ create table t4 (n int); # create 3 ignored events
create table t5 (n int); create table t5 (n int);
create table t6 (n int); create table t6 (n int);
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
connection slave; connection slave;
...@@ -114,11 +113,10 @@ show tables; ...@@ -114,11 +113,10 @@ show tables;
# cleanup # cleanup
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
reset slave; reset slave;
drop table t1,t2,t3,t4,t5,t6; drop table t1,t2,t3,t4,t5,t6;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
source include/master-slave.inc;
source include/show_slave_status.inc;
#
# Load table should not succeed on the master as this is not a slave
#
--error 1218
load table t1 from master;
connection slave;
--error 1188
load table t1 from master;
# End of 4.1 tests
...@@ -14,19 +14,15 @@ create table t4 (a int primary key); ...@@ -14,19 +14,15 @@ create table t4 (a int primary key);
--error 1022, ER_DUP_ENTRY --error 1022, ER_DUP_ENTRY
insert into t1 values (1),(1); insert into t1 values (1),(1);
insert into t4 values (1),(2); insert into t4 values (1),(2);
save_master_pos;
connection slave;
# as the t1 table is ignored on the slave, the slave should be able to sync # as the t1 table is ignored on the slave, the slave should be able to sync
sync_with_master; sync_slave_with_master;
# check that the table has been ignored, because otherwise the test is nonsense # check that the table has been ignored, because otherwise the test is nonsense
show tables like 't1'; show tables like 't1';
show tables like 't4'; show tables like 't4';
SELECT * FROM test.t4 ORDER BY a; SELECT * FROM test.t4 ORDER BY a;
connection master; connection master;
drop table t1; drop table t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# Now test that even critical errors (connection killed) # Now test that even critical errors (connection killed)
# are ignored if rules allow it. # are ignored if rules allow it.
...@@ -53,15 +49,11 @@ connection master; ...@@ -53,15 +49,11 @@ connection master;
--error 0,1317,2013 --error 0,1317,2013
reap; reap;
connection master1; connection master1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
SELECT * FROM test.t4 ORDER BY a; SELECT * FROM test.t4 ORDER BY a;
connection master1; connection master1;
DROP TABLE test.t4; DROP TABLE test.t4;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
# Adding comment for force manual merge 5.0 -> wl1012. delete me if needed # Adding comment for force manual merge 5.0 -> wl1012. delete me if needed
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
# Testing if "flush logs" command bouncing resulting in logs created in a loop # Testing if "flush logs" command bouncing resulting in logs created in a loop
# in case of bi-directional replication # in case of bi-directional replication
-- source include/master-slave.inc -- source include/master-slave.inc
# Use wait_for_slave_to_(start|stop) for current connections
let $keep_connection= 1;
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR/ --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR/
...@@ -9,18 +11,20 @@ show variables like 'relay_log%'; ...@@ -9,18 +11,20 @@ show variables like 'relay_log%';
connection slave; connection slave;
--disable_warnings --disable_warnings
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings --enable_warnings
--replace_result $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_user='root', eval change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=$MASTER_MYPORT; master_password='',master_port=$MASTER_MYPORT;
start slave; start slave;
--source include/wait_for_slave_to_start.inc
# #
# Start replication slave -> master # Start replication slave -> master
# #
connection master; connection master;
--disable_warnings --disable_warnings
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings --enable_warnings
--replace_result $SLAVE_MYPORT SLAVE_PORT --replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_host='127.0.0.1',master_user='root', eval change master to master_host='127.0.0.1',master_user='root',
......
...@@ -34,12 +34,14 @@ SELECT * FROM t1; ...@@ -34,12 +34,14 @@ SELECT * FROM t1;
# restart replication for the next testcase # restart replication for the next testcase
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
reset slave; reset slave;
connection master; connection master;
reset master; reset master;
drop table t1; drop table t1;
connection slave; connection slave;
start slave; start slave;
--source include/wait_for_slave_to_start.inc
# testcase with INSERT SELECT # testcase with INSERT SELECT
connection master; connection master;
......
# This one assumes we are ignoring updates on tables in database mysqltest2,
# but doing the ones in database mysqltest
#################################################################
# Change Author: JBM
# Change Date: 2006-02-02
# Change: Added ENGINE=MyISAM
# Reason: LOAD from master is only supported by MyISAM
#################################################################
source include/master-slave.inc;
--disable_warnings
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
connection slave;
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
connection master;
create database mysqltest2;
create database mysqltest;
--enable_warnings
save_master_pos;
connection slave;
sync_with_master;
create database mysqltest2;
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(4);
connection master;
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(5);
create table mysqltest.bar (m int)ENGINE=MyISAM;
insert into mysqltest.bar values(15);
save_master_pos;
connection slave;
sync_with_master;
select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
connection master;
drop database mysqltest;
drop database if exists mysqltest2;
save_master_pos;
connection slave;
sync_with_master;
--error 1008
drop database mysqltest;
drop database mysqltest2;
# Now let's test load data from master
# First create some databases and tables on the master
connection master;
set sql_log_bin = 0;
create database mysqltest2;
create database mysqltest;
show databases like 'mysql%';
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
(13, 'thirteen test');
set sql_log_bin = 1;
save_master_pos;
connection slave;
sync_with_master;
# This should show that the slave is empty at this point
show databases like 'mysql%';
# Create mysqltest2 and mysqltest3 on slave; we expect that LOAD DATA FROM
# MASTER will neither touch database mysqltest nor mysqltest3
create database mysqltest2;
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'original foo.t1');
create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t3 values (1, 'original foo.t3');
create database mysqltest3;
create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest3.t1 values (1, 'original foo2.t1');
# Create mysqltest, and mysqltest.t1, to check that it gets replaced,
# and mysqltest.t3 to check that it is not touched (there is no
# mysqltest.t3 on master)
create database mysqltest;
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'original bar.t1');
create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t3 values (1, 'original bar.t3');
load data from master;
# Now let's check if we have the right tables and the right data in them
show databases like 'mysql%';
use mysqltest2;
# LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which
# databases have to be copied. So it thinks "mysqltest" has to be
# copied. Before 4.0.16 it would first drop "mysqltest", then create
# "mysqltest". This "drop" is a bug; in that case t3 would disappear. So
# here the effect of this bug (BUG#1248) would be to leave an empty
# "mysqltest" on the slave.
show tables; # should be t1 & t3
select * from t1; # should be slave's original
use mysqltest3;
show tables; # should be t1
select * from t1; # should be slave's original
use mysqltest;
show tables; # should contain master's copied t1&t2, slave's original t3
select * from mysqltest.t1;
select * from mysqltest.t2;
select * from mysqltest.t3;
# Now let's see if replication works
connection master;
insert into mysqltest.t1 values (4, 'four test');
save_master_pos;
connection slave;
sync_with_master;
select * from mysqltest.t1;
# Check that LOAD DATA FROM MASTER is able to create master.info
# if needed (if RESET SLAVE was used before), before writing to it (BUG#2922).
stop slave;
reset slave;
load data from master;
start slave;
# see if replication coordinates were restored fine
connection master;
insert into mysqltest.t1 values (5, 'five bar');
save_master_pos;
connection slave;
sync_with_master;
select * from mysqltest.t1;
# Check that LOAD DATA FROM MASTER reports the error if it can't drop a
# table to be overwritten.
# DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX
# insert into mysqltest.t1 values(10, 'should be there');
# flush tables;
let $MYSQLD_SLAVE_DATADIR= `select @@datadir`;
# system chmod 500 $MYSQLD_SLAVE_DATADIR/mysqltest/;
# --error 6
# load data from master; # should fail (errno 13)
# system chmod 700 $MYSQLD_SLAVE_DATADIR/mysqltest/;
# select * from mysqltest.t1; # should contain the row (10, ...)
# Check that LOAD TABLE FROM MASTER fails if the table exists on slave
--error 1050
load table mysqltest.t1 from master;
drop table mysqltest.t1;
load table mysqltest.t1 from master;
# Check what happens when requestion not existing table
#
--error 1188
load table bar.t1 from master;
# as LOAD DATA FROM MASTER failed it did not restart slave threads
# DISABLED FOR NOW
# start slave;
# Now time for cleanup
connection master;
drop database mysqltest;
drop database mysqltest2;
save_master_pos;
connection slave;
sync_with_master;
# These have to be dropped on slave because they are not replicated
drop database mysqltest2;
drop database mysqltest3;
# End of 4.1 tests
###########################################################
# Change Author: JBM
# Change Date: 2006-2-2
# Change: Added ENGINE=$engine_type for first create table
# Reason: Only MyISAM supports load from master no need to
# run test case for other engines, in addition test will
# fail if other engines are set as default engine
###########################################################
# Change Author: JBM
# Change Date: 2006-2-3
# Change: removed ENGINE=$engine_type for first create table
# and renamed test file to rpl_load_table_from_master.test.
# In addition added test requirements.
# Reason: Request from review.
############################################################
# REQUIREMENT TEST 1:
# LOAD TABLE FROM MASTER must work with a forced timestamp.
############################################################
#
# Test forced timestamp
#
-- source include/master-slave.inc
-- echo "******************** Test Requirment 1 *************"
# Don't log table creating to the slave as we want to test LOAD TABLE
SET SQL_LOG_BIN=0,timestamp=200006;
eval CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
INSERT INTO t1 ( a) VALUE ('F');
select unix_timestamp(t) from t1;
connection slave;
load table t1 from master;
select unix_timestamp(t) from t1;
# Delete the created table on master and slave
connection master;
set SQL_LOG_BIN=1,timestamp=default;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
connection master;
#
# Test copying table with checksum
#
# Don't log table creating to the slave as we want to test LOAD TABLE
set SQL_LOG_BIN=0;
#######################################################
# REQUIREMENTi TEST 2:
#LOAD TABLE FROM MASTER must work with table checksum
#######################################################
-- echo "******************** Test Requirment 2 *************"
eval CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
INSERT INTO t1 VALUES (1);
save_master_pos;
connection slave;
sync_with_master;
load table t1 from master;
check table t1;
drop table t1;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
connection master;
set SQL_LOG_BIN=0;
create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t1;
create table t2 (word char(20) not null)ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t2;
create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
connection slave;
load table t1 from master;
load table t2 from master;
load table t3 from master;
check table t1;
select count(*) from t2;
select count(*) from t3;
connection master;
set SQL_LOG_BIN=1;
drop table if exists t1,t2,t3;
save_master_pos;
connection slave;
sync_with_master;
create table t1(n int);
drop table t1;
# End of 4.1 tests
...@@ -23,9 +23,7 @@ load data infile '../../std_data/loaddata6.dat' into table t1 character set koi8 ...@@ -23,9 +23,7 @@ load data infile '../../std_data/loaddata6.dat' into table t1 character set koi8
select hex(a) from t1; select hex(a) from t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select hex(a) from t1; select hex(a) from t1;
connection master; connection master;
......
...@@ -16,7 +16,7 @@ connection master; ...@@ -16,7 +16,7 @@ connection master;
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
connection slave; connection slave;
wait_for_slave_to_stop; --source include/wait_for_slave_sql_to_stop.inc
source include/show_slave_status.inc; source include/show_slave_status.inc;
connection slave; connection slave;
......
...@@ -28,9 +28,7 @@ LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1; ...@@ -28,9 +28,7 @@ LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
SELECT COUNT(*) FROM mysqltest.t1; SELECT COUNT(*) FROM mysqltest.t1;
# Now lets check the slave to see what we have :-) # Now lets check the slave to see what we have :-)
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
SHOW DATABASES; SHOW DATABASES;
......
...@@ -16,9 +16,7 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; ...@@ -16,9 +16,7 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
# Test logging on slave; # Test logging on slave;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select count(*) from test.t1; # check that LOAD was replicated select count(*) from test.t1; # check that LOAD was replicated
source include/show_binlog_events.inc; source include/show_binlog_events.inc;
......
...@@ -27,15 +27,11 @@ truncate table t1; ...@@ -27,15 +27,11 @@ truncate table t1;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1; eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1;
--remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile --remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select a,count(*) from t1 group by a; select a,count(*) from t1 group by a;
connection master; connection master;
drop table t1; drop table t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
......
# See if master_pos_wait(,,timeout) # See if master_pos_wait(,,timeout)
# Terminates with "timeout expired" (-1) # Terminates with "timeout expired" (-1)
source include/master-slave.inc; source include/master-slave.inc;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# Ask for a master log that has certainly not been reached yet # Ask for a master log that has certainly not been reached yet
# timeout= 2 seconds # timeout= 2 seconds
select master_pos_wait('master-bin.999999',0,2); select master_pos_wait('master-bin.999999',0,2);
......
File mode changed from 100755 to 100644
...@@ -18,6 +18,7 @@ show slave hosts; ...@@ -18,6 +18,7 @@ show slave hosts;
drop table t1; drop table t1;
sync_slave_with_master; sync_slave_with_master;
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
connection master; connection master;
# Test replication of timestamp # Test replication of timestamp
...@@ -35,6 +36,7 @@ create table t5 select * from t4; ...@@ -35,6 +36,7 @@ create table t5 select * from t4;
save_master_pos; save_master_pos;
connection slave; connection slave;
start slave; start slave;
--source include/wait_for_slave_to_start.inc
sync_with_master; sync_with_master;
select * from t2; select * from t2;
show create table t3; show create table t3;
......
...@@ -19,8 +19,6 @@ select * from t2; ...@@ -19,8 +19,6 @@ select * from t2;
connection master; connection master;
drop table t1,t2; drop table t1,t2;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# End of 4.1 tests # End of 4.1 tests
...@@ -27,11 +27,9 @@ SELECT * FROM a; ...@@ -27,11 +27,9 @@ SELECT * FROM a;
insert into a values(2),(3); insert into a values(2),(3);
delete alias FROM a alias where alias.i=2; delete alias FROM a alias where alias.i=2;
select * from a; select * from a;
save_master_pos; sync_slave_with_master;
connection slave;
use mysqltest_to; use mysqltest_to;
sync_with_master;
select * from a; select * from a;
# BUG#3461 # BUG#3461
......
...@@ -47,8 +47,7 @@ sync_with_master; # won't work if slave SQL thread stopped ...@@ -47,8 +47,7 @@ sync_with_master; # won't work if slave SQL thread stopped
connection master; # cleanup connection master; # cleanup
drop table t1; drop table t1;
connection slave; sync_slave_with_master;
sync_with_master;
# If the machine is so fast that slave syncs before OPTIMIZE # If the machine is so fast that slave syncs before OPTIMIZE
# starts, this test wil demonstrate nothing but will pass. # starts, this test wil demonstrate nothing but will pass.
......
...@@ -38,20 +38,15 @@ select @@net_buffer_length, @@max_allowed_packet; ...@@ -38,20 +38,15 @@ select @@net_buffer_length, @@max_allowed_packet;
create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM; create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023'); INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023');
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
eval select count(*) from `$db`.`t1` /* must be 1 */; eval select count(*) from `$db`.`t1` /* must be 1 */;
SHOW STATUS LIKE 'Slave_running'; SHOW STATUS LIKE 'Slave_running';
select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING'; select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING';
connection master; connection master;
eval drop database $db; eval drop database $db;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# #
# Bug #23755: Replicated event larger that max_allowed_packet infinitely re-transmits # Bug #23755: Replicated event larger that max_allowed_packet infinitely re-transmits
......
...@@ -6,9 +6,7 @@ ...@@ -6,9 +6,7 @@
########################################################### ###########################################################
source include/master-slave.inc; source include/master-slave.inc;
#save_master_pos; #sync_slave_with_master;
#connection slave;
#sync_with_master;
#reset master; #reset master;
#connection master; #connection master;
...@@ -30,20 +28,16 @@ prepare stmt2 from @var2; ...@@ -30,20 +28,16 @@ prepare stmt2 from @var2;
set @var1='from-master-3'; set @var1='from-master-3';
execute stmt2 using @var1; execute stmt2 using @var1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
SELECT * FROM t1 ORDER BY n; SELECT * FROM t1 ORDER BY n;
connection master; connection master;
drop table t1; drop table t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
stop slave; stop slave;
source include/wait_for_slave_to_stop.inc;
# End of 4.1 tests # End of 4.1 tests
# #
...@@ -102,13 +96,12 @@ use mysqltest1; ...@@ -102,13 +96,12 @@ use mysqltest1;
EXECUTE stmt_d_1; EXECUTE stmt_d_1;
--echo --echo
--save_master_pos --sync_slave_with_master
--echo --echo
--echo # Connection: slave --echo # Connection: slave
--echo --echo
--connection slave
--sync_with_master
--echo --echo
SELECT * FROM t1; SELECT * FROM t1;
...@@ -125,13 +118,12 @@ DROP DATABASE mysqltest1; ...@@ -125,13 +118,12 @@ DROP DATABASE mysqltest1;
use test; use test;
DROP TABLE t1; DROP TABLE t1;
--echo --echo
--save_master_pos --sync_slave_with_master
--echo --echo
--echo # Connection: slave --echo # Connection: slave
--echo --echo
--connection slave
--sync_with_master
--echo --echo
STOP SLAVE; STOP SLAVE;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
source include/master-slave.inc; source include/master-slave.inc;
connection slave; connection slave;
stop slave; stop slave;
--source include/wait_for_slave_to_stop.inc
connection master; connection master;
# This will generate a master's binlog > 10 bytes # This will generate a master's binlog > 10 bytes
create table t1 (a int); create table t1 (a int);
......
...@@ -18,18 +18,14 @@ insert into t1 values(15),(16),(17); ...@@ -18,18 +18,14 @@ insert into t1 values(15),(16),(17);
update t1 set m=20 where m=16; update t1 set m=20 where m=16;
delete from t1 where m=17; delete from t1 where m=17;
create table t11 select * from t1; create table t11 select * from t1;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
select * from t1 ORDER BY m; select * from t1 ORDER BY m;
select * from t2; select * from t2;
--error 1146 --error 1146
select * from t11; select * from t11;
connection master; connection master;
drop table if exists t1,t2,t11; drop table if exists t1,t2,t11;
save_master_pos; sync_slave_with_master;
connection slave;
sync_with_master;
# show slave status, just to see of it prints replicate-do-table # show slave status, just to see of it prints replicate-do-table
--replace_result $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # --replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
......
File mode changed from 100755 to 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment