2 # This test verify if executing DDL statement before trying to manipulate
3 # a temporary table causes row-based replication to break with error 'table
7 # CREATE TABLE when a temporary table is open.
8 CREATE TEMPORARY TABLE t1 (a INT);
9 EVAL CREATE TABLE t2 (a INT, b INT) ENGINE= $ENGINE_TYPE;
10 INSERT INTO t1 VALUES (1);
12 # CREATE EVENT when a temporary table is open.
13 CREATE EVENT e1 ON SCHEDULE EVERY 10 HOUR DO SELECT 1;
14 INSERT INTO t1 VALUES (1);
16 # ALTER EVENT when a temporary table is open.
17 ALTER EVENT e1 ON SCHEDULE EVERY 20 HOUR DO SELECT 1;
18 INSERT INTO t1 VALUES (1);
20 # DROP EVENT when a temporary table is open.
21 DROP EVENT IF EXISTS e1;
22 INSERT INTO t1 VALUES (1);
24 # CREATE PROCEDURE when a temporary table is open.
25 CREATE PROCEDURE p1() SELECT 1;
26 INSERT INTO t1 VALUES (1);
28 # Alter PROCEDURE when a temporary table is open.
29 ALTER PROCEDURE p1 SQL SECURITY INVOKER;
30 INSERT INTO t1 VALUES (1);
32 # CREATE FUNCTION when a temporary table is open.
33 CREATE FUNCTION f1() RETURNS INT RETURN 123;
34 INSERT INTO t1 VALUES (1);
36 # ALTER FUNCTION when a temporary table is open.
37 ALTER FUNCTION f1 SQL SECURITY INVOKER;
38 INSERT INTO t1 VALUES (1);
40 # CREATE DATABASE when a temporary table is open.
41 CREATE DATABASE mysqltest1;
42 INSERT INTO t1 VALUES (1);
44 # DROP DATABASE when a temporary table is open.
45 DROP DATABASE mysqltest1;
46 INSERT INTO t1 VALUES (1);
48 # CREATE USER when a temporary table is open.
49 CREATE USER test_1@localhost;
50 INSERT INTO t1 VALUES (1);
52 # GRANT select on table to user when a temporary table is open.
53 GRANT SELECT ON t2 TO test_1@localhost;
54 INSERT INTO t1 VALUES (1);
56 # GRANT all on function to user when a temporary table is open.
57 GRANT ALL ON f1 TO test_1@localhost;
58 INSERT INTO t1 VALUES (1);
60 # GRANT all on procedure to user when a temporary table is open.
61 GRANT ALL ON p1 TO test_1@localhost;
62 INSERT INTO t1 VALUES (1);
64 # GRANT usage on *.* to user when a temporary table is open.
65 GRANT USAGE ON *.* TO test_1@localhost;
66 INSERT INTO t1 VALUES (1);
68 # REVOKE ALL PRIVILEGES on function to user when a temporary table is open.
69 REVOKE ALL PRIVILEGES ON f1 FROM test_1@localhost;
70 INSERT INTO t1 VALUES (1);
72 # REVOKE ALL PRIVILEGES on procedure to user when a temporary table is open.
73 REVOKE ALL PRIVILEGES ON p1 FROM test_1@localhost;
74 INSERT INTO t1 VALUES (1);
76 # REVOKE ALL PRIVILEGES on table to user when a temporary table is open.
77 REVOKE ALL PRIVILEGES ON t2 FROM test_1@localhost;
78 INSERT INTO t1 VALUES (1);
80 # REVOKE usage on *.* from user when a temporary table is open.
81 REVOKE USAGE ON *.* FROM test_1@localhost;
82 INSERT INTO t1 VALUES (1);
84 # RENAME USER when a temporary table is open.
85 RENAME USER test_1@localhost TO test_2@localhost;
86 INSERT INTO t1 VALUES (1);
88 # DROP USER when a temporary table is open.
89 DROP USER test_2@localhost;
90 INSERT INTO t1 VALUES (1);
92 # Test ACL statement in sub statement
96 # CREATE USER when a temporary table is open.
97 CREATE TEMPORARY TABLE t3 (a INT);
98 CREATE USER test_2@localhost;
99 INSERT INTO t1 VALUES (1);
101 # GRANT select on table to user when a temporary table is open.
102 GRANT SELECT ON t2 TO test_2@localhost;
103 INSERT INTO t1 VALUES (1);
105 # GRANT all on function to user when a temporary table is open.
106 GRANT ALL ON f1 TO test_2@localhost;
107 INSERT INTO t1 VALUES (1);
109 # GRANT all on procedure to user when a temporary table is open.
110 GRANT ALL ON p1 TO test_2@localhost;
111 INSERT INTO t1 VALUES (1);
113 # GRANT usage on *.* to user when a temporary table is open.
114 GRANT USAGE ON *.* TO test_2@localhost;
115 INSERT INTO t1 VALUES (1);
117 # REVOKE ALL PRIVILEGES on function to user when a temporary table is open.
118 REVOKE ALL PRIVILEGES ON f1 FROM test_2@localhost;
119 INSERT INTO t1 VALUES (1);
121 # REVOKE ALL PRIVILEGES on procedure to user when a temporary table is open.
122 REVOKE ALL PRIVILEGES ON p1 FROM test_2@localhost;
123 INSERT INTO t1 VALUES (1);
125 # REVOKE ALL PRIVILEGES on table to user when a temporary table is open.
126 REVOKE ALL PRIVILEGES ON t2 FROM test_2@localhost;
127 INSERT INTO t1 VALUES (1);
129 # REVOKE usage on *.* from user when a temporary table is open.
130 REVOKE USAGE ON *.* FROM test_2@localhost;
131 INSERT INTO t1 VALUES (1);
133 # RENAME USER when a temporary table is open.
134 RENAME USER test_2@localhost TO test_3@localhost;
135 INSERT INTO t1 VALUES (1);
137 # DROP USER when a temporary table is open.
138 DROP USER test_3@localhost;
139 INSERT INTO t1 VALUES (1);
140 DROP TEMPORARY TABLE t3;
144 # DROP PROCEDURE when a temporary table is open.
146 INSERT INTO t1 VALUES (1);
148 INSERT INTO t1 VALUES (1);
150 # DROP FUNCTION when a temporary table is open.
152 INSERT INTO t1 VALUES (1);
154 # DROP TABLE when a temporary table is open.
156 INSERT INTO t1 VALUES (1);
158 DROP TEMPORARY TABLE t1;