mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Merge MySQL 5.1.46 into MariaDB.
Still two test failures to be solved: main.myisam and main.subselect.
This commit is contained in:
@@ -5,7 +5,9 @@ reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
use db1;
|
||||
CREATE TABLE db1.t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE db1.t2 (s CHAR(255)) ENGINE=MyISAM;
|
||||
@@ -102,8 +104,66 @@ SELECT * from db1.t2;
|
||||
s
|
||||
before call db1.p1()
|
||||
executed db1.p2()
|
||||
START SLAVE;
|
||||
#
|
||||
# SAVEPOINT and ROLLBACK TO have the same problem in BUG#43263
|
||||
# This was reported by BUG#50407
|
||||
[on master]
|
||||
SET SESSION AUTOCOMMIT=0
|
||||
BEGIN;
|
||||
INSERT INTO db1.t1 VALUES(20);
|
||||
#
|
||||
# Verify whether this statement is binlogged correctly
|
||||
/*comment*/ SAVEPOINT has_comment;
|
||||
USE db1;
|
||||
INSERT INTO db1.t1 VALUES(30);
|
||||
INSERT INTO db1.t2 VALUES("in savepoint has_comment");
|
||||
USE db2;
|
||||
SavePoint mixed_cases;
|
||||
USE db1;
|
||||
INSERT INTO db1.t2 VALUES("in savepoint mixed_cases");
|
||||
INSERT INTO db1.t1 VALUES(40);
|
||||
USE db2;
|
||||
ROLLBACK TO mixed_cases;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
ROLLBACK TO has_comment;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
USE db1;
|
||||
INSERT INTO db1.t2 VALUES("after rollback to");
|
||||
INSERT INTO db1.t1 VALUES(50);
|
||||
USE db2;
|
||||
COMMIT;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Query # # use `test`; INSERT INTO db1.t1 VALUES(20)
|
||||
master-bin.000001 # Query # # SAVEPOINT has_comment
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(30)
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("in savepoint has_comment")
|
||||
master-bin.000001 # Query # # SAVEPOINT mixed_cases
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("in savepoint mixed_cases")
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(40)
|
||||
master-bin.000001 # Query # # ROLLBACK TO mixed_cases
|
||||
master-bin.000001 # Query # # ROLLBACK TO has_comment
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("after rollback to")
|
||||
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(50)
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
[on slave]
|
||||
#
|
||||
# Verify INSERT statements in savepoints are executed, for MyISAM table
|
||||
# is not effected by ROLLBACK TO
|
||||
SELECT * FROM db1.t2 WHERE s LIKE '% savepoint %';
|
||||
s
|
||||
in savepoint has_comment
|
||||
in savepoint mixed_cases
|
||||
#
|
||||
# Verify INSERT statements on the Innodb table are rolled back;
|
||||
SELECT * FROM db1.t1 WHERE a IN (30, 40);
|
||||
a
|
||||
#
|
||||
# Clean up
|
||||
#
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
|
@@ -208,8 +208,14 @@ CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||
Warnings:
|
||||
Note 1449 The user specified as a definer ('user44331'@'%') does not exist
|
||||
# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten
|
||||
# binlog entry
|
||||
SELECT 'ABC';
|
||||
SELECT '123'|
|
||||
ABC
|
||||
ABC
|
||||
123
|
||||
123
|
||||
#on master
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
where EVENT_NAME='event44331_1';
|
||||
|
@@ -7,34 +7,24 @@ start slave;
|
||||
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: .*");
|
||||
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("Slave I/O thread .* register on master");
|
||||
SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
|
||||
IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
|
||||
1
|
||||
SELECT GET_LOCK("debug_lock.before_get_UNIX_TIMESTAMP", 1000);
|
||||
GET_LOCK("debug_lock.before_get_UNIX_TIMESTAMP", 1000)
|
||||
1
|
||||
set global debug= 'd,debug_lock.before_get_UNIX_TIMESTAMP';
|
||||
stop slave;
|
||||
SET @@global.debug= "+d,'debug_lock.before_get_UNIX_TIMESTAMP'";
|
||||
start slave;
|
||||
SELECT RELEASE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
|
||||
RELEASE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
|
||||
1
|
||||
slave is going to hang in get_master_version_and_clock
|
||||
slave is unblocked
|
||||
SET DEBUG_SYNC='now SIGNAL signal.get_unix_timestamp';
|
||||
Check network error happened here
|
||||
NETWORK ERROR
|
||||
SELECT IS_FREE_LOCK("debug_lock.before_get_SERVER_ID");
|
||||
IS_FREE_LOCK("debug_lock.before_get_SERVER_ID")
|
||||
1
|
||||
SELECT GET_LOCK("debug_lock.before_get_SERVER_ID", 1000);
|
||||
GET_LOCK("debug_lock.before_get_SERVER_ID", 1000)
|
||||
1
|
||||
set global debug= 'd,debug_lock.before_get_SERVER_ID';
|
||||
set @@global.debug = "-d,'debug_lock.before_get_UNIX_TIMESTAMP'";
|
||||
stop slave;
|
||||
SET @@global.debug= "+d,'debug_lock.before_get_SERVER_ID'";
|
||||
start slave;
|
||||
SELECT RELEASE_LOCK("debug_lock.before_get_SERVER_ID");
|
||||
RELEASE_LOCK("debug_lock.before_get_SERVER_ID")
|
||||
1
|
||||
slave is going to hang in get_master_version_and_clock
|
||||
slave is unblocked
|
||||
SET DEBUG_SYNC='now SIGNAL signal.get_server_id';
|
||||
Check network error happened here
|
||||
NETWORK ERROR
|
||||
set @@global.debug = "-d,'debug_lock.before_get_SERVER_ID'";
|
||||
set global debug= '';
|
||||
reset master;
|
||||
include/stop_slave.inc
|
||||
@@ -43,3 +33,4 @@ start slave;
|
||||
*** must be having the replicate-same-server-id IO thread error ***
|
||||
Slave_IO_Errno= 1593
|
||||
Slave_IO_Error= Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
@@ -998,7 +998,7 @@ master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before
|
||||
master-bin.000001 # Xid 1 # #
|
||||
master-bin.000001 # Query 1 # BEGIN
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2')
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; SAVEPOINT s2
|
||||
master-bin.000001 # Query 1 # SAVEPOINT s2
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2')
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
|
||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
|
@@ -241,10 +241,12 @@ STOP SLAVE;
|
||||
SET GLOBAL storage_engine=@storage_engine;
|
||||
START SLAVE;
|
||||
================ BUG#22864 ================
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
RESET MASTER;
|
||||
START SLAVE;
|
||||
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;
|
||||
SET AUTOCOMMIT=0;
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
@@ -264,15 +266,6 @@ t1
|
||||
t2
|
||||
t3
|
||||
t4
|
||||
SELECT TABLE_NAME,ENGINE
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_NAME LIKE 't_'
|
||||
ORDER BY TABLE_NAME;
|
||||
TABLE_NAME ENGINE
|
||||
t1 MyISAM
|
||||
t2 InnoDB
|
||||
t3 InnoDB
|
||||
t4 InnoDB
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
@@ -334,15 +327,6 @@ t1
|
||||
t2
|
||||
t3
|
||||
t4
|
||||
SELECT TABLE_NAME,ENGINE
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_NAME LIKE 't_'
|
||||
ORDER BY TABLE_NAME;
|
||||
TABLE_NAME ENGINE
|
||||
t1 MyISAM
|
||||
t2 InnoDB
|
||||
t3 InnoDB
|
||||
t4 InnoDB
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
|
39
mysql-test/suite/rpl/r/rpl_show_slave_running.result
Normal file
39
mysql-test/suite/rpl/r/rpl_show_slave_running.result
Normal file
@@ -0,0 +1,39 @@
|
||||
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;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
include/stop_slave.inc
|
||||
set global debug= 'd,dbug.before_get_running_status_yes';
|
||||
Slave_running, Slave_IO_Running, Slave_SQL_Running, must be OFF, NO, NO in three following queries
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
Variable_name Value
|
||||
Slave_running OFF
|
||||
Slave_IO_Running= No
|
||||
Slave_SQL_Running= No
|
||||
start slave io_thread;
|
||||
Slave_running, Slave_IO_Running, Slave_SQL_Running must be OFF NO NO in three following queries
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
Variable_name Value
|
||||
Slave_running OFF
|
||||
Slave_IO_Running= No
|
||||
Slave_SQL_Running= No
|
||||
SET DEBUG_SYNC='now SIGNAL signal.io_thread_let_running';
|
||||
Slave_running, Slave_IO_Running, Slave_SQL_Running must be OFF YES NO in three following queries
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
Variable_name Value
|
||||
Slave_running OFF
|
||||
Slave_IO_Running= Yes
|
||||
Slave_SQL_Running= No
|
||||
start slave sql_thread;
|
||||
Slave_running, Slave_IO_Running, Slave_SQL_Running must be ON, YES, YES in three following queries
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
Variable_name Value
|
||||
Slave_running ON
|
||||
Slave_IO_Running= Yes
|
||||
Slave_SQL_Running= Yes
|
||||
set global debug= '';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
End of tests
|
91
mysql-test/suite/rpl/r/rpl_slow_query_log.result
Normal file
91
mysql-test/suite/rpl/r/rpl_slow_query_log.result
Normal file
@@ -0,0 +1,91 @@
|
||||
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;
|
||||
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
|
||||
include/stop_slave.inc
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET GLOBAL long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
include/start_slave.inc
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 values(1, 1);
|
||||
INSERT INTO t1 values(1, sleep(3));
|
||||
TRUNCATE mysql.slow_log;
|
||||
SELECT 1, sleep(3);
|
||||
1 sleep(3)
|
||||
1 0
|
||||
SELECT 1;
|
||||
1
|
||||
1
|
||||
TRUNCATE mysql.slow_log;
|
||||
SET TIMESTAMP= 1;
|
||||
SELECT 2, sleep(3);
|
||||
2 sleep(3)
|
||||
2 0
|
||||
SELECT 2;
|
||||
2
|
||||
2
|
||||
TRUNCATE mysql.slow_log;
|
||||
SET @old_slow_query_log= @@slow_query_log;
|
||||
SET GLOBAL slow_query_log= 'OFF';
|
||||
SELECT 3, sleep(3);
|
||||
3 sleep(3)
|
||||
3 0
|
||||
SELECT 3;
|
||||
3
|
||||
3
|
||||
TRUNCATE mysql.slow_log;
|
||||
SET GLOBAL slow_query_log= @old_slow_query_log;
|
||||
DROP TABLE t1;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL long_query_time= @old_long_query_time;
|
||||
SET GLOBAL log_output= @old_log_output;
|
||||
include/start_slave.inc
|
||||
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;
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET GLOBAL long_query_time= 2;
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET SESSION long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
include/stop_slave.inc
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET GLOBAL long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
include/start_slave.inc
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
********************************************************************
|
||||
**** INSERT one row that exceeds long_query_time
|
||||
**** Outcome: query ends up in both master and slave slow log
|
||||
********************************************************************
|
||||
INSERT INTO t1 values(1, sleep(3));
|
||||
### Assertion is good. Both Master and Slave exhibit the
|
||||
### same number of queries in slow log: 1
|
||||
TRUNCATE mysql.slow_log;
|
||||
TRUNCATE mysql.slow_log;
|
||||
********************************************************************
|
||||
**** Now do inserts again, but first add an index to the table.
|
||||
**** Outcome: Note that the slave contains the same one entry (as
|
||||
**** the master does) whereas before the patch it did not.
|
||||
********************************************************************
|
||||
ALTER TABLE t1 ADD INDEX id1(a);
|
||||
INSERT INTO t1 values(1, sleep(3));
|
||||
### Assertion is good. Both Master and Slave exhibit the
|
||||
### same number of queries in slow log: 1
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
||||
DROP TABLE t1;
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
@@ -195,7 +195,7 @@ 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 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 5.6. Please use '@@log_bin_trust_function_creators' instead
|
||||
Warning 1287 '@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead
|
||||
set global log_bin_trust_function_creators=0;
|
||||
set global log_bin_trust_function_creators=1;
|
||||
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
|
||||
@@ -559,11 +559,11 @@ end
|
||||
master-bin.000001 # Query 1 # 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 5.6. Please use '@@log_bin_trust_function_creators' instead
|
||||
Warning 1287 '@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. 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_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 5.6. Please use '@@log_bin_trust_function_creators' instead
|
||||
Warning 1287 '@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead
|
||||
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
|
||||
drop database mysqltest;
|
||||
drop database mysqltest2;
|
||||
|
18
mysql-test/suite/rpl/r/rpl_stm_sql_mode.result
Normal file
18
mysql-test/suite/rpl/r/rpl_stm_sql_mode.result
Normal file
@@ -0,0 +1,18 @@
|
||||
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;
|
||||
CREATE TABLE t1 (pk integer auto_increment , primary key (pk));
|
||||
SET SESSION SQL_MODE='traditional';
|
||||
# **** [MASTER] *****
|
||||
# action: raise DUP KEY error (error code should be set in the
|
||||
# query log event)
|
||||
INSERT INTO t1 (`pk`) VALUES (1), (1);
|
||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||
DROP TABLE t1;
|
||||
# **** [ sync slave with master ] ****
|
||||
# assertion: sync slave with master makes slave not to stop with
|
||||
# duplicate key error (because it has received event
|
||||
# with expected error code).
|
15
mysql-test/suite/rpl/r/rpl_typeconv_innodb.result
Normal file
15
mysql-test/suite/rpl/r/rpl_typeconv_innodb.result
Normal file
@@ -0,0 +1,15 @@
|
||||
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;
|
||||
**** Resetting master and slave ****
|
||||
include/stop_slave.inc
|
||||
RESET SLAVE;
|
||||
RESET MASTER;
|
||||
include/start_slave.inc
|
||||
CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (b'0', b'01', b'101');
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
@@ -10,4 +10,4 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
|
||||
rpl_row_create_table : Bug#51574 Feb 27 2010 andrei failed different way than earlier with bug#45576
|
||||
|
@@ -0,0 +1 @@
|
||||
--innodb --binlog-ignore-db=db2
|
@@ -4,9 +4,11 @@ source include/have_binlog_format_statement.inc;
|
||||
|
||||
disable_warnings;
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
enable_warnings;
|
||||
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
|
||||
use db1;
|
||||
|
||||
@@ -116,10 +118,55 @@ eval SELECT $result as 'Must be 0';
|
||||
SELECT * from db1.t1;
|
||||
SELECT * from db1.t2;
|
||||
|
||||
START SLAVE;
|
||||
source include/wait_for_slave_sql_to_start.inc;
|
||||
|
||||
--echo #
|
||||
--echo # SAVEPOINT and ROLLBACK TO have the same problem in BUG#43263
|
||||
--echo # This was reported by BUG#50407
|
||||
connection master;
|
||||
echo [on master]
|
||||
SET SESSION AUTOCOMMIT=0;
|
||||
let $binlog_start=query_get_value(SHOW MASTER STATUS, Position, 1);
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO db1.t1 VALUES(20);
|
||||
|
||||
--echo #
|
||||
--echo # Verify whether this statement is binlogged correctly
|
||||
/*comment*/ SAVEPOINT has_comment;
|
||||
USE db1;
|
||||
INSERT INTO db1.t1 VALUES(30);
|
||||
INSERT INTO db1.t2 VALUES("in savepoint has_comment");
|
||||
USE db2;
|
||||
SavePoint mixed_cases;
|
||||
USE db1;
|
||||
INSERT INTO db1.t2 VALUES("in savepoint mixed_cases");
|
||||
INSERT INTO db1.t1 VALUES(40);
|
||||
USE db2;
|
||||
ROLLBACK TO mixed_cases;
|
||||
ROLLBACK TO has_comment;
|
||||
USE db1;
|
||||
INSERT INTO db1.t2 VALUES("after rollback to");
|
||||
INSERT INTO db1.t1 VALUES(50);
|
||||
USE db2;
|
||||
COMMIT;
|
||||
source include/show_binlog_events.inc;
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo [on slave]
|
||||
--echo #
|
||||
--echo # Verify INSERT statements in savepoints are executed, for MyISAM table
|
||||
--echo # is not effected by ROLLBACK TO
|
||||
SELECT * FROM db1.t2 WHERE s LIKE '% savepoint %';
|
||||
--echo #
|
||||
--echo # Verify INSERT statements on the Innodb table are rolled back;
|
||||
SELECT * FROM db1.t1 WHERE a IN (30, 40);
|
||||
|
||||
--echo #
|
||||
--echo # Clean up
|
||||
--echo #
|
||||
connection master;
|
||||
DROP DATABASE db1;
|
||||
connection slave;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
source include/master-slave-end.inc;
|
||||
|
@@ -69,10 +69,16 @@ CREATE DEFINER=CURRENT_USER() EVENT event44331_3
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
||||
|
||||
DELIMITER |;
|
||||
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||
# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten
|
||||
# binlog entry
|
||||
SELECT 'ABC';
|
||||
SELECT '123'|
|
||||
DELIMITER ;|
|
||||
|
||||
--echo #on master
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
|
@@ -16,8 +16,16 @@
|
||||
|
||||
source include/master-slave.inc;
|
||||
source include/have_debug.inc;
|
||||
source include/have_debug_sync.inc;
|
||||
|
||||
#
|
||||
# The test is not supposed to have any binglog affairs.
|
||||
# Hence it's enough it to run only with one binlog format
|
||||
#
|
||||
source include/have_binlog_format_mixed.inc;
|
||||
|
||||
connection slave;
|
||||
|
||||
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: .*");
|
||||
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("Slave I/O thread .* register on master");
|
||||
@@ -25,20 +33,16 @@ call mtr.add_suppression("Slave I/O thread .* register on master");
|
||||
#Test case 1: Try to get the value of the UNIX_TIMESTAMP from master under network disconnection
|
||||
let $debug_saved= `select @@global.debug`;
|
||||
|
||||
let $debug_lock= "debug_lock.before_get_UNIX_TIMESTAMP";
|
||||
eval SELECT IS_FREE_LOCK($debug_lock);
|
||||
eval SELECT GET_LOCK($debug_lock, 1000);
|
||||
|
||||
set global debug= 'd,debug_lock.before_get_UNIX_TIMESTAMP';
|
||||
# set up two parameters to pass into extra/rpl_tests/rpl_get_master_version_and_clock
|
||||
let $dbug_sync_point= 'debug_lock.before_get_UNIX_TIMESTAMP';
|
||||
let $debug_sync_action= 'now SIGNAL signal.get_unix_timestamp';
|
||||
source extra/rpl_tests/rpl_get_master_version_and_clock.test;
|
||||
|
||||
#Test case 2: Try to get the value of the SERVER_ID from master under network disconnection
|
||||
connection slave;
|
||||
let $debug_lock= "debug_lock.before_get_SERVER_ID";
|
||||
eval SELECT IS_FREE_LOCK($debug_lock);
|
||||
eval SELECT GET_LOCK($debug_lock, 1000);
|
||||
|
||||
set global debug= 'd,debug_lock.before_get_SERVER_ID';
|
||||
let $dbug_sync_point= 'debug_lock.before_get_SERVER_ID';
|
||||
let $debug_sync_action= 'now SIGNAL signal.get_server_id';
|
||||
source extra/rpl_tests/rpl_get_master_version_and_clock.test;
|
||||
|
||||
eval set global debug= '$debug_saved';
|
||||
@@ -62,4 +66,9 @@ let $last_io_error= query_get_value("show slave status", Last_IO_Error, 1);
|
||||
echo Slave_IO_Errno= $last_io_errno;
|
||||
echo Slave_IO_Error= $last_io_error;
|
||||
|
||||
# cleanup
|
||||
|
||||
# is not really necessary but avoids mtr post-run env check warnings
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
# End of tests
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# if the path of the load data file is a symbolic link.
|
||||
#
|
||||
--source include/master-slave.inc
|
||||
--source include/not_windows.inc
|
||||
--source include/have_binlog_format_statement.inc
|
||||
|
||||
create table t1(a int not null auto_increment, b int, primary key(a) );
|
||||
|
@@ -136,13 +136,9 @@ START SLAVE;
|
||||
# BUG#22864 (Rollback following CREATE ... SELECT discards 'CREATE
|
||||
# table' from log):
|
||||
--echo ================ BUG#22864 ================
|
||||
connection slave;
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
connection master;
|
||||
RESET MASTER;
|
||||
connection slave;
|
||||
START SLAVE;
|
||||
|
||||
--source include/master-slave-reset.inc
|
||||
|
||||
connection master;
|
||||
SET AUTOCOMMIT=0;
|
||||
CREATE TABLE t1 (a INT);
|
||||
@@ -160,10 +156,6 @@ INSERT INTO t1 VALUES (4),(5),(6);
|
||||
ROLLBACK;
|
||||
|
||||
SHOW TABLES;
|
||||
SELECT TABLE_NAME,ENGINE
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_NAME LIKE 't_'
|
||||
ORDER BY TABLE_NAME;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
SELECT * FROM t3 ORDER BY a;
|
||||
@@ -173,10 +165,6 @@ SELECT * FROM t4 ORDER BY a;
|
||||
SHOW BINLOG EVENTS FROM 106;
|
||||
sync_slave_with_master;
|
||||
SHOW TABLES;
|
||||
SELECT TABLE_NAME,ENGINE
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_NAME LIKE 't_'
|
||||
ORDER BY TABLE_NAME;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
SELECT * FROM t3 ORDER BY a;
|
||||
|
82
mysql-test/suite/rpl/t/rpl_show_slave_running.test
Normal file
82
mysql-test/suite/rpl/t/rpl_show_slave_running.test
Normal file
@@ -0,0 +1,82 @@
|
||||
#
|
||||
# Bug #30703 SHOW STATUS LIKE 'Slave_running' is not compatible with `SHOW SLAVE STATUS'
|
||||
# The test verifies that SHOW STATUS LIKE 'Slave_running' displays ON
|
||||
# if and only if `SHOW SLAVE STATUS' displays YES for Slave_IO_Running and Slave_SQL_Running
|
||||
#
|
||||
source include/master-slave.inc;
|
||||
source include/have_debug.inc;
|
||||
source include/have_debug_sync.inc;
|
||||
|
||||
connection slave;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
source include/stop_slave.inc;
|
||||
let $debug_saved= `select @@global.debug`;
|
||||
set global debug= 'd,dbug.before_get_running_status_yes'; # to block due-started IO
|
||||
|
||||
|
||||
# Test 1. Slave is stopped
|
||||
|
||||
--echo Slave_running, Slave_IO_Running, Slave_SQL_Running, must be OFF, NO, NO in three following queries
|
||||
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
let $status= query_get_value("show slave status", Slave_IO_Running, 1);
|
||||
echo Slave_IO_Running= $status;
|
||||
let $status= query_get_value("show slave status", Slave_SQL_Running, 1);
|
||||
echo Slave_SQL_Running= $status;
|
||||
|
||||
# Test 2. The slave IO thread is started but not yet got connected to master
|
||||
# and SQL thread is not started
|
||||
|
||||
start slave io_thread;
|
||||
|
||||
#
|
||||
# Notice a difference between versions in showing p.2:
|
||||
# 5.1 has two OFF,ON IO-thread state running state whereas later versions
|
||||
# have three: OFF,Connecting,ON.
|
||||
# Hence, 5.1 must display OFF NO NO where as 5.1+ OFF Connecting NO
|
||||
#
|
||||
--echo Slave_running, Slave_IO_Running, Slave_SQL_Running must be OFF NO NO in three following queries
|
||||
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
let $status= query_get_value("show slave status", Slave_IO_Running, 1);
|
||||
echo Slave_IO_Running= $status;
|
||||
let $status= query_get_value("show slave status", Slave_SQL_Running, 1);
|
||||
echo Slave_SQL_Running= $status;
|
||||
|
||||
# Test 3. The slave IO thread is started and got connected to master
|
||||
# and SQL thread is still not started
|
||||
|
||||
SET DEBUG_SYNC='now SIGNAL signal.io_thread_let_running'; # unblock IO thread now
|
||||
let $slave_param= Slave_IO_Running;
|
||||
let $slave_param_value= YES;
|
||||
source include/wait_for_slave_param.inc;
|
||||
|
||||
--echo Slave_running, Slave_IO_Running, Slave_SQL_Running must be OFF YES NO in three following queries
|
||||
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
let $status= query_get_value("show slave status", Slave_IO_Running, 1);
|
||||
echo Slave_IO_Running= $status;
|
||||
let $status= query_get_value("show slave status", Slave_SQL_Running, 1);
|
||||
echo Slave_SQL_Running= $status;
|
||||
|
||||
# Test 4. The slave IO thread is started and got connected to master
|
||||
# and SQL thread is started
|
||||
|
||||
start slave sql_thread;
|
||||
source include/wait_for_slave_sql_to_start.inc;
|
||||
|
||||
--echo Slave_running, Slave_IO_Running, Slave_SQL_Running must be ON, YES, YES in three following queries
|
||||
|
||||
SHOW STATUS LIKE 'Slave_running';
|
||||
let $status= query_get_value("show slave status", Slave_IO_Running, 1);
|
||||
echo Slave_IO_Running= $status;
|
||||
let $status= query_get_value("show slave status", Slave_SQL_Running, 1);
|
||||
echo Slave_SQL_Running= $status;
|
||||
|
||||
# cleanup
|
||||
|
||||
connection slave;
|
||||
|
||||
eval set global debug= '$debug_saved';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
--echo End of tests
|
@@ -27,7 +27,7 @@ connection slave;
|
||||
|
||||
# Stop when reaching the the first table map event.
|
||||
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=762;
|
||||
wait_for_slave_to_stop;
|
||||
source include/wait_for_slave_sql_to_stop.inc;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 # 35 # 36 #
|
||||
query_vertical SHOW SLAVE STATUS;
|
||||
@@ -59,7 +59,7 @@ source include/show_binlog_events.inc;
|
||||
|
||||
connection slave;
|
||||
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106;
|
||||
wait_for_slave_to_stop;
|
||||
source include/wait_for_slave_sql_to_stop.inc;
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
sync_with_master;
|
||||
|
1
mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt
Normal file
@@ -0,0 +1 @@
|
||||
--force-restart --log-slow-slave-statements --log-slow-queries
|
308
mysql-test/suite/rpl/t/rpl_slow_query_log.test
Normal file
308
mysql-test/suite/rpl/t/rpl_slow_query_log.test
Normal file
@@ -0,0 +1,308 @@
|
||||
#
|
||||
# BUG#23300: Slow query log on slave does not log slow replicated statements
|
||||
#
|
||||
# Description:
|
||||
# The slave should log slow queries replicated from master when
|
||||
# --log-slow-slave-statements is used.
|
||||
#
|
||||
# Test is implemented as follows:
|
||||
# i) stop slave
|
||||
# ii) On slave, set long_query_time to a small value.
|
||||
# ii) start slave so that long_query_time variable is picked by sql thread
|
||||
# iii) On master, do one short time query and one long time query, on slave
|
||||
# and check that slow query is logged to slow query log but fast query
|
||||
# is not.
|
||||
# iv) On slave, check that slow queries go into the slow log and fast dont,
|
||||
# when issued through a regular client connection
|
||||
# v) On slave, check that slow queries go into the slow log and fast dont
|
||||
# when we use SET TIMESTAMP= 1 on a regular client connection.
|
||||
# vi) check that when setting slow_query_log= OFF in a connection 'extra2'
|
||||
# prevents logging slow queries in a connection 'extra'
|
||||
#
|
||||
# OBS:
|
||||
# This test only runs for statement binlogging format because on row format
|
||||
# slow queries do not get slow query logged.
|
||||
# Note that due to the sleep() command the insert is written to the binary
|
||||
# log in row format.
|
||||
|
||||
source include/master-slave.inc;
|
||||
source include/have_binlog_format_statement.inc;
|
||||
|
||||
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
|
||||
|
||||
|
||||
# Prepare slave for different long_query_time we need to stop the slave
|
||||
# and restart it as long_query_time variable is dynamic and, after
|
||||
# setting it, it only takes effect on new connections.
|
||||
#
|
||||
# Reference:
|
||||
# http://dev.mysql.com/doc/refman/6.0/en/set-option.html
|
||||
connection slave;
|
||||
|
||||
source include/stop_slave.inc;
|
||||
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET GLOBAL long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
source include/start_slave.inc;
|
||||
|
||||
connection master;
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
|
||||
# test:
|
||||
# check that slave logs the slow query to the slow log, but not the fast one.
|
||||
|
||||
let $slow_query= INSERT INTO t1 values(1, sleep(3));
|
||||
let $fast_query= INSERT INTO t1 values(1, 1);
|
||||
|
||||
eval $fast_query;
|
||||
--disable_warnings
|
||||
eval $slow_query;
|
||||
--enable_warnings
|
||||
sync_slave_with_master;
|
||||
|
||||
let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
|
||||
let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if ($found_fast_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Fast query FOUND in slow query log. Bailing out!";
|
||||
}
|
||||
|
||||
if (!$found_slow_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!";
|
||||
}
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
# regular checks for slow query log (using a new connection - 'extra' - to slave)
|
||||
|
||||
# test:
|
||||
# when using direct connections to the slave, check that slow query is logged
|
||||
# but not the fast one.
|
||||
|
||||
connect(extra,127.0.0.1,root,,test,$SLAVE_MYPORT);
|
||||
connection extra;
|
||||
|
||||
let $fast_query= SELECT 1;
|
||||
let $slow_query= SELECT 1, sleep(3);
|
||||
|
||||
eval $slow_query;
|
||||
eval $fast_query;
|
||||
|
||||
let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
|
||||
let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if ($found_fast_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Fast query FOUND in slow query log. Bailing out!";
|
||||
}
|
||||
|
||||
if (!$found_slow_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!";
|
||||
}
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
# test:
|
||||
# when using direct connections to the slave, check that when setting timestamp to 1 the
|
||||
# slow query is logged but the fast one is not.
|
||||
|
||||
let $fast_query= SELECT 2;
|
||||
let $slow_query= SELECT 2, sleep(3);
|
||||
|
||||
SET TIMESTAMP= 1;
|
||||
eval $slow_query;
|
||||
eval $fast_query;
|
||||
|
||||
let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
|
||||
let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if ($found_fast_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Fast query FOUND in slow query log. Bailing out!";
|
||||
}
|
||||
|
||||
if (!$found_slow_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!";
|
||||
}
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
# test:
|
||||
# check that when setting the slow_query_log= OFF on connection 'extra2'
|
||||
# prevents connection 'extra' from logging to slow query log.
|
||||
|
||||
let $fast_query= SELECT 3;
|
||||
let $slow_query= SELECT 3, sleep(3);
|
||||
|
||||
connect(extra2,127.0.0.1,root,,test,$SLAVE_MYPORT);
|
||||
connection extra2;
|
||||
|
||||
SET @old_slow_query_log= @@slow_query_log;
|
||||
SET GLOBAL slow_query_log= 'OFF';
|
||||
|
||||
connection extra;
|
||||
|
||||
eval $slow_query;
|
||||
eval $fast_query;
|
||||
|
||||
let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`;
|
||||
let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if ($found_fast_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Fast query FOUND in slow query log when slow_query_log= OFF. Bailing out!";
|
||||
}
|
||||
|
||||
if ($found_slow_query)
|
||||
{
|
||||
SELECT * FROM mysql.slow_log;
|
||||
die "Assertion failed! Slow query FOUND in slow query log when slow_query_log= OFF. Bailing out!";
|
||||
}
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
# clean up: drop tables, reset the variables back to the previous value,
|
||||
# disconnect extra connections
|
||||
connection extra2;
|
||||
SET GLOBAL slow_query_log= @old_slow_query_log;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
source include/stop_slave.inc;
|
||||
|
||||
SET GLOBAL long_query_time= @old_long_query_time;
|
||||
SET GLOBAL log_output= @old_log_output;
|
||||
|
||||
source include/start_slave.inc;
|
||||
|
||||
disconnect extra;
|
||||
disconnect extra2;
|
||||
|
||||
#
|
||||
# BUG#50620: Adding an index to a table prevents slave from logging into slow log
|
||||
#
|
||||
|
||||
-- source include/master-slave-reset.inc
|
||||
|
||||
-- connection master
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET GLOBAL long_query_time= 2;
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET SESSION long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
-- connection slave
|
||||
|
||||
-- source include/stop_slave.inc
|
||||
SET @old_log_output= @@log_output;
|
||||
SET GLOBAL log_output= 'TABLE';
|
||||
SET @old_long_query_time= @@long_query_time;
|
||||
SET GLOBAL long_query_time= 2;
|
||||
TRUNCATE mysql.slow_log;
|
||||
-- source include/start_slave.inc
|
||||
|
||||
let $slow_query= INSERT INTO t1 values(1, sleep(3));
|
||||
|
||||
-- connection master
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
|
||||
-- echo ********************************************************************
|
||||
-- echo **** INSERT one row that exceeds long_query_time
|
||||
-- echo **** Outcome: query ends up in both master and slave slow log
|
||||
-- echo ********************************************************************
|
||||
|
||||
-- disable_warnings
|
||||
-- eval $slow_query
|
||||
-- enable_warnings
|
||||
|
||||
let $master_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
-- sync_slave_with_master
|
||||
let $slave_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if (`SELECT $master_slow_query != $slave_slow_query`)
|
||||
{
|
||||
-- connection master
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING MASTER SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- connection slave
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING SLAVE SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- die "Assertion failed! Master and slave slow log contents differ. Bailing out!"
|
||||
}
|
||||
|
||||
if (`SELECT $master_slow_query = $slave_slow_query`)
|
||||
{
|
||||
-- echo ### Assertion is good. Both Master and Slave exhibit the
|
||||
-- echo ### same number of queries in slow log: $master_slow_query
|
||||
}
|
||||
|
||||
TRUNCATE mysql.slow_log;
|
||||
-- connection master
|
||||
TRUNCATE mysql.slow_log;
|
||||
|
||||
-- echo ********************************************************************
|
||||
-- echo **** Now do inserts again, but first add an index to the table.
|
||||
-- echo **** Outcome: Note that the slave contains the same one entry (as
|
||||
-- echo **** the master does) whereas before the patch it did not.
|
||||
-- echo ********************************************************************
|
||||
|
||||
ALTER TABLE t1 ADD INDEX id1(a);
|
||||
|
||||
-- disable_warnings
|
||||
-- eval $slow_query
|
||||
-- enable_warnings
|
||||
|
||||
let $master_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
-- sync_slave_with_master
|
||||
let $slave_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`;
|
||||
|
||||
if (`SELECT $master_slow_query != $slave_slow_query`)
|
||||
{
|
||||
-- connection master
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING MASTER SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- connection slave
|
||||
-- echo ***********************************************
|
||||
-- echo ** DUMPING SLAVE SLOW LOG CONTENTS
|
||||
-- echo ***********************************************
|
||||
SELECT * FROM mysql.slow_log;
|
||||
|
||||
-- die "Assertion failed! Master and slave slow log contents differ. Bailing out!"
|
||||
}
|
||||
|
||||
if (`SELECT $master_slow_query = $slave_slow_query`)
|
||||
{
|
||||
-- echo ### Assertion is good. Both Master and Slave exhibit the
|
||||
-- echo ### same number of queries in slow log: $master_slow_query
|
||||
}
|
||||
|
||||
-- connection master
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- sync_slave_with_master
|
||||
SET @@global.log_output= @old_log_output;
|
||||
SET @@global.long_query_time= @old_long_query_time;
|
24
mysql-test/suite/rpl/t/rpl_stm_sql_mode.test
Normal file
24
mysql-test/suite/rpl/t/rpl_stm_sql_mode.test
Normal file
@@ -0,0 +1,24 @@
|
||||
-- source include/master-slave.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
|
||||
#
|
||||
# Bug #51055 Replication failure on duplicate key + traditional SQL mode
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (pk integer auto_increment , primary key (pk));
|
||||
|
||||
SET SESSION SQL_MODE='traditional';
|
||||
|
||||
-- echo # **** [MASTER] *****
|
||||
-- echo # action: raise DUP KEY error (error code should be set in the
|
||||
-- echo # query log event)
|
||||
-- error ER_DUP_ENTRY
|
||||
INSERT INTO t1 (`pk`) VALUES (1), (1);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
-- echo # **** [ sync slave with master ] ****
|
||||
-- echo # assertion: sync slave with master makes slave not to stop with
|
||||
-- echo # duplicate key error (because it has received event
|
||||
-- echo # with expected error code).
|
||||
-- sync_slave_with_master
|
1
mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
Normal file
@@ -0,0 +1 @@
|
||||
--innodb
|
22
mysql-test/suite/rpl/t/rpl_typeconv_innodb.test
Normal file
22
mysql-test/suite/rpl/t/rpl_typeconv_innodb.test
Normal file
@@ -0,0 +1,22 @@
|
||||
--source include/have_binlog_format_row.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
#
|
||||
# BUG#49618: Field length stored incorrectly in binary log for InnoDB
|
||||
#
|
||||
|
||||
source include/reset_master_and_slave.inc;
|
||||
|
||||
connection master;
|
||||
CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (b'0', b'01', b'101');
|
||||
sync_slave_with_master;
|
||||
|
||||
let $diff_table_1=master:test.t1;
|
||||
let $diff_table_2=slave:test.t1;
|
||||
source include/diff_tables.inc;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
sync_slave_with_master;
|
Reference in New Issue
Block a user