rpl_sp.result 29.6 KB
Newer Older
1 2 3 4 5 6
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;
7 8
drop database if exists mysqltest1;
create database mysqltest1;
9 10 11 12 13 14 15 16 17 18 19
use mysqltest1;
create table t1 (a varchar(100));
use mysqltest1;
create procedure foo()
begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end|
select * from mysql.proc where name='foo' and db='mysqltest1';
20
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
21
mysqltest1	foo	PROCEDURE	foo	SQL	CONTAINS_SQL	NO	DEFINER			begin
22 23 24 25
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
26 27 28 29 30 31
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end
32
select * from mysql.proc where name='foo' and db='mysqltest1';
33
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
34
mysqltest1	foo	PROCEDURE	foo	SQL	CONTAINS_SQL	NO	DEFINER			begin
35 36 37 38
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
39 40 41 42 43 44
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
set timestamp=1000000000;
call foo();
select * from t1;
a
8
1000000000
select * from t1;
a
8
1000000000
delete from t1;
create procedure foo2()
select * from mysqltest1.t1;
call foo2();
a
alter procedure foo2 contains sql;
drop table t1;
create table t1 (a int);
create table t2 like t1;
create procedure foo3()
deterministic
insert into t1 values (15);
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
70 71 72
SELECT 1;
1
1
73 74 75 76 77 78 79
create procedure foo4()
deterministic
begin
insert into t2 values(3);
insert into t1 values (5);
end|
call foo4();
80
Got one of the listed errors
81 82 83 84
call foo3();
show warnings;
Level	Code	Message
call foo4();
85
Got one of the listed errors
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
alter procedure foo4 sql security invoker;
call foo4();
show warnings;
Level	Code	Message
select * from t1;
a
15
5
select * from t2;
a
3
3
3
select * from t1;
a
15
5
select * from t2;
a
3
106 107
3
3
108 109 110 111 112 113 114 115 116
delete from t2;
alter table t2 add unique (a);
drop procedure foo4;
create procedure foo4()
deterministic
begin
insert into t2 values(20),(20);
end|
call foo4();
117
ERROR 23000: Duplicate entry '20' for key 'a'
118 119
show warnings;
Level	Code	Message
120
Error	1062	Duplicate entry '20' for key 'a'
121 122 123 124 125 126
select * from t2;
a
20
select * from t2;
a
20
127
select * from mysql.proc where name="foo4" and db='mysqltest1';
128
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
129 130
mysqltest1	foo4	PROCEDURE	foo4	SQL	CONTAINS_SQL	YES	DEFINER			begin
insert into t2 values(20),(20);
131 132 133
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
insert into t2 values(20),(20);
end
134 135
drop procedure foo4;
select * from mysql.proc where name="foo4" and db='mysqltest1';
136
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
137
select * from mysql.proc where name="foo4" and db='mysqltest1';
138
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
139 140 141 142 143
drop procedure foo;
drop procedure foo2;
drop procedure foo3;
create function fn1(x int)
returns int
144 145 146 147 148 149 150
begin
insert into t1 values (x);
return x+2;
end|
ERROR HY000: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
create function fn1(x int)
returns int
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
deterministic
begin
insert into t1 values (x);
return x+2;
end|
delete t1,t2 from t1,t2;
select fn1(20);
fn1(20)
22
insert into t2 values(fn1(21));
select * from t1;
a
21
20
select * from t2;
a
23
select * from t1;
a
21
171
20
172 173 174 175 176 177
select * from t2;
a
23
drop function fn1;
create function fn1()
returns int
178
no sql
179 180 181
begin
return unix_timestamp();
end|
182 183
alter function fn1 contains sql;
ERROR HY000: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
184 185 186
delete from t1;
set timestamp=1000000000;
insert into t1 values(fn1());
187 188 189 190 191 192 193
create function fn2()
returns int
no sql
begin
return unix_timestamp();
end|
ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
194 195
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
196 197
set global log_bin_trust_routine_creators=1;
Warnings:
198
Warning	1287	'@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead
199 200
set global log_bin_trust_function_creators=0;
set global log_bin_trust_function_creators=1;
201 202
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
set global log_bin_trust_function_creators=1;
create function fn2()
returns int
no sql
begin
return unix_timestamp();
end|
create function fn3()
returns int
not deterministic
reads sql data
begin
return 0;
end|
select fn3();
fn3()
0
220
select * from mysql.proc where db='mysqltest1';
221
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
222 223
mysqltest1	fn1	FUNCTION	fn1	SQL	NO_SQL	NO	DEFINER		int(11)	begin
return unix_timestamp();
224 225 226
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
return unix_timestamp();
end
227
mysqltest1	fn2	FUNCTION	fn2	SQL	NO_SQL	NO	DEFINER		int(11)	begin
228
return unix_timestamp();
229 230 231
end	zedjzlcsjhd@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
return unix_timestamp();
end
232 233
mysqltest1	fn3	FUNCTION	fn3	SQL	READS_SQL_DATA	NO	DEFINER		int(11)	begin
return 0;
234 235 236
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
return 0;
end
237 238 239 240 241 242 243 244
select * from t1;
a
1000000000
use mysqltest1;
select * from t1;
a
1000000000
select * from mysql.proc where db='mysqltest1';
245
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment	character_set_client	collation_connection	db_collation	body_utf8
246 247
mysqltest1	fn1	FUNCTION	fn1	SQL	NO_SQL	NO	DEFINER		int(11)	begin
return unix_timestamp();
248 249 250
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
return unix_timestamp();
end
251
mysqltest1	fn2	FUNCTION	fn2	SQL	NO_SQL	NO	DEFINER		int(11)	begin
252
return unix_timestamp();
253 254 255
end	zedjzlcsjhd@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
return unix_timestamp();
end
256 257
mysqltest1	fn3	FUNCTION	fn3	SQL	READS_SQL_DATA	NO	DEFINER		int(11)	begin
return 0;
258 259 260
end	root@localhost	#	#			latin1	latin1_swedish_ci	latin1_swedish_ci	begin
return 0;
end
261 262 263
delete from t2;
alter table t2 add unique (a);
drop function fn1;
264
create function fn1(x int)
265 266
returns int
begin
267
insert into t2 values(x),(x);
268 269
return 10;
end|
270 271
do fn1(100);
Warnings:
272
Error	1062	Duplicate entry '100' for key 'a'
273
select fn1(20);
274
ERROR 23000: Duplicate entry '20' for key 'a'
275 276 277
select * from t2;
a
20
278
100
279 280 281
select * from t2;
a
20
282
100
283
create trigger trg before insert on t1 for each row set new.a= 10;
284
ERROR 42000: TRIGGER command denied to user 'zedjzlcsjhd'@'localhost' for table 't1'
285 286 287 288 289 290 291 292 293 294
delete from t1;
create trigger trg before insert on t1 for each row set new.a= 10;
insert into t1 values (1);
select * from t1;
a
10
select * from t1;
a
10
delete from t1;
295
drop trigger trg;
296 297 298 299
insert into t1 values (1);
select * from t1;
a
1
300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367
select * from t1;
a
1
create procedure foo()
not deterministic
reads sql data
select * from t1;
call foo();
a
1
drop procedure foo;
drop function fn1;
drop database mysqltest1;
drop user "zedjzlcsjhd"@127.0.0.1;
use test;
use test;
drop function if exists f1;
create function f1() returns int reads sql data
begin
declare var integer;
declare c cursor for select a from v1;
open c;
fetch c into var;
close c;
return var;
end|
create view v1 as select 1 as a;
create table t1 (a int);
insert into t1 (a) values (f1());
select * from t1;
a
1
drop view v1;
drop function f1;
select * from t1;
a
1
DROP PROCEDURE IF EXISTS p1;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(col VARCHAR(10));
CREATE PROCEDURE p1(arg VARCHAR(10))
INSERT INTO t1 VALUES(arg);
CALL p1('test');
SELECT * FROM t1;
col
test
SELECT * FROM t1;
col
test
DROP PROCEDURE p1;

