mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 11:27:39 +02:00
Merge 10.2 into 10.3
This commit is contained in:
commit
020e7d89eb
25 changed files with 326 additions and 118 deletions
|
|
@ -0,0 +1,7 @@
|
|||
CREATE TABLE t1 (a int);
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
# timeout TIMEOUT MYSQL_BINLOG --raw --read-from-remote-server --user=root --host=127.0.0.1 --port=MASTER_MYPORT --stop-never --result-file=MYSQLTEST_VARDIR/tmp/ master-bin.000001
|
||||
# MYSQL_BINLOG MYSQLTEST_VARDIR/tmp/master-bin.000002 > MYSQLTEST_VARDIR/tmp/local-bin.000002.out
|
||||
FOUND 1 /GTID 0-1-2/ in local-bin.000002.out
|
||||
DROP TABLE t1;
|
||||
45
mysql-test/suite/binlog/t/binlog_mysqlbinlog_raw_flush.test
Normal file
45
mysql-test/suite/binlog/t/binlog_mysqlbinlog_raw_flush.test
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#
|
||||
# Purpose:
|
||||
# When using mariadb-binlog with options for --raw and --stop-never, events
|
||||
# from the master's currently active log file should be written to their
|
||||
# respective log file specified by --result-file, and shown on-disk. This test
|
||||
# ensures that the log files on disk, created by mariadb-binlog, have the most
|
||||
# up-to-date events from the master.
|
||||
#
|
||||
# Methodology:
|
||||
# On the master, rotate to a newly active binlog file and write an event to
|
||||
# it. Read the master's binlog using mariadb-binlog with --raw and --stop-never
|
||||
# and write the data to an intermediary binlog file (a timeout is used on this
|
||||
# command to ensure it exits). Read the local intermediary binlog file to ensure
|
||||
# that the master's most recent event exists in the local file.
|
||||
#
|
||||
# References:
|
||||
# MDEV-14608: mysqlbinlog lastest backupfile size is 0
|
||||
#
|
||||
|
||||
--source include/linux.inc
|
||||
--source include/have_log_bin.inc
|
||||
|
||||
# Create newly active log
|
||||
CREATE TABLE t1 (a int);
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
# Read binlog data from master to intermediary result file
|
||||
--let TIMEOUT=1
|
||||
--echo # timeout TIMEOUT MYSQL_BINLOG --raw --read-from-remote-server --user=root --host=127.0.0.1 --port=MASTER_MYPORT --stop-never --result-file=MYSQLTEST_VARDIR/tmp/ master-bin.000001
|
||||
--error 124 # Error 124 means timeout was reached
|
||||
--exec timeout $TIMEOUT $MYSQL_BINLOG --raw --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --stop-never --result-file=$MYSQLTEST_VARDIR/tmp/ master-bin.000001
|
||||
|
||||
# Ensure the binlog output has the most recent events from the master
|
||||
--echo # MYSQL_BINLOG MYSQLTEST_VARDIR/tmp/master-bin.000002 > MYSQLTEST_VARDIR/tmp/local-bin.000002.out
|
||||
--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/tmp/master-bin.000002 > $MYSQLTEST_VARDIR/tmp/local-bin.000002.out
|
||||
--let SEARCH_PATTERN= GTID 0-1-2
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/local-bin.000002.out
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
# Cleanup
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/master-bin.000001
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/master-bin.000002
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/local-bin.000002.out
|
||||
30
mysql-test/suite/rpl/r/mdev_24667.result
Normal file
30
mysql-test/suite/rpl/r/mdev_24667.result
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
include/rpl_init.inc [topology=1->2->3]
|
||||
call mtr.add_suppression('Unsafe statement written to the binary log using ');
|
||||
connection server_1;
|
||||
set binlog_format=statement;
|
||||
#first bug
|
||||
create table t1 (a int);
|
||||
create temporary table tmp like t1;
|
||||
load data local infile 'MYSQLTEST_VARDIR/load_data' INTO TABLE tmp;
|
||||
insert into t1 select * from tmp;
|
||||
#second bug
|
||||
create table t2 (a int);
|
||||
create temporary table tmp2 like t2;
|
||||
insert into tmp2 values(10);
|
||||
update tmp2 set a = 20 limit 1;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted
|
||||
insert into t2 select * from tmp2;
|
||||
connection server_2;
|
||||
connection server_3;
|
||||
#t1 should have 2 rows
|
||||
select count(*) = 2 from t1;
|
||||
count(*) = 2
|
||||
1
|
||||
#t2 should have 1 rows with a = 20
|
||||
select * from t2;
|
||||
a
|
||||
20
|
||||
connection server_1;
|
||||
drop table t1, t2, tmp, tmp2;
|
||||
include/rpl_end.inc
|
||||
8
mysql-test/suite/rpl/t/mdev_24667.cnf
Normal file
8
mysql-test/suite/rpl/t/mdev_24667.cnf
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
!include ../my.cnf
|
||||
|
||||
[mysqld.3]
|
||||
log-slave-updates
|
||||
|
||||
[ENV]
|
||||
SERVER_MYPORT_3= @mysqld.3.port
|
||||
SERVER_MYSOCK_3= @mysqld.3.socket
|
||||
56
mysql-test/suite/rpl/t/mdev_24667.test
Normal file
56
mysql-test/suite/rpl/t/mdev_24667.test
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#
|
||||
# MDEV-24667 LOAD DATA INFILE/inserted rows not written to binlog
|
||||
#
|
||||
# In this test we will have a replication configuration like 1->2->3
|
||||
# 1 will have statement format
|
||||
# 2 and 3 will have mixed format
|
||||
# We will make some updates on temporary table which are unsafe , So 2 must
|
||||
# Log these queries in row format, Since it is on tmp table , It wont be logged
|
||||
# So the next query which copies the data from tmp table to normal must be logged
|
||||
# into the row format. Instead of checking for the binlog We will compare the
|
||||
# results on the 3, If no binlog is lost(ie it is logged into row format), There
|
||||
# should not be any data loss.
|
||||
--let $rpl_topology=1->2->3
|
||||
--source include/rpl_init.inc
|
||||
--source include/have_binlog_format_mixed.inc
|
||||
call mtr.add_suppression('Unsafe statement written to the binary log using ');
|
||||
--connection server_1
|
||||
|
||||
set binlog_format=statement;
|
||||
--echo #first bug
|
||||
create table t1 (a int);
|
||||
create temporary table tmp like t1;
|
||||
--write_file $MYSQLTEST_VARDIR/load_data
|
||||
1
|
||||
2
|
||||
EOF
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval load data local infile '$MYSQLTEST_VARDIR/load_data' INTO TABLE tmp;
|
||||
insert into t1 select * from tmp;
|
||||
|
||||
--echo #second bug
|
||||
create table t2 (a int);
|
||||
#insert into t2 values(10);
|
||||
create temporary table tmp2 like t2;
|
||||
insert into tmp2 values(10);
|
||||
update tmp2 set a = 20 limit 1;
|
||||
insert into t2 select * from tmp2;
|
||||
--save_master_pos
|
||||
|
||||
--connection server_2
|
||||
--sync_with_master
|
||||
--save_master_pos
|
||||
|
||||
--connection server_3
|
||||
--sync_with_master
|
||||
--echo #t1 should have 2 rows
|
||||
select count(*) = 2 from t1;
|
||||
--echo #t2 should have 1 rows with a = 20
|
||||
select * from t2;
|
||||
|
||||
|
||||
# cleanup
|
||||
--connection server_1
|
||||
drop table t1, t2, tmp, tmp2;
|
||||
--remove_file $MYSQLTEST_VARDIR/load_data
|
||||
--source include/rpl_end.inc
|
||||
Loading…
Add table
Add a link
Reference in a new issue