mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-28 17:15:19 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			151 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| source include/master-slave.inc;
 | ||
| 
 | ||
| #
 | ||
| # BUG#16487
 | ||
| #  
 | ||
| # Requirement:
 | ||
| # Multi-updates on ignored tables should not fail even if the slave does 
 | ||
| # not have the ignored tables.
 | ||
| #
 | ||
| # Note table t1, t2, and t3 are ignored in the option file to this test.
 | ||
| #
 | ||
| 
 | ||
| --echo **** Test case for BUG#16487 ****
 | ||
| --echo **** Master ****
 | ||
| connection master;
 | ||
| CREATE TABLE test.t4 (a int);
 | ||
| CREATE TABLE test.t1 (a int);
 | ||
| 
 | ||
| # Expect: The row must *not* by updated on slave, since t1 is ignored
 | ||
| UPDATE test.t4 NATURAL JOIN test.t1 SET t1.a=5;
 | ||
| 
 | ||
| --echo **** Slave ****
 | ||
| sync_slave_with_master;
 | ||
| SELECT * FROM t4;
 | ||
| 
 | ||
| connection master;
 | ||
| DROP TABLE t1;
 | ||
| DROP TABLE t4;
 | ||
| 
 | ||
| 
 | ||
| #
 | ||
| # Bug#25482 GRANT statements are not replicated if
 | ||
| # you use "replicate-ignore-table"
 | ||
| #
 | ||
| 
 | ||
| --echo **** Test case for BUG#25482 ****
 | ||
| --echo **** Adding GRANTS on master ****
 | ||
| 
 | ||
| connection master;
 | ||
| create table test.t1(a int);
 | ||
| create table test.t4(a int);
 | ||
| 
 | ||
| # Simple user that should not replicate
 | ||
| GRANT SELECT ON test.t1 TO mysqltest1@localhost;
 | ||
| 
 | ||
| # Partial replicate
 | ||
| GRANT INSERT ON test.t4 TO mysqltest2@localhost;
 | ||
| GRANT select, update, insert, references on t1
 | ||
|   to mysqltest2@localhost;
 | ||
| 
 | ||
| # Partial replicate 2
 | ||
| GRANT SELECT ON test.* TO mysqltest3@localhost;
 | ||
| GRANT INSERT ON test.t4 TO mysqltest3@localhost;
 | ||
| GRANT select(a), update(a), insert(a), references(a) on t4
 | ||
|   to mysqltest3@localhost;
 | ||
| 
 | ||
| # Create another database and table
 | ||
| create database mysqltest2;
 | ||
| create table mysqltest2.t2 (id int);
 | ||
| # Create a grant that should replicate
 | ||
| GRANT SELECT ON mysqltest2.t2 TO mysqltest4@localhost IDENTIFIED BY 'pass';
 | ||
| 
 | ||
| # Create a grant manually
 | ||
| insert into mysql.user (user, host) values ("mysqltest5", "somehost");
 | ||
| 
 | ||
| # Partial replicate 3 with *.*
 | ||
| GRANT SELECT ON *.* TO mysqltest6@localhost;
 | ||
| GRANT INSERT ON *.* TO mysqltest6@localhost;
 | ||
| GRANT INSERT ON test.* TO mysqltest6@localhost;
 | ||
| GRANT INSERT ON test.t1 TO mysqltest6@localhost;
 | ||
| 
 | ||
| show grants for mysqltest1@localhost;
 | ||
| show grants for mysqltest2@localhost;
 | ||
| show grants for mysqltest3@localhost;
 | ||
| show grants for mysqltest4@localhost;
 | ||
| show grants for mysqltest6@localhost;
 | ||
| 
 | ||
| flush privileges;
 | ||
| show grants for mysqltest5@somehost;
 | ||
| 
 | ||
| 
 | ||
| sync_slave_with_master;
 | ||
| 
 | ||
| --echo **** Checking grants on slave ****
 | ||
| 
 | ||
| # Check that grants are replicated to slave
 | ||
| show grants for mysqltest2@localhost;
 | ||
| show grants for mysqltest3@localhost;
 | ||
| show grants for mysqltest4@localhost;
 | ||
| show grants for mysqltest5@somehost;
 | ||
| show grants for mysqltest6@localhost;
 | ||
| 
 | ||
| # mysqltest1 should not be on slave
 | ||
| --error 1141
 | ||
| show grants for mysqltest1@localhost;
 | ||
| 
 | ||
| --echo **** Revoking grants on master ****
 | ||
| connection master;
 | ||
| REVOKE SELECT ON test.t1 FROM mysqltest1@localhost;
 | ||
| REVOKE SELECT ON mysqltest2.t2 FROM mysqltest4@localhost;
 | ||
| REVOKE select(a) on t4
 | ||
|  from mysqltest3@localhost;
 | ||
| 
 | ||
| show grants for mysqltest1@localhost;
 | ||
| show grants for mysqltest3@localhost;
 | ||
| show grants for mysqltest4@localhost;
 | ||
| 
 | ||
| sync_slave_with_master;
 | ||
| 
 | ||
| --echo **** Checking grants on slave ****
 | ||
| 
 | ||
| # mysqltest1 should not be on slave
 | ||
| --error 1141
 | ||
| show grants for mysqltest1@localhost;
 | ||
| show grants for mysqltest3@localhost;
 | ||
| show grants for mysqltest4@localhost;
 | ||
| 
 | ||
| # Cleanup
 | ||
| connection master;
 | ||
| drop table t1, t4, mysqltest2.t2;
 | ||
| drop database mysqltest2;
 | ||
| delete from mysql.user where user like "mysqltest%";
 | ||
| delete from mysql.db where user like "mysqltest%";
 | ||
| delete from mysql.tables_priv where user like "mysqltest%";
 | ||
| delete from mysql.columns_priv where user like "mysqltest%";
 | ||
| sync_slave_with_master;
 | ||
| 
 | ||
| connection master;
 | ||
| 
 | ||
| #
 | ||
| # bug#22877 replication character sets get out of sync
 | ||
| # using replicate-wild-ignore-table
 | ||
| #
 | ||
| --disable_warnings
 | ||
| DROP TABLE IF EXISTS t5;
 | ||
| --enable_warnings
 | ||
| CREATE TABLE t5 (
 | ||
|  word varchar(50) collate utf8_unicode_ci NOT NULL default ''
 | ||
| ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 | ||
| SET @@session.character_set_client=33,@@session.collation_connection=192;
 | ||
| CREATE TEMPORARY TABLE tmptbl504451f4258$1 (id INT NOT NULL) ENGINE=MEMORY;
 | ||
| INSERT INTO t5 (word)  VALUES ('TEST’');
 | ||
| SELECT HEX(word) FROM t5;
 | ||
| sync_slave_with_master;
 | ||
| connection slave;
 | ||
| SELECT HEX(word) FROM t5;
 | ||
| --error 1146
 | ||
| SELECT * FROM tmptbl504451f4258$1;
 | ||
| connection master;
 | ||
| DROP TABLE t5;
 | 
