12
12
##############################################################################
13
source include/master-slave.inc;
14
14
source include/have_binlog_format_statement.inc;
18
connect (slave2,127.0.0.1,root,,test,$SLAVE_MYPORT1,);
21
--echo # Connect slave2 to slave
22
--replace_result $SLAVE_MYPORT SLAVE_MYPORT;
23
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT,
24
MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root';
26
source include/wait_for_slave_to_start.inc;
32
DROP VIEW IF EXISTS v_user;
33
DROP VIEW IF EXISTS v_tables_priv;
34
DROP VIEW IF EXISTS v_procs_priv;
35
DROP PROCEDURE IF EXISTS p1;
36
DROP PROCEDURE IF EXISTS my_grant;
37
DROP PROCEDURE IF EXISTS my_revoke;
38
DROP FUNCTION IF EXISTS my_user;
39
DROP EVENT IF EXISTS e1;
16
--let $rpl_topology= 1->2->3
17
--source include/rpl_init.inc
19
--let $rpl_connection_name= master
20
--let $rpl_server_number= 1
21
--source include/rpl_connect.inc
23
--let $rpl_connection_name= slave
24
--let $rpl_server_number= 2
25
--source include/rpl_connect.inc
41
29
CREATE TABLE t1(c1 char(100));
42
30
CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%';
43
31
CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%';
63
51
--echo # [On conn1]
64
52
--echo # Verify 'REVOKE ALL' statement
65
53
REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER();
66
let $diff_table= test.v_user;
67
let $diff_server_list= master, slave, slave2;
68
source include/rpl_diff_tables.inc;
54
--source include/rpl_sync.inc
55
let $diff_tables= server_1:v_user, server_2:v_user, server_3:v_user;
56
source include/diff_tables.inc;
71
59
--echo # Verify 'GRANT ... ON TABLE ...' statement
73
60
GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
74
let $diff_table= test.v_tables_priv;
75
source include/rpl_diff_tables.inc;
61
--source include/rpl_sync.inc
62
let $diff_tables= server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv;
63
source include/diff_tables.inc;
78
66
--echo # Verify 'GRANT ... ON PROCEDURE...' statement
80
67
GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER();
81
let $diff_table= test.v_procs_priv;
82
source include/rpl_diff_tables.inc;
68
--source include/rpl_sync.inc
69
let $diff_tables= server_1:v_procs_priv, server_2:v_procs_priv, server_3:v_procs_priv;
70
source include/diff_tables.inc;
85
73
--echo # Verify 'GRANT ... ON *.* ...' statement
87
74
GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION;
88
source include/rpl_diff_tables.inc;
75
--source include/rpl_sync.inc
76
let $diff_tables= server_1:v_procs_priv, server_2:v_procs_priv, server_3:v_procs_priv;
77
source include/diff_tables.inc;
91
80
--echo # Verify 'REVOKE ... ON TABLE ...' statement
93
81
REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
94
let $diff_table= test.v_tables_priv;
95
source include/rpl_diff_tables.inc;
82
--source include/rpl_sync.inc
83
let $diff_tables= server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv;
84
source include/diff_tables.inc;
98
87
--echo # Verify 'REVOKE ... ON PROCEDURE...' statement
100
88
REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER();
101
let $diff_table= test.v_procs_priv;
102
source include/rpl_diff_tables.inc;
89
--source include/rpl_sync.inc
90
let $diff_tables= server_1:v_procs_priv, server_2:v_procs_priv, server_3:v_procs_priv;
91
source include/diff_tables.inc;
105
94
--echo # Verify 'REVOKE ... ON *.* ...' statement
107
95
REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER();
108
let $diff_table= test.v_user;
109
source include/rpl_diff_tables.inc;
96
--source include/rpl_sync.inc
97
let $diff_tables= server_1:v_user, server_2:v_user, server_3:v_user;
98
source include/diff_tables.inc;
112
101
--echo # Verify 'GRANT ...' statement in the procedure
114
102
CREATE PROCEDURE my_grant()
115
103
GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
117
let $diff_table= test.v_tables_priv;
118
source include/rpl_diff_tables.inc;
105
--source include/rpl_sync.inc
106
let $diff_tables= server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv;
107
source include/diff_tables.inc;
121
110
--echo # Verify 'REVOKE ... ON TABLE ...' statement in the procedure
123
111
CREATE PROCEDURE my_revoke()
124
112
REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
126
let $diff_table= test.v_tables_priv;
127
source include/rpl_diff_tables.inc;
114
--source include/rpl_sync.inc
115
let $diff_tables= server_1:v_tables_priv, server_2:v_tables_priv, server_3:v_tables_priv;
116
source include/diff_tables.inc;
130
119
--echo # Verify 'RENAME USER ...' statement
132
120
RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost';
133
let $diff_table= test.v_user;
134
source include/rpl_diff_tables.inc;
121
--source include/rpl_sync.inc
122
let $diff_tables= server_1:v_user, server_2:v_user, server_3:v_user;
123
source include/diff_tables.inc;
136
125
disconnect conn1;
152
143
--echo # Explicitly assign CURRENT_USER() to definer
153
144
ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE;
154
let $diff_table= test.v_event;
155
source include/rpl_diff_tables.inc;
145
--source include/rpl_sync.inc
146
let $diff_tables= server_1:v_event, server_2:v_event, server_3:v_event;
147
source include/diff_tables.inc;
159
150
--echo # Session user will be set as definer, if the statement does not assign
160
151
--echo # a definer
161
152
ALTER EVENT e1 ENABLE;
162
sync_slave_with_master;
163
source include/rpl_diff_tables.inc;
153
--source include/rpl_sync.inc
154
let $diff_tables= server_1:v_event, server_2:v_event, server_3:v_event;
155
source include/diff_tables.inc;
166
158
--echo # Verify that this patch does not affect the calling of CURRENT_USER()