mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
0e763f4db5
--BINLOG-IGNORE-DB AND FULLY QUALIFIED TABLE Problem: ======= An ALTER TABLE statement is not written to binlog if server started with "--binlog-ignore-db some database" and 'fully qualified' table names are used in the ALTER TABLE statement altering table different from current database context. Analysis: ======== The above mentioned problem not only affects "ALTER TABLE" statements but also to all kind of statements. Once the current default database becomes "NULL" none of the statements will be binlogged. The current behaviour is such that if the user has specified restrictions on which database needs to be replicated and the default db is not specified, then do not replicate. This means that "NULL" is considered to be equivalent to everything (default db = null implied ignore don't log the statement). Fix: === "NULL" should not be considered as equivalent to everything. Since the filtering criteria is not equal to "NULL" the statement should be logged into binlog. mysql-test/suite/rpl/r/rpl_loaddata_m.result: Earlier when defalut database was "NULL" DROP TABLE was not getting logged. Post this fix it will be logged and the DROP will fail at slave as the table creation was skipped by master as --binlog-ignore-db=test. mysql-test/suite/rpl/t/rpl_loaddata_m.test: Earlier when defalut database was "NULL" DROP TABLE was not getting logged. Post this fix it will be logged and the DROP will fail at slave as the table creation was skipped by master as --binlog-ignore-db=test. sql/rpl_filter.cc: Replaced DBUG_RETURN(0) with DBUG_RETURN(1).
53 lines
1.3 KiB
Text
53 lines
1.3 KiB
Text
# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules
|
|
# exist.
|
|
# This is for BUG#1100 (LOAD DATA INFILE was half-logged).
|
|
######################################################
|
|
# Change Author: JBM
|
|
# Change Date: 2005-12-22
|
|
# Change: Test rewritten to remove show binlog events
|
|
# and to test the option better + Cleanup
|
|
######################################################
|
|
-- source include/master-slave.inc
|
|
|
|
--disable_warnings
|
|
drop database if exists mysqltest;
|
|
--enable_warnings
|
|
|
|
connection master;
|
|
# 'test' database should be ignored by the slave
|
|
USE test;
|
|
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
|
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE test.t1;
|
|
SELECT COUNT(*) FROM test.t1;
|
|
|
|
# 'mysqltest' database should NOT be ignored by the slave
|
|
CREATE DATABASE mysqltest;
|
|
USE mysqltest;
|
|
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
|
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
|
|
SELECT COUNT(*) FROM mysqltest.t1;
|
|
|
|
# Now lets check the slave to see what we have :-)
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
|
|
SHOW DATABASES;
|
|
|
|
USE test;
|
|
SHOW TABLES;
|
|
|
|
USE mysqltest;
|
|
SHOW TABLES;
|
|
SELECT COUNT(*) FROM mysqltest.t1;
|
|
|
|
#show binlog events;
|
|
|
|
# Cleanup
|
|
connection master;
|
|
DROP DATABASE mysqltest;
|
|
DROP TABLE IF EXISTS test.t1;
|
|
sync_slave_with_master;
|
|
|
|
# End of test
|
|
--source include/rpl_end.inc
|