---> Test for BUG#20438

---> Preparing environment...
---> connection: master
DROP PROCEDURE IF EXISTS p1;
DROP FUNCTION IF EXISTS f1;

---> Synchronizing slave with master...

---> connection: master

---> Creating procedure...
/*!50003 CREATE PROCEDURE p1() SET @a = 1 */;
/*!50003 CREATE FUNCTION f1() RETURNS INT RETURN 0 */;

---> Checking on master...
SHOW CREATE PROCEDURE p1;
368
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
369
p1		CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
370
SET @a = 1	latin1	latin1_swedish_ci	latin1_swedish_ci
371
SHOW CREATE FUNCTION f1;
372
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
373
f1		CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
374
RETURN 0	latin1	latin1_swedish_ci	latin1_swedish_ci
375 376 377 378 379 380

---> Synchronizing slave with master...
---> connection: master

---> Checking on slave...
SHOW CREATE PROCEDURE p1;
381
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
382
p1		CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
383
SET @a = 1	latin1	latin1_swedish_ci	latin1_swedish_ci
384
SHOW CREATE FUNCTION f1;
385
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
386
f1		CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
387
RETURN 0	latin1	latin1_swedish_ci	latin1_swedish_ci
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411

---> connection: master

---> Cleaning up...
DROP PROCEDURE p1;
DROP FUNCTION f1;
drop table t1;
drop database if exists mysqltest;
drop database if exists mysqltest2;
create database mysqltest;
create database mysqltest2;
use mysqltest2;
create table t ( t integer );
create procedure mysqltest.test() begin end;
insert into t values ( 1 );
create procedure `\\`.test() begin end;
ERROR 42000: Unknown database '\\'
create function f1 () returns int
begin
insert into t values (1);
return 0;
end|
use mysqltest;
set @a:= mysqltest2.f1();
412
show binlog events from <binlog_start>;
413
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
414 415 416 417
master-bin.000001	#	Query	#	#	drop database if exists mysqltest1
master-bin.000001	#	Query	#	#	create database mysqltest1
master-bin.000001	#	Query	#	#	use `mysqltest1`; create table t1 (a varchar(100))
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
418 419 420 421 422 423
begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end
424 425 426 427
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8))
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values (unix_timestamp())
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`()
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
428
select * from mysqltest1.t1
429 430 431 432 433
master-bin.000001	#	Query	#	#	use `mysqltest1`; alter procedure foo2 contains sql
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop table t1
master-bin.000001	#	Query	#	#	use `mysqltest1`; create table t1 (a int)
master-bin.000001	#	Query	#	#	use `mysqltest1`; create table t2 like t1
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
434
    DETERMINISTIC
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
435
insert into t1 values (15)
436 437 438 439
master-bin.000001	#	Query	#	#	use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
master-bin.000001	#	Query	#	#	use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
master-bin.000001	#	Query	#	#	use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
440
    DETERMINISTIC
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
441 442 443 444
begin
insert into t2 values(3);
insert into t1 values (5);
end
445 446 447 448 449 450 451 452 453 454
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t2 values(3)
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values (15)
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t2 values(3)
master-bin.000001	#	Query	#	#	use `mysqltest1`; alter procedure foo4 sql security invoker
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t2 values(3)
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values (5)
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete from t2
master-bin.000001	#	Query	#	#	use `mysqltest1`; alter table t2 add unique (a)
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop procedure foo4
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`()
455
    DETERMINISTIC
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
456 457 458
begin
insert into t2 values(20),(20);
end
459 460 461 462 463 464
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t2 values(20),(20)
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop procedure foo4
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop procedure foo
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop procedure foo2
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop procedure foo3
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
465
    DETERMINISTIC
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
466 467 468 469
begin
insert into t1 values (x);
return x+2;
end
470 471 472 473 474
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete t1,t2 from t1,t2
master-bin.000001	#	Query	#	#	use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t2 values(fn1(21))
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop function fn1
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11)
475
    NO SQL
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
476 477 478
begin
return unix_timestamp();
end
479 480 481
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values(fn1())
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11)
482
    NO SQL
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
483 484 485
begin
return unix_timestamp();
end
486
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11)
487
    READS SQL DATA
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
488 489 490
begin
return 0;
end
491 492 493 494
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete from t2
master-bin.000001	#	Query	#	#	use `mysqltest1`; alter table t2 add unique (a)
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop function fn1
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
495
begin
496
insert into t2 values(x),(x);
anozdrin@mysql.com's avatar
anozdrin@mysql.com committed
497 498
return 10;
end
499 500 501 502 503 504 505 506 507
master-bin.000001	#	Query	#	#	use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100)
master-bin.000001	#	Query	#	#	use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values (1)
master-bin.000001	#	Query	#	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop trigger trg
master-bin.000001	#	Query	#	#	use `mysqltest1`; insert into t1 values (1)
master-bin.000001	#	Query	#	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
508
    READS SQL DATA
