Skip to content

Commit f392edd

Browse files
author
Alexander Nozdrin
committed
Revert a patch for Bug#48231, which introduced valgrind warnings.
Original revision: ------------------------------------------------------------ revision-id: li-bing.song@sun.com-20100130124925-o6sfex42b6noyc6x parent: joro@sun.com-20100129145427-0n79l9hnk0q43ajk committer: <Li-Bing.Song@sun.com> branch nick: mysql-5.1-bugteam timestamp: Sat 2010-01-30 20:49:25 +0800 message: Bug #48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER; REVOKE/GRANT; ALTER EVENT. The following statements support the CURRENT_USER() where a user is needed. DROP USER RENAME USER CURRENT_USER() ... GRANT ... TO CURRENT_USER() REVOKE ... FROM CURRENT_USER() ALTER DEFINER = CURRENT_USER() EVENT but, When these statements are binlogged, CURRENT_USER() just is binlogged as 'CURRENT_USER()', it is not expanded to the real user name. When slave executes the log event, 'CURRENT_USER()' is expand to the user of slave SQL thread, but SQL thread's user name always NULL. This breaks the replication. After this patch, All above statements are rewritten when they are binlogged. The CURRENT_USER() is expanded to the real user's name and host. ------------------------------------------------------------
1 parent 1a6ab22 commit f392edd

13 files changed

+104
-2319
lines changed

mysql-test/extra/rpl_tests/rpl_current_user.test

-127
This file was deleted.

mysql-test/suite/rpl/r/rpl_binlog_grant.result

+22-20
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@ show grants for x@y;
1717
Grants for x@y
1818
GRANT USAGE ON *.* TO 'x'@'y'
1919
GRANT SELECT ON `d1`.`t` TO 'x'@'y'
20-
show binlog events from <binlog_start>;
20+
show binlog events;
2121
Log_name Pos Event_type Server_id End_log_pos Info
22-
master-bin.000001 # Query # # drop database if exists d1
23-
master-bin.000001 # Query # # create database d1
24-
master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb
25-
master-bin.000001 # Query # # BEGIN
26-
master-bin.000001 # Query # # use `d1`; insert into t values (1)
27-
master-bin.000001 # Xid # # COMMIT /* XID */
28-
master-bin.000001 # Query # # use `d1`; grant select on t to 'x'@'y'
22+
master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4
23+
master-bin.000001 106 Query 1 193 drop database if exists d1
24+
master-bin.000001 193 Query 1 272 create database d1
25+
master-bin.000001 272 Query 1 370 use `d1`; create table t (s1 int) engine=innodb
26+
master-bin.000001 370 Query 1 436 BEGIN
27+
master-bin.000001 436 Query 1 521 use `d1`; insert into t values (1)
28+
master-bin.000001 521 Xid 1 548 COMMIT /* XID */
29+
master-bin.000001 548 Query 1 633 use `d1`; grant select on t to x@y
2930
start transaction;
3031
insert into t values (2);
3132
revoke select on t from x@y;
@@ -37,18 +38,19 @@ s1
3738
show grants for x@y;
3839
Grants for x@y
3940
GRANT USAGE ON *.* TO 'x'@'y'
40-
show binlog events from <binlog_start>;
41+
show binlog events;
4142
Log_name Pos Event_type Server_id End_log_pos Info
42-
master-bin.000001 # Query # # drop database if exists d1
43-
master-bin.000001 # Query # # create database d1
44-
master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb
45-
master-bin.000001 # Query # # BEGIN
46-
master-bin.000001 # Query # # use `d1`; insert into t values (1)
47-
master-bin.000001 # Xid # # COMMIT /* XID */
48-
master-bin.000001 # Query # # use `d1`; grant select on t to 'x'@'y'
49-
master-bin.000001 # Query # # BEGIN
50-
master-bin.000001 # Query # # use `d1`; insert into t values (2)
51-
master-bin.000001 # Xid # # COMMIT /* XID */
52-
master-bin.000001 # Query # # use `d1`; revoke select on t from 'x'@'y'
43+
master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4
44+
master-bin.000001 106 Query 1 193 drop database if exists d1
45+
master-bin.000001 193 Query 1 272 create database d1
46+
master-bin.000001 272 Query 1 370 use `d1`; create table t (s1 int) engine=innodb
47+
master-bin.000001 370 Query 1 436 BEGIN
48+
master-bin.000001 436 Query 1 521 use `d1`; insert into t values (1)
49+
master-bin.000001 521 Xid 1 548 COMMIT /* XID */
50+
master-bin.000001 548 Query 1 633 use `d1`; grant select on t to x@y
51+
master-bin.000001 633 Query 1 699 BEGIN
52+
master-bin.000001 699 Query 1 784 use `d1`; insert into t values (2)
53+
master-bin.000001 784 Xid 1 811 COMMIT /* XID */
54+
master-bin.000001 811 Query 1 899 use `d1`; revoke select on t from x@y
5355
drop user x@y;
5456
drop database d1;

mysql-test/suite/rpl/r/rpl_events.result

