Commit d3d0a006 authored by aelkin/andrei@mysql1000.(none)'s avatar aelkin/andrei@mysql1000.(none)
Browse files

Merge mysql1000.(none):/home/andrei/MySQL/MERGE/5.0-main2rpl

into  mysql1000.(none):/home/andrei/MySQL/MERGE/5.1-main2rpl
parents 22536fc5 68fc98bd
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -151,7 +151,6 @@ CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
INSERT DELAYED INTO t1 VALUES(1);
DROP TABLE t1;

# End of 4.1 tests

#
#Bug#19717: DELETE Query Error on BLACKHOLE when using WHERE on column with UNIQUE INDEX
@@ -168,7 +167,6 @@ ALTER TABLE t1 ADD PRIMARY KEY(a);
DELETE FROM t1 WHERE a=10;
DROP TABLE t1;

# End of 5.0 tests

# Test that a transaction which is rolled back does not go into binlog
# and that a transaction which is committed does
@@ -193,4 +191,27 @@ show binlog events;

drop table if exists t1;

# End of 5.1 tests
#
# Bug#35178 INSERT_ID not written to binary log for inserts against BLACKHOLE backed tables
#
#
# the test checks that explicitly prescribed with set insert_id= value
# preceeds the following autoincrement insert in a blachhole
#

reset master;
create table t1 (a int auto_increment, primary key (a)) engine=blackhole;

# not insert_id prescribed insert binlogs with the default set insert_id 1
insert into t1 values (11), (NULL), (NULL), (NULL);
set insert_id= 3;
insert into t1 values (NULL), (33), (NULL);
set insert_id= 5;
insert into t1 values (55), (NULL);
source include/show_binlog_events2.inc;

# cleanup
drop table t1;


