mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Merge
This commit is contained in:
@@ -89,3 +89,81 @@ show grants for rpl_do_grant2@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
|
||||
DROP DATABASE IF EXISTS bug42217_db;
|
||||
CREATE DATABASE bug42217_db;
|
||||
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
|
||||
IDENTIFIED BY 'create_rout_db' WITH GRANT OPTION;
|
||||
USE bug42217_db;
|
||||
CREATE FUNCTION upgrade_del_func() RETURNS CHAR(30)
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END//
|
||||
USE bug42217_db;
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
Host Db User Routine_name Routine_type Grantor Proc_priv Timestamp
|
||||
localhost bug42217_db create_rout_db upgrade_del_func FUNCTION create_rout_db@localhost Execute,Alter Routine #
|
||||
SELECT upgrade_del_func();
|
||||
upgrade_del_func()
|
||||
INSIDE upgrade_del_func()
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
Host Db User Routine_name Routine_type Grantor Proc_priv Timestamp
|
||||
localhost bug42217_db create_rout_db upgrade_del_func FUNCTION create_rout_db@localhost Execute,Alter Routine #
|
||||
SHOW GRANTS FOR 'create_rout_db'@'localhost';
|
||||
Grants for create_rout_db@localhost
|
||||
GRANT USAGE ON *.* TO 'create_rout_db'@'localhost' IDENTIFIED BY PASSWORD '*08792480350CBA057BDE781B9DF183B263934601'
|
||||
GRANT CREATE ROUTINE ON `bug42217_db`.* TO 'create_rout_db'@'localhost' WITH GRANT OPTION
|
||||
GRANT EXECUTE, ALTER ROUTINE ON FUNCTION `bug42217_db`.`upgrade_del_func` TO 'create_rout_db'@'localhost'
|
||||
USE bug42217_db;
|
||||
SHOW CREATE FUNCTION upgrade_del_func;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
upgrade_del_func CREATE DEFINER=`create_rout_db`@`localhost` FUNCTION `upgrade_del_func`() RETURNS char(30) CHARSET latin1
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SELECT upgrade_del_func();
|
||||
upgrade_del_func()
|
||||
INSIDE upgrade_del_func()
|
||||
"Check whether the definer user will be able to execute the replicated routine on slave"
|
||||
USE bug42217_db;
|
||||
SHOW CREATE FUNCTION upgrade_del_func;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
upgrade_del_func CREATE DEFINER=`create_rout_db`@`localhost` FUNCTION `upgrade_del_func`() RETURNS char(30) CHARSET latin1
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SELECT upgrade_del_func();
|
||||
upgrade_del_func()
|
||||
INSIDE upgrade_del_func()
|
||||
DELETE FROM mysql.procs_priv;
|
||||
FLUSH PRIVILEGES;
|
||||
USE bug42217_db;
|
||||
"Can't execute the replicated routine on slave like before after procs privilege is deleted "
|
||||
SELECT upgrade_del_func();
|
||||
ERROR 42000: execute command denied to user 'create_rout_db'@'localhost' for routine 'bug42217_db.upgrade_del_func'
|
||||
"Test the user who creates a function on master doesn't exist on slave."
|
||||
"Hence SQL thread ACL_GLOBAL privilege jumps in and no mysql.procs_priv is inserted"
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
CREATE FUNCTION upgrade_alter_func() RETURNS CHAR(30)
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_alter_func()";
|
||||
END//
|
||||
SELECT upgrade_alter_func();
|
||||
upgrade_alter_func()
|
||||
INSIDE upgrade_alter_func()
|
||||
SHOW CREATE FUNCTION upgrade_alter_func;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
upgrade_alter_func CREATE DEFINER=`create_rout_db`@`localhost` FUNCTION `upgrade_alter_func`() RETURNS char(30) CHARSET latin1
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_alter_func()";
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
"Should no privilege record for upgrade_alter_func in mysql.procs_priv"
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
Host Db User Routine_name Routine_type Grantor Proc_priv Timestamp
|
||||
SELECT upgrade_alter_func();
|
||||
ERROR HY000: The user specified as a definer ('create_rout_db'@'localhost') does not exist
|
||||
USE bug42217_db;
|
||||
DROP FUNCTION upgrade_del_func;
|
||||
DROP FUNCTION upgrade_alter_func;
|
||||
DROP DATABASE bug42217_db;
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
"End of test"
|
||||
|
@@ -17,7 +17,7 @@ Error 1205 Lock wait timeout exceeded; try restarting transaction
|
||||
OPTIMIZE TABLE non_existing;
|
||||
Table Op Msg_type Msg_text
|
||||
test.non_existing optimize Error Table 'test.non_existing' doesn't exist
|
||||
test.non_existing optimize error Corrupt
|
||||
test.non_existing optimize status Operation failed
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
|
32
mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result
Normal file
32
mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result
Normal file
@@ -0,0 +1,32 @@
|
||||
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,t3,t4,t5,t6,t7,t8;
|
||||
CREATE TABLE t1 (`bit_key` bit, `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (`bit_key` bit(4), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t3 (`bit_key` bit(7), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t4 (`bit_key` bit(8), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t5 (`bit_key` bit(9), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t6 (`bit_key` bit(14), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t7 (`bit_key` bit(15), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t8 (`bit_key` bit(16), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
INSERT INTO `t1` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t1` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t2` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t2` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t3` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t3` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t4` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t4` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t5` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t5` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t6` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t6` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t7` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t7` WHERE `bit` < 2 LIMIT 4;
|
||||
INSERT INTO `t8` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t8` WHERE `bit` < 2 LIMIT 4;
|
||||
DROP TABLE t1, t2, t3, t4, t5, t6, t7, t8;
|
@@ -87,9 +87,7 @@ show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000002 #
|
||||
master-bin.000003 #
|
||||
select @time_for_purge:=DATE_ADD(UPDATE_TIME, INTERVAL 1 SECOND)
|
||||
from information_schema.tables
|
||||
where TABLE_SCHEMA="test" and TABLE_NAME="t2";
|
||||
SELECT @time_for_purge:=DATE_ADD('tmpval', INTERVAL 1 SECOND);
|
||||
purge master logs before (@time_for_purge);
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
|
10
mysql-test/suite/rpl/r/rpl_slave_load_in.result
Normal file
10
mysql-test/suite/rpl/r/rpl_slave_load_in.result
Normal file
@@ -0,0 +1,10 @@
|
||||
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(a int not null auto_increment, b int, primary key(a));
|
||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
drop table t1;
|
26
mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
Normal file
26
mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
Normal file
@@ -0,0 +1,26 @@
|
||||
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;
|
||||
==== Initialize ====
|
||||
[on master]
|
||||
CREATE TABLE t1 (a CHAR(48));
|
||||
CREATE TEMPORARY TABLE t1_tmp1(a INT);
|
||||
INSERT INTO t1 VALUES (UUID());
|
||||
[on slave]
|
||||
==== Verify results on slave ====
|
||||
SHOW STATUS LIKE "Slave_open_temp_tables";
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 1
|
||||
[on master]
|
||||
[on slave]
|
||||
==== Verify results on slave ====
|
||||
SHOW STATUS LIKE "Slave_open_temp_tables";
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 0
|
||||
==== Clean up ====
|
||||
[on master]
|
||||
DROP TABLE t1;
|
||||
[on slave]
|
@@ -112,3 +112,100 @@ show grants for rpl_do_grant2@localhost;
|
||||
sync_slave_with_master;
|
||||
--error 1141
|
||||
show grants for rpl_do_grant2@localhost;
|
||||
|
||||
#####################################################
|
||||
# Purpose
|
||||
# Test whether mysql.procs_priv get replicated
|
||||
# Related bugs:
|
||||
# BUG42217 mysql.procs_priv does not get replicated
|
||||
#####################################################
|
||||
connection master;
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS bug42217_db;
|
||||
--enable_warnings
|
||||
CREATE DATABASE bug42217_db;
|
||||
|
||||
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
|
||||
IDENTIFIED BY 'create_rout_db' WITH GRANT OPTION;
|
||||
|
||||
connect (create_rout_db_master, localhost, create_rout_db, create_rout_db, bug42217_db,$MASTER_MYPORT,);
|
||||
connect (create_rout_db_slave, localhost, create_rout_db, create_rout_db, bug42217_db, $SLAVE_MYPORT,);
|
||||
|
||||
connection create_rout_db_master;
|
||||
|
||||
|
||||
USE bug42217_db;
|
||||
|
||||
DELIMITER //;
|
||||
CREATE FUNCTION upgrade_del_func() RETURNS CHAR(30)
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_del_func()";
|
||||
END//
|
||||
|
||||
DELIMITER ;//
|
||||
|
||||
connection master;
|
||||
|
||||
USE bug42217_db;
|
||||
--replace_column 8 #
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
SELECT upgrade_del_func();
|
||||
|
||||
sync_slave_with_master;
|
||||
--replace_column 8 #
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
SHOW GRANTS FOR 'create_rout_db'@'localhost';
|
||||
|
||||
USE bug42217_db;
|
||||
SHOW CREATE FUNCTION upgrade_del_func;
|
||||
SELECT upgrade_del_func();
|
||||
|
||||
--echo "Check whether the definer user will be able to execute the replicated routine on slave"
|
||||
connection create_rout_db_slave;
|
||||
USE bug42217_db;
|
||||
SHOW CREATE FUNCTION upgrade_del_func;
|
||||
SELECT upgrade_del_func();
|
||||
|
||||
connection slave;
|
||||
DELETE FROM mysql.procs_priv;
|
||||
FLUSH PRIVILEGES;
|
||||
USE bug42217_db;
|
||||
--echo "Can't execute the replicated routine on slave like before after procs privilege is deleted "
|
||||
--error 1370
|
||||
SELECT upgrade_del_func();
|
||||
|
||||
--echo "Test the user who creates a function on master doesn't exist on slave."
|
||||
--echo "Hence SQL thread ACL_GLOBAL privilege jumps in and no mysql.procs_priv is inserted"
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
|
||||
connection create_rout_db_master;
|
||||
DELIMITER //;
|
||||
CREATE FUNCTION upgrade_alter_func() RETURNS CHAR(30)
|
||||
BEGIN
|
||||
RETURN "INSIDE upgrade_alter_func()";
|
||||
END//
|
||||
DELIMITER ;//
|
||||
|
||||
connection master;
|
||||
SELECT upgrade_alter_func();
|
||||
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE FUNCTION upgrade_alter_func;
|
||||
--echo "Should no privilege record for upgrade_alter_func in mysql.procs_priv"
|
||||
--replace_column 8 #
|
||||
SELECT * FROM mysql.procs_priv;
|
||||
--error 1449
|
||||
SELECT upgrade_alter_func();
|
||||
|
||||
###### CLEAN UP SECTION ##############
|
||||
disconnect create_rout_db_master;
|
||||
disconnect create_rout_db_slave;
|
||||
connection master;
|
||||
USE bug42217_db;
|
||||
DROP FUNCTION upgrade_del_func;
|
||||
DROP FUNCTION upgrade_alter_func;
|
||||
DROP DATABASE bug42217_db;
|
||||
DROP USER 'create_rout_db'@'localhost';
|
||||
|
||||
--echo "End of test"
|
||||
|
78
mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
Normal file
78
mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
Normal file
@@ -0,0 +1,78 @@
|
||||
#
|
||||
# BUG
|
||||
# ---
|
||||
# BUG#39753: Replication failure on MIXED + bit + myisam + no PK
|
||||
#
|
||||
# Description
|
||||
# -----------
|
||||
# Simple statements against a bit column cause failure in mixed-mode
|
||||
# replication.
|
||||
#
|
||||
# Implementation is as follows:
|
||||
# i) A table with two bit fields is created. One of them is a key.
|
||||
# ii) A record is inserted without specifying the key value.
|
||||
# iii) The record is deleted using a where clause that matches it.
|
||||
# iv) repeat i-iii) for bit key that has different size, generating
|
||||
# different extra bits values
|
||||
# v) The slave is synchronized with master
|
||||
# vi) The table is dropped on master and the slave is re-synchronized
|
||||
# with master.
|
||||
#
|
||||
# Step v) made the bug evident before the patch, as the slave would
|
||||
# fail to find the correspondent row in its database (although it did
|
||||
# the insert in step ii) ).
|
||||
#
|
||||
# Obs
|
||||
# ---
|
||||
# This test is based on the "how to repeat" section from the bug report.
|
||||
#
|
||||
#
|
||||
|
||||
--source include/master-slave.inc
|
||||
|
||||
--disable_warnings
|
||||
# setup
|
||||
|
||||
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8;
|
||||
CREATE TABLE t1 (`bit_key` bit, `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (`bit_key` bit(4), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t3 (`bit_key` bit(7), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t4 (`bit_key` bit(8), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t5 (`bit_key` bit(9), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t6 (`bit_key` bit(14), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t7 (`bit_key` bit(15), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
CREATE TABLE t8 (`bit_key` bit(16), `bit` bit, key (`bit_key` )) ENGINE=MyISAM;
|
||||
|
||||
# insert and delete
|
||||
INSERT INTO `t1` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t1` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t2` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t2` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t3` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t3` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t4` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t4` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t5` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t5` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t6` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t6` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t7` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t7` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
INSERT INTO `t8` ( `bit` ) VALUES ( 0 );
|
||||
DELETE FROM `t8` WHERE `bit` < 2 LIMIT 4;
|
||||
|
||||
|
||||
--enable_warnings
|
||||
sync_slave_with_master;
|
||||
|
||||
# clean up
|
||||
connection master;
|
||||
DROP TABLE t1, t2, t3, t4, t5, t6, t7, t8;
|
||||
sync_slave_with_master;
|
@@ -112,14 +112,24 @@ source include/show_master_logs.inc;
|
||||
purge binary logs to 'master-bin.000002';
|
||||
source include/show_binary_logs.inc;
|
||||
|
||||
# Calculate time to use in "purge master logs before" by taking
|
||||
# last modification time of t2 and adding 1 second
|
||||
# This is donw in order to handle the case where file system
|
||||
# time differs from mysqld's time
|
||||
# Set the purge time 1 second after the last modify time of master-bin.000002.
|
||||
perl;
|
||||
open F, ">>".$ENV{'MYSQLTEST_VARDIR'}.'/tmp/rpl_rotate_logs.tmp' or die "Tmp file rpl_rotate_logs.tmp not found";
|
||||
my $binlogpath = $ENV{'MYSQLTEST_VARDIR'}.'/mysqld.1/data/master-bin.000002';
|
||||
my @array = stat($binlogpath);
|
||||
my $filemodifytime = $array[9];
|
||||
my @t = localtime $filemodifytime;
|
||||
my $modifytime = sprintf "%04u-%02u-%02u %02u:%02u:%02u",$t[5]+1900,$t[4]+1,$t[3],$t[2],$t[1],$t[0];
|
||||
printf F ("let \$tmpval = %s;",$modifytime);
|
||||
close F;
|
||||
EOF
|
||||
|
||||
--source $MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.tmp
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/rpl_rotate_logs.tmp;
|
||||
|
||||
--disable_result_log
|
||||
select @time_for_purge:=DATE_ADD(UPDATE_TIME, INTERVAL 1 SECOND)
|
||||
from information_schema.tables
|
||||
where TABLE_SCHEMA="test" and TABLE_NAME="t2";
|
||||
--replace_result $tmpval tmpval
|
||||
--eval SELECT @time_for_purge:=DATE_ADD('$tmpval', INTERVAL 1 SECOND)
|
||||
--enable_result_log
|
||||
|
||||
purge master logs before (@time_for_purge);
|
||||
|
35
mysql-test/suite/rpl/t/rpl_slave_load_in.test
Normal file
35
mysql-test/suite/rpl/t/rpl_slave_load_in.test
Normal file
@@ -0,0 +1,35 @@
|
||||
##########################################################################
|
||||
# This test verifies if a slave is able to process a "LOAD DATA INFILE"
|
||||
# event while the "--secure-file-priv" option is set.
|
||||
#
|
||||
# The test is divided in two steps:
|
||||
# 1 - Creates a table and populates it through "LOAD DATA INFILE".
|
||||
# 2 - Compares the master and slave.
|
||||
##########################################################################
|
||||
source include/master-slave.inc;
|
||||
|
||||
##########################################################################
|
||||
# Loading data
|
||||
##########################################################################
|
||||
connection master;
|
||||
|
||||
create table t1(a int not null auto_increment, b int, primary key(a));
|
||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||
|
||||
##########################################################################
|
||||
# Checking Consistency
|
||||
##########################################################################
|
||||
sync_slave_with_master;
|
||||
|
||||
let $diff_table_1=master:test.t1;
|
||||
let $diff_table_2=slave:test.t1;
|
||||
source include/diff_tables.inc;
|
||||
|
||||
##########################################################################
|
||||
# Clean up
|
||||
##########################################################################
|
||||
connection master;
|
||||
|
||||
drop table t1;
|
||||
|
||||
sync_slave_with_master;
|
49
mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test
Normal file
49
mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test
Normal file
@@ -0,0 +1,49 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test that temporary tables are correctly replicated after switching to ROW format in MIX mode.
|
||||
# This test case will test the condition of the bug#40013.
|
||||
# The test step is:
|
||||
# 1: create temp table on connection 'master';
|
||||
# 2: switch to ROW format using 'INSERT INTO t1 VALUES (UUID());'
|
||||
# 3: disconnect 'master' and connect to a new connection 'master1';
|
||||
# 4: sync to slave and check the number of temp tables on slave.
|
||||
#
|
||||
|
||||
source include/master-slave.inc;
|
||||
source include/have_binlog_format_mixed.inc;
|
||||
|
||||
--echo ==== Initialize ====
|
||||
|
||||
--echo [on master]
|
||||
--connection master
|
||||
|
||||
CREATE TABLE t1 (a CHAR(48));
|
||||
CREATE TEMPORARY TABLE t1_tmp1(a INT);
|
||||
INSERT INTO t1 VALUES (UUID());
|
||||
|
||||
--echo [on slave]
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo ==== Verify results on slave ====
|
||||
SHOW STATUS LIKE "Slave_open_temp_tables";
|
||||
|
||||
--echo [on master]
|
||||
--connection master
|
||||
|
||||
disconnect master;
|
||||
--connection master1
|
||||
|
||||
--echo [on slave]
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo ==== Verify results on slave ====
|
||||
SHOW STATUS LIKE "Slave_open_temp_tables";
|
||||
|
||||
--echo ==== Clean up ====
|
||||
|
||||
--echo [on master]
|
||||
--connection master1
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo [on slave]
|
||||
sync_slave_with_master;
|
Reference in New Issue
Block a user