mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Manual merge of mysql-5.1-bugteam into mysql-trunk-merge.
This commit is contained in:
@ -31,3 +31,37 @@ SHOW EVENTS in mysqltest;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
mysqltest e root@localhost SYSTEM ONE TIME # NULL NULL NULL NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
-------------BUG#47418-------------
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
CREATE TABLE t3(c1 INTEGER);
|
||||
INSERT INTO t3 VALUES(33);
|
||||
CREATE TEMPORARY TABLE t1(c1 INTEGER);
|
||||
CREATE TEMPORARY TABLE t2(c1 INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
CREATE TABLE IF NOT EXISTS t1(c1 INTEGER) SELECT c1 FROM t3;
|
||||
CREATE TABLE t2(c1 INTEGER) SELECT c1 FROM t3;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
1
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
33
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
33
|
||||
DROP TEMPORARY TABLE t1;
|
||||
DROP TEMPORARY TABLE t2;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
33
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
33
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
@ -1,24 +0,0 @@
|
||||
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 (c1 BIT, c2 INT);
|
||||
INSERT INTO `t1` VALUES ( 1, 1 );
|
||||
UPDATE t1 SET c1=NULL where c2=1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 WHERE c2=1 LIMIT 1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 CHAR);
|
||||
INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
w
|
||||
# should trigger switch to row due to LIMIT
|
||||
UPDATE t1 SET c1=NULL WHERE c1='w' LIMIT 2;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 LIMIT 2;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
@ -152,6 +152,7 @@ c1 c3 c4 c5
|
||||
5 2006-02-22 00:00:00 Tested in Texas 11
|
||||
|
||||
--- Test 2 position test --
|
||||
Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
@ -314,6 +315,7 @@ ROLLBACK /* added by mysqlbinlog */;
|
||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||
|
||||
--- Test 7 reading stdin w/position --
|
||||
Warning: The option '--position' is deprecated and will be removed in MySQL 5.6. Please use --start-position instead.
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
|
@ -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 6.0. Please use '@@log_bin_trust_function_creators' instead
|
||||
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
|
||||
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 # # 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
|
||||
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
|
||||
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
|
||||
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
|
||||
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
|
||||
drop database mysqltest;
|
||||
drop database mysqltest2;
|
||||
|
1360
mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result
Normal file
1360
mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -67,4 +67,57 @@ SHOW EVENTS in mysqltest;
|
||||
|
||||
connection master;
|
||||
DROP DATABASE IF EXISTS mysqltest;
|
||||
|
||||
#
|
||||
# BUG#47418 RBR fails, failure with mixup of base/temporary/view TABLE DDL
|
||||
#
|
||||
# Before the patch for this bug, 'CREATE TABLE IF NOT EXIST ... SELECT'
|
||||
# statement was binlogged as a TEMPORARY table if the object existed as
|
||||
# a temporary table. This was caused by that the temporary table was opened
|
||||
# and the results of the 'SELECT' was inserted into the temporary table if
|
||||
# a temporary table existed with the same name.
|
||||
#
|
||||
# After the patch for this bug, the base table is created and the results of
|
||||
# the 'SELECT' are inserted into it, even though a temporary table exists with
|
||||
# the same name, and the statement is still binlogged as a base table.
|
||||
#
|
||||
|
||||
echo -------------BUG#47418-------------;
|
||||
connection master;
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
--enable_warnings
|
||||
CREATE TABLE t3(c1 INTEGER);
|
||||
INSERT INTO t3 VALUES(33);
|
||||
|
||||
CREATE TEMPORARY TABLE t1(c1 INTEGER);
|
||||
CREATE TEMPORARY TABLE t2(c1 INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS t1(c1 INTEGER) SELECT c1 FROM t3;
|
||||
CREATE TABLE t2(c1 INTEGER) SELECT c1 FROM t3;
|
||||
|
||||
# In these two statements, t1 and t2 are the temporary table. there is only
|
||||
# value '1' in them. The records of t2 are not inserted into them.
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
sync_slave_with_master;
|
||||
|
||||
# In these two statements, t1 and t2 are the base table. The recoreds of t2
|
||||
# are inserted into it when CREATE TABLE ... SELECT was executed.
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
connection master;
|
||||
DROP TEMPORARY TABLE t1;
|
||||
DROP TEMPORARY TABLE t2;
|
||||
#In these two statements, t1 and t2 are the base table.
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
|
||||
source include/master-slave-end.inc;
|
||||
|
@ -1,53 +0,0 @@
|
||||
# BUG#49481: RBR: MyISAM and bit fields may cause slave to stop on delete cant find record
|
||||
# BUG#49482: RBR: Replication may break on deletes when MyISAM tables + char field are used
|
||||
|
||||
-- source include/master-slave.inc
|
||||
-- source include/have_binlog_format_mixed_or_row.inc
|
||||
|
||||
-- connection master
|
||||
CREATE TABLE t1 (c1 BIT, c2 INT);
|
||||
INSERT INTO `t1` VALUES ( 1, 1 );
|
||||
UPDATE t1 SET c1=NULL where c2=1;
|
||||
-- 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
|
||||
DELETE FROM t1 WHERE c2=1 LIMIT 1;
|
||||
-- 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
|
||||
|
||||
-- connection master
|
||||
|
||||
CREATE TABLE t1 (c1 CHAR);
|
||||
|
||||
INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
|
||||
SELECT * FROM t1;
|
||||
-- echo # should trigger switch to row due to LIMIT
|
||||
UPDATE t1 SET c1=NULL WHERE c1='w' LIMIT 2;
|
||||
-- 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
|
||||
DELETE FROM t1 LIMIT 2;
|
||||
-- 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
|
1
mysql-test/suite/rpl/t/rpl_stm_binlog_direct-master.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_stm_binlog_direct-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--binlog-direct-non-transactional-updates
|
230
mysql-test/suite/rpl/t/rpl_stm_binlog_direct.test
Normal file
230
mysql-test/suite/rpl/t/rpl_stm_binlog_direct.test
Normal file
@ -0,0 +1,230 @@
|
||||
################################################################################
|
||||
# This test case checks if the option "binlog-direct-non-transactional-updates"
|
||||
# makes non-transactional changes in the statement format to be written to the
|
||||
# binary log as soon as the statement commits.
|
||||
#
|
||||
# In what follows, we use the include file rpl_mixing_engines.inc to generate
|
||||
# sql commands from a format string. The format string consists of a sequence of
|
||||
# 'codes' separated by spaces. Before it set of commands, we paste the expected
|
||||
# sequence in the binary log. The following codes exist:
|
||||
#
|
||||
# - Define the scope of a transaction:
|
||||
# B - Begin.
|
||||
# C - Commit.
|
||||
# R - Rollback.
|
||||
#
|
||||
# - Change only T-Tables:
|
||||
# T - Updates a T-Table.
|
||||
# T-trig - Updates T-Tables through a trigger.
|
||||
# T-func - Updates T-Tables through a function.
|
||||
# T-proc - Updates T-Tables through a procedure.
|
||||
# eT - Fails while updating the first tuple in a T-Table.
|
||||
# Te - Fails while updating an n-tuple (n > 1) in a T-Table.
|
||||
# Te-trig - Fails while updating an n-tuple (n > 1) in a T-Table.
|
||||
# Te-func - Fails while updating an n-tuple (n > 1) in a T-Table.
|
||||
#
|
||||
# - Change only N-Tables
|
||||
# N - Updates a N-Table.
|
||||
# N-trig - Updates N-Tables through a trigger.
|
||||
# N-func - Updates N-Tables through a function.
|
||||
# N-proc - Updates N-Tables through a procedure.
|
||||
# eN - Fails while updating the first tuple in a N-Table.
|
||||
# Ne - Fails while updating an n-tuple (n > 1) in a N-Table.
|
||||
# Ne-trig - Fails while updating an n-tuple (n > 1) in a N-Table.
|
||||
# Ne-func - Fails while updating an n-tuple (n > 1) in a N-Table.
|
||||
################################################################################
|
||||
|
||||
--source include/have_binlog_format_statement.inc
|
||||
--source include/master-slave.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
set @@session.binlog_direct_non_transactional_updates= TRUE;
|
||||
|
||||
--echo #########################################################################
|
||||
--echo # CONFIGURATION
|
||||
--echo #########################################################################
|
||||
|
||||
--let $engine_type= Innodb
|
||||
SET @commands= 'configure';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--echo #########################################################################
|
||||
--echo # 1 - BINLOG ORDER
|
||||
--echo #########################################################################
|
||||
connection master;
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #3) Generates in the binlog what follows:
|
||||
--echo # --> STMT "N B T C" entries, format S.
|
||||
--echo #
|
||||
SET @commands= 'B T N C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T N-trig C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T N-func C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T N-proc C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N-trig C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N-func C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N-proc C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N-trig C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N-func C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N-proc C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N-trig C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N-func C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N-proc C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #3.e) Generates in the binlog what follows if T-* fails:
|
||||
--echo # --> STMT "N" entry, format S.
|
||||
--echo # Otherwise, what follows if N-* fails and a N-Table is changed:
|
||||
--echo # --> STMT "N B T C" entries, format S.
|
||||
--echo #
|
||||
SET @commands= 'B eT N C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B Te N C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T eN C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T Ne C';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #4) Generates in the binlog what follows:
|
||||
--echo # --> STMT "N B T R" entries, format S.
|
||||
--echo #
|
||||
SET @commands= 'B T N R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T N-trig R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T N-func R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T N-proc R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N-trig R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N-func R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-trig N-proc R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N-trig R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N-func R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-func N-proc R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N-trig R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N-func R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T-proc N-proc R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo
|
||||
--echo #
|
||||
--echo #4.e) Generates in the binlog what follows if T* fails:
|
||||
--echo # --> STMT "B N C" entry, format S.
|
||||
--echo # Otherwise, what follows if N* fails and a N-Table is changed:
|
||||
--echo # --> STMT "N" entries, format S.
|
||||
--echo #
|
||||
SET @commands= 'B eT N R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B Te N R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T eN R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
SET @commands= 'B T Ne R';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # CHECK CONSISTENCY
|
||||
--echo ###################################################################################
|
||||
connection master;
|
||||
sync_slave_with_master;
|
||||
|
||||
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql
|
||||
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql
|
||||
--diff_files $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # CLEAN
|
||||
--echo ###################################################################################
|
||||
SET @commands= 'clean';
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
Reference in New Issue
Block a user