509
select * from t1
510 511 512 513 514 515
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop procedure foo
master-bin.000001	#	Query	#	#	use `mysqltest1`; drop function fn1
master-bin.000001	#	Query	#	#	drop database mysqltest1
master-bin.000001	#	Query	#	#	drop user "zedjzlcsjhd"@127.0.0.1
master-bin.000001	#	Query	#	#	use `test`; drop function if exists f1
master-bin.000001	#	Query	#	#	use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
516
    READS SQL DATA
517 518 519 520 521 522 523
begin
declare var integer;
declare c cursor for select a from v1;
open c;
fetch c into var;
close c;
return var;
524
end
525 526 527 528 529 530 531 532 533
master-bin.000001	#	Query	#	#	use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a
master-bin.000001	#	Query	#	#	use `test`; create table t1 (a int)
master-bin.000001	#	Query	#	#	use `test`; insert into t1 (a) values (f1())
master-bin.000001	#	Query	#	#	use `test`; drop view v1
master-bin.000001	#	Query	#	#	use `test`; drop function f1
master-bin.000001	#	Query	#	#	use `test`; DROP PROCEDURE IF EXISTS p1
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE IF EXISTS t1
master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1(col VARCHAR(10))
master-bin.000001	#	Query	#	#	use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
534
INSERT INTO t1 VALUES(arg)
535 536 537 538 539
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
master-bin.000001	#	Query	#	#	use `test`; DROP PROCEDURE p1
master-bin.000001	#	Query	#	#	use `test`; DROP PROCEDURE IF EXISTS p1
master-bin.000001	#	Query	#	#	use `test`; DROP FUNCTION IF EXISTS f1
master-bin.000001	#	Query	#	#	use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
540
SET @a = 1
541
master-bin.000001	#	Query	#	#	use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
542
RETURN 0
543 544 545 546 547 548 549 550 551
master-bin.000001	#	Query	#	#	use `test`; DROP PROCEDURE p1
master-bin.000001	#	Query	#	#	use `test`; DROP FUNCTION f1
master-bin.000001	#	Query	#	#	use `test`; drop table t1
master-bin.000001	#	Query	#	#	drop database if exists mysqltest
master-bin.000001	#	Query	#	#	drop database if exists mysqltest2
master-bin.000001	#	Query	#	#	create database mysqltest
master-bin.000001	#	Query	#	#	create database mysqltest2
master-bin.000001	#	Query	#	#	use `mysqltest2`; create table t ( t integer )
master-bin.000001	#	Query	#	#	use `mysqltest2`; CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`()
552
begin end
553 554
master-bin.000001	#	Query	#	#	use `mysqltest2`; insert into t values ( 1 )
master-bin.000001	#	Query	#	#	use `mysqltest2`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
555 556 557 558
begin
insert into t values (1);
return 0;
end
559
master-bin.000001	#	Query	#	#	use `mysqltest`; SELECT `mysqltest2`.`f1`()
560 561
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
562
Warning	1287	'@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead
563 564 565
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
566
Warning	1287	'@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead
567
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
568 569
drop database mysqltest;
drop database mysqltest2;
570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597
use test;
/*!50001 create procedure `mysqltestbug36570_p1`() */
begin
select 1;
end|
use mysql|
create procedure test.` mysqltestbug36570_p2`(/*!50001 a int*/)`label`:
begin
select a;
end|
/*!50001 create function test.mysqltestbug36570_f1() */
returns int
/*!50001 deterministic */
begin
return 3;
end|
use test|
show procedure status like '%mysqltestbug36570%';
Db	Name	Type	Definer	Modified	Created	Security_type	Comment	character_set_client	collation_connection	Database Collation
test	 mysqltestbug36570_p2	PROCEDURE	root@localhost	t	t	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
test	mysqltestbug36570_p1	PROCEDURE	root@localhost	t	t	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
show create procedure ` mysqltestbug36570_p2`;
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
 mysqltestbug36570_p2		CREATE DEFINER=`root`@`localhost` PROCEDURE ` mysqltestbug36570_p2`( a int)