-42
Original file line numberDiff line numberDiff line change
@@ -251,45 +251,3 @@ DROP EVENT event44331_1;
251251
DROP EVENT event44331_2;
252252
DROP EVENT event44331_3;
253253
DROP EVENT event44331_4;
254-
DROP VIEW IF EXISTS events_view;
255-
DROP EVENT IF EXISTS event48321_1;
256-
DROP EVENT IF EXISTS event48321_2;
257-
DROP EVENT IF EXISTS event48321_3;
258-
DROP EVENT IF EXISTS event48321_4;
259-
CREATE VIEW events_view AS
260-
SELECT EVENT_SCHEMA, EVENT_NAME, DEFINER FROM INFORMATION_SCHEMA.EVENTS
261-
WHERE EVENT_NAME LIKE 'event48321%';
262-
CREATE DEFINER=CURRENT_USER() /*!50000 EVENT event48321_1 */
263-
ON SCHEDULE AT CURRENT_TIMESTAMP
264-
ON COMPLETION PRESERVE DISABLE
265-
DO SELECT 48321 as BUG;
266-
CREATE DEFINER=CURRENT_USER() EVENT event48321_2
267-
ON SCHEDULE AT CURRENT_TIMESTAMP
268-
ON COMPLETION PRESERVE DISABLE
269-
DO SELECT 48321 as BUG;
270-
CREATE /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
271-
ON SCHEDULE AT CURRENT_TIMESTAMP
272-
ON COMPLETION PRESERVE DISABLE
273-
DO SELECT 48321 as BUG;
274-
Comparing tables master:test.events_view and slave:test.events_view
275-
ALTER DEFINER=CURRENT_USER() EVENT event48321_1 RENAME TO event48321_4;
276-
ALTER DEFINER=CURRENT_USER() EVENT event48321_2
277-
ON SCHEDULE AT CURRENT_TIMESTAMP
278-
ON COMPLETION PRESERVE DISABLE
279-
DO SELECT 48321 as BUG;
280-
ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
281-
ON SCHEDULE AT CURRENT_TIMESTAMP
282-
ON COMPLETION PRESERVE DISABLE
283-
DO SELECT 48321 as BUG;
284-
Comparing tables master:test.events_view and slave:test.events_view
285-
ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
286-
ON SCHEDULE AT CURRENT_TIMESTAMP
287-
ON COMPLETION PRESERVE DISABLE
288-
DO SELECT 48321 as BUG; ALTER EVENT event48321_2 ENABLE |
289-
Comparing tables master:test.events_view and slave:test.events_view
290-
ALTER EVENT event48321_3 ENABLE;
291-
Comparing tables master:test.events_view and slave:test.events_view
292-
DROP EVENT event48321_4;
293-
DROP EVENT event48321_2;
294-
DROP EVENT event48321_3;
295-
DROP VIEW events_view;

mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result

+2-2
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat
750750
USE test_rpl;
751751
SHOW EVENTS;
752752
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
753-
test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
753+
test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
754754
==========MASTER==========
755755
SELECT COUNT(*) FROM t1;
756756
COUNT(*)
@@ -1079,7 +1079,7 @@ master-bin.000001 # Query 1 # BEGIN
10791079
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
10801080
master-bin.000001 # Xid 1 # #
10811081
master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
1082-
master-bin.000001 # Query 1 # use `test_rpl`; ALTER DEFINER=`root`@`localhost` EVENT e1 RENAME TO e2
1082+
master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2
10831083
master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2
10841084
master-bin.000001 # Query 1 # BEGIN
10851085
master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1

mysql-test/suite/rpl/r/rpl_sp.result

+8-8
Original file line numberDiff line numberDiff line change
@@ -433,9 +433,9 @@ master-bin.000001 # Query 1 # use `mysqltest1`; create table t2 like t1
433433
master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
434434
DETERMINISTIC
435435
insert into t1 values (15)
436-
master-bin.000001 # Query 1 # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to 'zedjzlcsjhd'@'127.0.0.1'
437-
master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT on mysqltest1.t1 to 'zedjzlcsjhd'@'127.0.0.1'
438-
master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to 'zedjzlcsjhd'@'127.0.0.1'
436+
master-bin.000001 # Query 1 # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
437+
master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
438+
master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
439439
master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
440440
DETERMINISTIC
441441
begin
@@ -510,7 +510,7 @@ select * from t1
510510
master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo
511511
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
512512
master-bin.000001 # Query 1 # drop database mysqltest1
513-
master-bin.000001 # Query 1 # DROP USER 'zedjzlcsjhd'@'127.0.0.1'
513+
master-bin.000001 # Query 1 # drop user "zedjzlcsjhd"@127.0.0.1
514514
master-bin.000001 # Query 1 # use `test`; drop function if exists f1
515515
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
516516
READS SQL DATA
@@ -675,13 +675,13 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
675675
insert into t1 values (15)
676676
/*!*/;
677677
SET TIMESTAMP=t/*!*/;
678-
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to 'zedjzlcsjhd'@'127.0.0.1'
678+
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
679679
/*!*/;
680680
SET TIMESTAMP=t/*!*/;
681-
grant SELECT on mysqltest1.t1 to 'zedjzlcsjhd'@'127.0.0.1'
681+
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
682682
/*!*/;
683683
SET TIMESTAMP=t/*!*/;
684-
grant SELECT, INSERT on mysqltest1.t2 to 'zedjzlcsjhd'@'127.0.0.1'
684+
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
685685
/*!*/;
686686
SET TIMESTAMP=t/*!*/;
687687
CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
@@ -842,7 +842,7 @@ SET TIMESTAMP=t/*!*/;
842842
drop database mysqltest1
843843
/*!*/;
844844
SET TIMESTAMP=t/*!*/;
845-
DROP USER 'zedjzlcsjhd'@'127.0.0.1'
845+
drop user "zedjzlcsjhd"@127.0.0.1
846846
/*!*/;
847847
use test/*!*/;
848848
SET TIMESTAMP=t/*!*/;

0 commit comments

Comments
 (0)