# End of tests
+39 −0
Original line number Diff line number Diff line
flush logs;
flush logs;
flush logs;
show binary logs;
Log_name	File_size
master-bin.000001	#
master-bin.000002	#
master-bin.000003	#
master-bin.000004	#
purge binary logs TO 'master-bin.000004';
Warnings:
Warning	1476	Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
*** must show a list starting from the 'TO' argument of PURGE ***
show binary logs;
Log_name	File_size
master-bin.000004	#
reset master;
flush logs;
flush logs;
flush logs;
*** must be a warning master-bin.000001 was not found ***
Warnings:
Warning	1476	Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
*** must show one record, of the active binlog, left in the index file after PURGE ***
show binary logs;
Log_name	File_size
master-bin.000004	#
reset master;
flush logs;
flush logs;
flush logs;
purge binary logs TO 'master-bin.000002';
ERROR HY000: Fatal error during log purge
show warnings;
Level	Code	Message
Error	1377	a problem with deleting MYSQLTEST_VARDIR/log/master-bin.000001; consider examining correspondence of your binlog index file to the actual binlog files
Error	1377	Fatal error during log purge
reset master;
End of tests
+165 −0
Original line number Diff line number Diff line
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 TABLE IF EXISTS t1, t2;
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
DROP TRIGGER IF EXISTS tr1;
DROP FUNCTION IF EXISTS f1;
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE t2 (id INT AUTO_INCREMENT PRIMARY KEY);
CREATE PROCEDURE p1()
BEGIN
DECLARE ins_count INT DEFAULT 10; 
WHILE ins_count > 0 DO
INSERT INTO t1 VALUES (NULL);
SET ins_count = ins_count - 1;
END WHILE;
DELETE FROM t1 WHERE id = 1;
DELETE FROM t1 WHERE id = 2;
DELETE FROM t2 WHERE id = 1;
DELETE FROM t2 WHERE id = 2;
END//
CREATE PROCEDURE p2()
BEGIN
INSERT INTO t1 VALUES (NULL);
DELETE FROM t1 WHERE id = f1(3);
DELETE FROM t1 WHERE id = f1(4);
DELETE FROM t2 WHERE id = 3;
DELETE FROM t2 WHERE id = 4;
END//
CREATE TRIGGER tr1 BEFORE DELETE
ON t1 FOR EACH ROW 
BEGIN
INSERT INTO t2  VALUES (NULL);
END//
CREATE FUNCTION f1 (i int) RETURNS int
BEGIN
INSERT INTO t2 VALUES (NULL);
RETURN i;
END//
CALL p1();
show binlog events from <binlog_start>;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Intvar	#	#	INSERT_ID=1
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=2
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=3
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=4
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=5
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=6
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=7
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=8
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=9
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Intvar	#	#	INSERT_ID=10
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t1 WHERE id = 1
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t1 WHERE id = 2
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t2 WHERE id = 1
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t2 WHERE id = 2
# Result on master
SELECT * FROM t1;
id
3
4
5
6
7
8
9
10
SELECT * FROM t2;
id
# Result on slave
SELECT * FROM t1;
id
3
4
5
6
7
8
9
10
SELECT * FROM t2;
id
DROP TRIGGER tr1;
CALL p2();
show binlog events from <binlog_start>;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Intvar	#	#	INSERT_ID=11
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (NULL)
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t1 WHERE id = f1(3)
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t1 WHERE id = f1(4)
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t2 WHERE id = 3
master-bin.000001	#	Query	#	#	use `test`; DELETE FROM t2 WHERE id = 4
# Result on master
SELECT * FROM t1;
id
5
6
7
8
9
10
11
SELECT * FROM t2;
id
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Result on slave
SELECT * FROM t1;
id
5
6
7
8
9
10
11
SELECT * FROM t2;
id
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DROP TABLE IF EXISTS t1, t2;
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
DROP FUNCTION IF EXISTS f1;
DROP TRIGGER IF EXISTS tr1;
+16 −0
Original line number Diff line number Diff line
@@ -172,3 +172,19 @@ master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001	#	Query	#	#	use `test`; insert into t1 values(1)
master-bin.000001	#	Query	#	#	use `test`; COMMIT
drop table if exists t1;
create table t1 (a int auto_increment, primary key (a)) engine=blackhole;
insert into t1 values (11), (NULL), (NULL), (NULL);
set insert_id= 3;
insert into t1 values (NULL), (33), (NULL);
set insert_id= 5;
insert into t1 values (55), (NULL);
show binlog events from <binlog_start>;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Query	1	#	use `test`; create table t1 (a int auto_increment, primary key (a)) engine=blackhole
master-bin.000001	#	Intvar	1	#	INSERT_ID=1
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values (11), (NULL), (NULL), (NULL)
master-bin.000001	#	Intvar	1	#	INSERT_ID=3
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values (NULL), (33), (NULL)
master-bin.000001	#	Intvar	1	#	INSERT_ID=5
master-bin.000001	#	Query	1	#	use `test`; insert into t1 values (55), (NULL)
drop table t1;
+69 −0
Original line number Diff line number Diff line
#
# testing of purging of binary log files bug#18199/Bug#18453
#
source include/have_log_bin.inc;
source include/not_embedded.inc;

#
# testing purge binary logs TO
#

flush logs;
flush logs;
flush logs;

source include/show_binary_logs.inc;

remove_file $MYSQLTEST_VARDIR/log/master-bin.000001;

# there must be a warning with file names
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
purge binary logs TO 'master-bin.000004';

--echo *** must show a list starting from the 'TO' argument of PURGE ***
source include/show_binary_logs.inc;

#
# testing purge binary logs BEFORE
#

reset master;

flush logs;
flush logs;
flush logs;
remove_file $MYSQLTEST_VARDIR/log/master-bin.000001;

--echo *** must be a warning master-bin.000001 was not found ***
let $date=`select NOW()  +  INTERVAL 1 MINUTE`;
--disable_query_log
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval purge binary logs BEFORE '$date';
--enable_query_log

--echo *** must show one record, of the active binlog, left in the index file after PURGE ***
source include/show_binary_logs.inc;

#
# testing a fatal error
# Turning a binlog file into a directory must be a portable setup
# 

reset master;

flush logs;
flush logs;
flush logs;

remove_file $MYSQLTEST_VARDIR/log/master-bin.000001;
mkdir $MYSQLTEST_VARDIR/log/master-bin.000001;

--error ER_BINLOG_PURGE_FATAL_ERR
purge binary logs TO 'master-bin.000002';
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
show warnings;
rmdir $MYSQLTEST_VARDIR/log/master-bin.000001;
--disable_warnings
reset master;
--enable_warnings
--echo End of tests
Loading