`label`:
begin
select a;
end	latin1	latin1_swedish_ci	latin1_swedish_ci
598 599 600 601 602 603 604 605 606 607 608
show procedure status like '%mysqltestbug36570%';
Db	Name	Type	Definer	Modified	Created	Security_type	Comment	character_set_client	collation_connection	Database Collation
test	 mysqltestbug36570_p2	PROCEDURE	root@localhost	t	t	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
test	mysqltestbug36570_p1	PROCEDURE	root@localhost	t	t	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
show create procedure ` mysqltestbug36570_p2`;
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
 mysqltestbug36570_p2		CREATE DEFINER=`root`@`localhost` PROCEDURE ` mysqltestbug36570_p2`( a int)
`label`:
begin
select a;
end	latin1	latin1_swedish_ci	latin1_swedish_ci
609 610 611 612 613 614
call ` mysqltestbug36570_p2`(42);
a
42
show function status like '%mysqltestbug36570%';
Db	Name	Type	Definer	Modified	Created	Security_type	Comment	character_set_client	collation_connection	Database Collation
test	mysqltestbug36570_f1	FUNCTION	root@localhost	t	t	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
615 616 617 618 619 620
flush logs;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
SET TIMESTAMP=t/*!*/;
621
SET @@session.pseudo_thread_id=999999999/*!*/;
Magnus Svensson's avatar
Magnus Svensson committed
622
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
623
SET @@session.sql_mode=0/*!*/;
624
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
625 626
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
627 628
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677
drop database if exists mysqltest1
/*!*/;
SET TIMESTAMP=t/*!*/;
create database mysqltest1
/*!*/;
use mysqltest1/*!*/;
SET TIMESTAMP=t/*!*/;
create table t1 (a varchar(100))
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values ( NAME_CONST('b',8))
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values (unix_timestamp())
/*!*/;
SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`()
select * from mysqltest1.t1
/*!*/;
SET TIMESTAMP=t/*!*/;
alter procedure foo2 contains sql
/*!*/;
SET TIMESTAMP=t/*!*/;
drop table t1
/*!*/;
SET TIMESTAMP=t/*!*/;
create table t1 (a int)
/*!*/;
SET TIMESTAMP=t/*!*/;
create table t2 like t1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
    DETERMINISTIC
insert into t1 values (15)
/*!*/;
SET TIMESTAMP=t/*!*/;
678
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
679 680
/*!*/;
SET TIMESTAMP=t/*!*/;
681
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
682 683
/*!*/;
SET TIMESTAMP=t/*!*/;
684
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
    DETERMINISTIC
begin
insert into t2 values(3);
insert into t1 values (5);
end
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t2 values(3)
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values (15)
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t2 values(3)
/*!*/;
SET TIMESTAMP=t/*!*/;
alter procedure foo4 sql security invoker
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t2 values(3)
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values (5)
/*!*/;
SET TIMESTAMP=t/*!*/;
delete from t2
/*!*/;
SET TIMESTAMP=t/*!*/;
alter table t2 add unique (a)
/*!*/;
SET TIMESTAMP=t/*!*/;
drop procedure foo4
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`()
    DETERMINISTIC
