mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
BUG#33862 completely failed DROP USER statement gets replicated
The problem is when create/rename/drop users, the statement was logged regardless of error, even if no data has been changed, the statement was logged. After this patch, create/rename/drop users don't write the binlog if the statement makes no changes, if the statement does make any changes, log the statement with possible error code. This patch is based on the patch for BUG#29749, which is not pushed sql/sql_acl.cc: when create/rename/drop users, don't write the binlog if the statement make no changes mysql-test/r/rpl_user.result: New BitKeeper file ``mysql-test/r/rpl_user.result'' mysql-test/t/rpl_user.test: New BitKeeper file ``mysql-test/t/rpl_user.test''
This commit is contained in:
42
mysql-test/r/rpl_user.result
Normal file
42
mysql-test/r/rpl_user.result
Normal file
@ -0,0 +1,42 @@
|
||||
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;
|
||||
reset master;
|
||||
delete from mysql.user where Host='fakehost';
|
||||
create user 'foo'@'fakehost';
|
||||
create user 'foo'@'fakehost', 'bar'@'fakehost';
|
||||
ERROR HY000: Operation CREATE USER failed for 'foo'@'fakehost'
|
||||
create user 'foo'@'fakehost', 'bar'@'fakehost';
|
||||
ERROR HY000: Operation CREATE USER failed for 'foo'@'fakehost','bar'@'fakehost'
|
||||
select Host,User from mysql.user where Host='fakehost';
|
||||
Host User
|
||||
fakehost bar
|
||||
fakehost foo
|
||||
rename user 'foo'@'fakehost' to 'foofoo'@'fakehost';
|
||||
rename user 'not_exist_user1'@'fakehost' to 'foobar'@'fakehost', 'bar'@'fakehost' to 'barbar'@'fakehost';
|
||||
ERROR HY000: Operation RENAME USER failed for 'not_exist_user1'@'fakehost'
|
||||
rename user 'not_exist_user1'@'fakehost' to 'foobar'@'fakehost', 'not_exist_user2'@'fakehost' to 'barfoo'@'fakehost';
|
||||
ERROR HY000: Operation RENAME USER failed for 'not_exist_user1'@'fakehost','not_exist_user2'@'fakehost'
|
||||
select Host,User from mysql.user where Host='fakehost';
|
||||
Host User
|
||||
fakehost barbar
|
||||
fakehost foofoo
|
||||
drop user 'foofoo'@'fakehost';
|
||||
drop user 'not_exist_user1'@'fakehost', 'barbar'@'fakehost';
|
||||
ERROR HY000: Operation DROP USER failed for 'not_exist_user1'@'fakehost'
|
||||
drop user 'not_exist_user1'@'fakehost', 'not_exist_user2'@'fakehost';
|
||||
ERROR HY000: Operation DROP USER failed for 'not_exist_user1'@'fakehost','not_exist_user2'@'fakehost'
|
||||
select Host,User from mysql.user where Host='fakehost';
|
||||
Host User
|
||||
show binlog events from 98;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 98 Query 1 # use `test`; delete from mysql.user where Host='fakehost'
|
||||
master-bin.000001 205 Query 1 # use `test`; create user 'foo'@'fakehost'
|
||||
master-bin.000001 296 Query 1 # use `test`; create user 'foo'@'fakehost', 'bar'@'fakehost'
|
||||
master-bin.000001 405 Query 1 # use `test`; rename user 'foo'@'fakehost' to 'foofoo'@'fakehost'
|
||||
master-bin.000001 519 Query 1 # use `test`; rename user 'not_exist_user1'@'fakehost' to 'foobar'@'fakehost', 'bar'@'fakehost' to 'barbar'@'fakehost'
|
||||
master-bin.000001 686 Query 1 # use `test`; drop user 'foofoo'@'fakehost'
|
||||
master-bin.000001 778 Query 1 # use `test`; drop user 'not_exist_user1'@'fakehost', 'barbar'@'fakehost'
|
Reference in New Issue
Block a user