mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Manual merge from mysql-trunk-merge.
Conflicts: - extra/comp_err.c - mysql-test/collections/default.experimental - mysql-test/r/archive.result - mysql-test/r/select.result - mysql-test/suite/binlog/r/binlog_unsafe.result - mysql-test/suite/binlog/t/binlog_unsafe.test - mysql-test/suite/rpl/t/disabled.def - mysql-test/t/archive.test - mysql-test/t/select.test - sql/item.cc - sql/item.h - sql/item_timefunc.cc - sql/sql_base.cc - sql/sql_delete.cc - sql/sql_load.cc - sql/sql_partition.cc - sql/sql_table.cc - storage/innobase/handler/ha_innodb.cc - vio/vio.c
This commit is contained in:
@ -4,6 +4,7 @@ reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
create table t1 (a int primary key);
|
||||
create table t4 (a int primary key);
|
||||
insert into t1 values (1),(1);
|
||||
|
@ -4,6 +4,7 @@ reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
create table t1(n int);
|
||||
insert into t1 values(get_lock("lock",2));
|
||||
select get_lock("lock",2);
|
||||
|
17
mysql-test/suite/rpl/r/rpl_loaddata_symlink.result
Normal file
17
mysql-test/suite/rpl/r/rpl_loaddata_symlink.result
Normal file
@ -0,0 +1,17 @@
|
||||
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;
|
||||
select * from t1;
|
||||
a b
|
||||
1 10
|
||||
2 15
|
||||
select * from t1;
|
||||
a b
|
||||
1 10
|
||||
2 15
|
||||
drop table t1;
|
26
mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result
Normal file
26
mysql-test/suite/rpl/r/rpl_nondeterministic_functions.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;
|
||||
CREATE TABLE t1 (a VARCHAR(1000));
|
||||
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||
INSERT INTO t1 VALUES
|
||||
(CURDATE()),
|
||||
(CURRENT_DATE()),
|
||||
(CURRENT_TIME()),
|
||||
(CURRENT_TIMESTAMP()),
|
||||
(CURTIME()),
|
||||
(LOCALTIME()),
|
||||
(LOCALTIMESTAMP()),
|
||||
(NOW()),
|
||||
(UNIX_TIMESTAMP()),
|
||||
(UTC_DATE()),
|
||||
(UTC_TIME()),
|
||||
(UTC_TIMESTAMP());
|
||||
INSERT INTO t1 VALUES (RAND());
|
||||
INSERT INTO t1 VALUES (LAST_INSERT_ID());
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
@ -476,4 +476,30 @@ master-bin.000001 # Table_map # # table_id: # (mysqltest1.with_select)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
DROP DATABASE mysqltest1;
|
||||
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 TEMPORARY TABLE t7(c1 INT);
|
||||
CREATE TABLE t5(c1 INT);
|
||||
CREATE TABLE t4(c1 INT);
|
||||
CREATE VIEW bug48506_t1 AS SELECT 1;
|
||||
CREATE VIEW bug48506_t2 AS SELECT * FROM t4;
|
||||
CREATE VIEW bug48506_t3 AS SELECT t5.c1 AS A, t4.c1 AS B FROM t5, t4;
|
||||
CREATE TABLE bug48506_t4(c1 INT);
|
||||
DROP VIEW bug48506_t1, bug48506_t2, bug48506_t3;
|
||||
DROP TABLE bug48506_t4;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t1 LIKE t7;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t2 LIKE t7;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t3 LIKE t7;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t4 LIKE t7;
|
||||
SHOW TABLES LIKE 'bug48506%';
|
||||
Tables_in_test (bug48506%)
|
||||
bug48506_t4
|
||||
DROP VIEW IF EXISTS bug48506_t1, bug48506_t2, bug48506_t3;
|
||||
DROP TEMPORARY TABLES t7;
|
||||
DROP TABLES t4, t5;
|
||||
DROP TABLES IF EXISTS bug48506_t4;
|
||||
end of the tests
|
||||
|
29
mysql-test/suite/rpl/r/rpl_row_trunc_temp.result
Normal file
29
mysql-test/suite/rpl/r/rpl_row_trunc_temp.result
Normal file
@ -0,0 +1,29 @@
|
||||
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 TEMPORARY TABLE t1(c1 INTEGER);
|
||||
CREATE TABLE t2(c1 INTEGER);
|
||||
CREATE TABLE t1(c1 INTEGER);
|
||||
INSERT INTO t1 VALUES(1), (2);
|
||||
INSERT INTO t2 VALUES(1), (2);
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
2
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
TRUNCATE t1;
|
||||
TRUNCATE t2;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
1
|
||||
2
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
@ -4,6 +4,7 @@ reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
create table t1 (word char(20) not null);
|
||||
load data infile '../../std_data/words.dat' into table t1;
|
||||
load data local infile 'MYSQL_TEST_DIR/std_data/words.dat' into table t1;
|
||||
|
@ -4,6 +4,7 @@ reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t3;
|
||||
|
@ -10,5 +10,7 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
rpl_get_master_version_and_clock: # Bug#46931 2009-10-17 joro rpl.rpl_get_master_version_and_clock fails
|
||||
rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
|
||||
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
|
||||
|
@ -7,6 +7,8 @@
|
||||
|
||||
-- source include/master-slave.inc
|
||||
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
|
||||
connection master;
|
||||
create table t1 (a int primary key);
|
||||
create table t4 (a int primary key);
|
||||
@ -46,8 +48,11 @@ kill @id;
|
||||
drop table t2,t3;
|
||||
insert into t4 values (3),(4);
|
||||
connection master;
|
||||
# The get_lock function causes warning for unsafe statement.
|
||||
--disable_warnings
|
||||
--error 0,1317,2013
|
||||
reap;
|
||||
--enable_warnings
|
||||
connection master1;
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM test.t4 ORDER BY a;
|
||||
|
@ -1,7 +1,12 @@
|
||||
source include/master-slave.inc;
|
||||
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
|
||||
create table t1(n int);
|
||||
# Use of get_lock gives a warning for unsafeness if binlog_format=statement
|
||||
--disable_warnings
|
||||
insert into t1 values(get_lock("lock",2));
|
||||
--enable_warnings
|
||||
dirty_close master;
|
||||
connection master1;
|
||||
select get_lock("lock",2);
|
||||
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--secure-file-priv=$MYSQLTEST_VARDIR/std_data_master_link
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.sh
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.sh
Normal file
@ -0,0 +1 @@
|
||||
ln -s $MYSQLTEST_VARDIR/std_data $MYSQLTEST_VARDIR/std_data_master_link
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
--slave-load-tmpdir=$MYSQLTEST_VARDIR/std_data_slave_link
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.sh
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.sh
Normal file
@ -0,0 +1 @@
|
||||
ln -s $MYSQLTEST_VARDIR/std_data $MYSQLTEST_VARDIR/std_data_slave_link
|
20
mysql-test/suite/rpl/t/rpl_loaddata_symlink.test
Normal file
20
mysql-test/suite/rpl/t/rpl_loaddata_symlink.test
Normal file
@ -0,0 +1,20 @@
|
||||
#
|
||||
# BUG#43913
|
||||
# This test verifies if loading data infile will work fine
|
||||
# if the path of the load data file is a symbolic link.
|
||||
#
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_statement.inc
|
||||
|
||||
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;
|
||||
select * from t1;
|
||||
|
||||
sync_slave_with_master;
|
||||
connection slave;
|
||||
select * from t1;
|
||||
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_slave_with_master;
|
||||
|
53
mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test
Normal file
53
mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test
Normal file
@ -0,0 +1,53 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test that nondeterministic system functions are correctly replicated.
|
||||
#
|
||||
# (Some functions are only correctly replicated if binlog_format=MIXED
|
||||
# or ROW. See binlog_unsafe.test for a test that those variables are
|
||||
# indeed unsafe.)
|
||||
#
|
||||
# ==== Implementation ====
|
||||
#
|
||||
# We insert the values of each unsafe function into a table. Then we
|
||||
# replicate and check that the table is identical on slave.
|
||||
#
|
||||
# ==== Related bugs ====
|
||||
#
|
||||
# BUG#47995
|
||||
|
||||
--source include/master-slave.inc
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(1000));
|
||||
|
||||
# We replicate the connection_id in the query_log_event
|
||||
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||
--connection master1
|
||||
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||
|
||||
# We replicate the TIMESTAMP variable, so the following functions that
|
||||
# are affected by the TIMESTAMP variable should be safe to replicate.
|
||||
INSERT INTO t1 VALUES
|
||||
(CURDATE()),
|
||||
(CURRENT_DATE()),
|
||||
(CURRENT_TIME()),
|
||||
(CURRENT_TIMESTAMP()),
|
||||
(CURTIME()),
|
||||
(LOCALTIME()),
|
||||
(LOCALTIMESTAMP()),
|
||||
(NOW()),
|
||||
(UNIX_TIMESTAMP()),
|
||||
(UTC_DATE()),
|
||||
(UTC_TIME()),
|
||||
(UTC_TIMESTAMP());
|
||||
|
||||
# We replicate the random seed in a rand_log_event
|
||||
INSERT INTO t1 VALUES (RAND());
|
||||
# We replicate the last_insert_id in an intvar_log_event
|
||||
INSERT INTO t1 VALUES (LAST_INSERT_ID());
|
||||
|
||||
--sync_slave_with_master
|
||||
--let $diff_table_1= master:test.t1
|
||||
--let $diff_table_2= slave:test.t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
DROP TABLE t1;
|
@ -300,4 +300,40 @@ connection master;
|
||||
DROP DATABASE mysqltest1;
|
||||
sync_slave_with_master;
|
||||
|
||||
#
|
||||
# BUG#48506: crash in CREATE TABLE <existing_view> IF NOT EXISTS LIKE
|
||||
# <tmp_tbl> with RBL
|
||||
#
|
||||
|
||||
source include/master-slave-reset.inc;
|
||||
|
||||
connection master;
|
||||
CREATE TEMPORARY TABLE t7(c1 INT);
|
||||
CREATE TABLE t5(c1 INT);
|
||||
CREATE TABLE t4(c1 INT);
|
||||
CREATE VIEW bug48506_t1 AS SELECT 1;
|
||||
CREATE VIEW bug48506_t2 AS SELECT * FROM t4;
|
||||
CREATE VIEW bug48506_t3 AS SELECT t5.c1 AS A, t4.c1 AS B FROM t5, t4;
|
||||
CREATE TABLE bug48506_t4(c1 INT);
|
||||
--disable_warnings
|
||||
sync_slave_with_master;
|
||||
DROP VIEW bug48506_t1, bug48506_t2, bug48506_t3;
|
||||
DROP TABLE bug48506_t4;
|
||||
|
||||
connection master;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t1 LIKE t7;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t2 LIKE t7;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t3 LIKE t7;
|
||||
CREATE TABLE IF NOT EXISTS bug48506_t4 LIKE t7;
|
||||
--enable_warnings
|
||||
sync_slave_with_master;
|
||||
|
||||
SHOW TABLES LIKE 'bug48506%';
|
||||
|
||||
connection master;
|
||||
DROP VIEW IF EXISTS bug48506_t1, bug48506_t2, bug48506_t3;
|
||||
DROP TEMPORARY TABLES t7;
|
||||
DROP TABLES t4, t5;
|
||||
DROP TABLES IF EXISTS bug48506_t4;
|
||||
source include/master-slave-end.inc;
|
||||
--echo end of the tests
|
||||
|
35
mysql-test/suite/rpl/t/rpl_row_trunc_temp.test
Normal file
35
mysql-test/suite/rpl/t/rpl_row_trunc_temp.test
Normal file
@ -0,0 +1,35 @@
|
||||
#
|
||||
# Bug#48350 truncate temporary table crashes replication
|
||||
#
|
||||
# All statements operating on temporary tables should not be binlogged in RBR.
|
||||
# However, before fix of bug#48350, 'TRUNCATE ...' statement on a temporary
|
||||
# table was binlogged in RBR.
|
||||
#
|
||||
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_row.inc
|
||||
|
||||
#This statement is not binlogged in RBR.
|
||||
CREATE TEMPORARY TABLE t1(c1 INTEGER);
|
||||
CREATE TABLE t2(c1 INTEGER);
|
||||
sync_slave_with_master;
|
||||
|
||||
CREATE TABLE t1(c1 INTEGER);
|
||||
INSERT INTO t1 VALUES(1), (2);
|
||||
INSERT INTO t2 VALUES(1), (2);
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
connection master;
|
||||
TRUNCATE t1;
|
||||
TRUNCATE t2;
|
||||
sync_slave_with_master;
|
||||
# t1 will have nothing, if 'TRUNCATE t1' has been replicate from master to
|
||||
# slave.
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
DROP TABLE t1;
|
||||
connection master;
|
||||
DROP TABLE t2;
|
||||
--source include/master-slave-end.inc
|
@ -20,11 +20,13 @@
|
||||
# prevents logging slow queries in a connection 'extra'
|
||||
#
|
||||
# OBS:
|
||||
# This test only runs for statement and mixed binlogging firmat because on
|
||||
# row format slow queries do not get slow query logged.
|
||||
# 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_mixed_or_statement.inc;
|
||||
source include/have_binlog_format_statement.inc;
|
||||
|
||||
|
||||
# Prepare slave for different long_query_time we need to stop the slave
|
||||
@ -55,7 +57,9 @@ 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'`;
|
||||
|
@ -5,6 +5,8 @@
|
||||
--source include/have_binlog_format_mixed_or_statement.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
@ -91,7 +93,11 @@ end
|
||||
|
|
||||
|
||||
delimiter ;|
|
||||
# The trigger causes a warning for unsafe statement when
|
||||
# binlog_format=statement since it uses get_lock.
|
||||
--disable_warnings
|
||||
insert into t1 set a = now();
|
||||
--enable_warnings
|
||||
select a=b && a=c from t1;
|
||||
let $time=`select a from t1`;
|
||||
|
||||
@ -137,7 +143,11 @@ disconnect con2;
|
||||
truncate table t1;
|
||||
drop trigger t1_first;
|
||||
|
||||
# The trigger causes a warning for unsafe statement when
|
||||
# binlog_format=statement since it uses get_lock.
|
||||
--disable_warnings
|
||||
insert into t1 values ("2003-03-03","2003-03-03","2003-03-03"),(bug12480(),bug12480(),bug12480()),(now(),now(),now());
|
||||
--enable_warnings
|
||||
select a=b && a=c from t1;
|
||||
|
||||
drop function bug12480;
|
||||
|
Reference in New Issue
Block a user