begin
insert into t2 values(20),(20);
end
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t2 values(20),(20)
/*!*/;
SET TIMESTAMP=t/*!*/;
drop procedure foo4
/*!*/;
SET TIMESTAMP=t/*!*/;
drop procedure foo
/*!*/;
SET TIMESTAMP=t/*!*/;
drop procedure foo2
/*!*/;
SET TIMESTAMP=t/*!*/;
drop procedure foo3
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
    DETERMINISTIC
begin
insert into t1 values (x);
return x+2;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
delete t1,t2 from t1,t2
/*!*/;
SET TIMESTAMP=t/*!*/;
SELECT `mysqltest1`.`fn1`(20)
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t2 values(fn1(21))
/*!*/;
SET TIMESTAMP=t/*!*/;
drop function fn1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11)
    NO SQL
begin
return unix_timestamp();
end
/*!*/;
SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values(fn1())
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11)
    NO SQL
begin
return unix_timestamp();
end
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11)
    READS SQL DATA
begin
return 0;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
delete from t2
/*!*/;
SET TIMESTAMP=t/*!*/;
alter table t2 add unique (a)
/*!*/;
SET TIMESTAMP=t/*!*/;
drop function fn1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
begin
insert into t2 values(x),(x);
return 10;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
SELECT `mysqltest1`.`fn1`(100)
/*!*/;
SET TIMESTAMP=t/*!*/;
SELECT `mysqltest1`.`fn1`(20)
/*!*/;
SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values (1)
/*!*/;
SET TIMESTAMP=t/*!*/;
delete from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop trigger trg
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 values (1)
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
    READS SQL DATA
select * from t1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop procedure foo
/*!*/;
SET TIMESTAMP=t/*!*/;
drop function fn1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop database mysqltest1
/*!*/;
SET TIMESTAMP=t/*!*/;
845
drop user "zedjzlcsjhd"@127.0.0.1
846 847 848
/*!*/;
use test/*!*/;
SET TIMESTAMP=t/*!*/;
849 850 851
drop function if exists f1
/*!*/;
SET TIMESTAMP=t/*!*/;
852 853 854 855 856 857 858 859 860 861 862 863
CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
    READS SQL DATA
begin
declare var integer;
declare c cursor for select a from v1;
open c;
fetch c into var;
close c;
return var;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
864
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a
865 866 867 868 869 870 871 872 873 874 875 876 877 878
/*!*/;
SET TIMESTAMP=t/*!*/;
create table t1 (a int)
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t1 (a) values (f1())
/*!*/;
SET TIMESTAMP=t/*!*/;
drop view v1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop function f1
/*!*/;
SET TIMESTAMP=t/*!*/;
879 880 881
DROP PROCEDURE IF EXISTS p1
/*!*/;
SET TIMESTAMP=t/*!*/;
882 883 884 885 886 887 888 889 890 891
DROP TABLE IF EXISTS t1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE TABLE t1(col VARCHAR(10))
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
INSERT INTO t1 VALUES(arg)
/*!*/;
SET TIMESTAMP=t/*!*/;
892
INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
893 894 895 896 897
/*!*/;
SET TIMESTAMP=t/*!*/;
DROP PROCEDURE p1
/*!*/;
SET TIMESTAMP=t/*!*/;
898 899 900 901 902 903
DROP PROCEDURE IF EXISTS p1
/*!*/;
SET TIMESTAMP=t/*!*/;
DROP FUNCTION IF EXISTS f1
/*!*/;
SET TIMESTAMP=t/*!*/;
904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
SET @a = 1
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
RETURN 0
/*!*/;
SET TIMESTAMP=t/*!*/;
DROP PROCEDURE p1
/*!*/;
SET TIMESTAMP=t/*!*/;
DROP FUNCTION f1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop table t1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop database if exists mysqltest
/*!*/;
SET TIMESTAMP=t/*!*/;
drop database if exists mysqltest2
/*!*/;
SET TIMESTAMP=t/*!*/;
create database mysqltest
/*!*/;
SET TIMESTAMP=t/*!*/;
create database mysqltest2
/*!*/;
use mysqltest2/*!*/;
SET TIMESTAMP=t/*!*/;
create table t ( t integer )
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`()
begin end
/*!*/;
SET TIMESTAMP=t/*!*/;
insert into t values ( 1 )
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
begin
insert into t values (1);
return 0;
end
/*!*/;
use mysqltest/*!*/;
SET TIMESTAMP=t/*!*/;
SELECT `mysqltest2`.`f1`()
/*!*/;
SET TIMESTAMP=t/*!*/;
drop database mysqltest
/*!*/;
SET TIMESTAMP=t/*!*/;
drop database mysqltest2
/*!*/;
use test/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltestbug36570_p1`()
begin
select 1;
end
/*!*/;
use mysql/*!*/;
SET TIMESTAMP=t/*!*/;
969
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`.` mysqltestbug36570_p2`( a int)
970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985
`label`:
begin
select a;
end
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`root`@`localhost` FUNCTION `test`.`mysqltestbug36570_f1`() RETURNS int(11)
    DETERMINISTIC
begin
return 3;
end
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
986 987 988 989
use test;
drop procedure mysqltestbug36570_p1;
drop procedure ` mysqltestbug36570_p2`;
drop function mysqltestbug36570_f1;
990
End of 5.0 tests
991
End of 5.1 tests