rpl_sp.result 29.7 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';
unknown's avatar
unknown committed
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());
unknown's avatar
unknown committed
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';
unknown's avatar
unknown committed
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());
unknown's avatar
unknown committed
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();
unknown's avatar
unknown committed
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';
unknown's avatar
unknown committed
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);
unknown's avatar
unknown committed
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';
unknown's avatar
unknown committed
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';
unknown's avatar
unknown committed
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	The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. 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';
unknown's avatar
unknown committed
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();
unknown's avatar
unknown committed
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();
unknown's avatar
unknown committed
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;
unknown's avatar
unknown committed
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';
unknown's avatar
unknown committed
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();
unknown's avatar
unknown committed
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();
unknown's avatar
unknown committed
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;
unknown's avatar
unknown committed
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);
unknown's avatar
unknown committed
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;
unknown's avatar
unknown committed
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;
unknown's avatar
unknown committed
368
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
369
p1		CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
unknown's avatar
unknown committed
370
SET @a = 1	latin1	latin1_swedish_ci	latin1_swedish_ci
371
SHOW CREATE FUNCTION f1;
unknown's avatar
unknown committed
372
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
373
f1		CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
unknown's avatar
unknown committed
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;
unknown's avatar
unknown committed
381
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
382
p1		CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
unknown's avatar
unknown committed
383
SET @a = 1	latin1	latin1_swedish_ci	latin1_swedish_ci
384
SHOW CREATE FUNCTION f1;
unknown's avatar
unknown committed
385
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
386
f1		CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
unknown's avatar
unknown committed
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();
unknown's avatar
unknown committed
412
show binlog events in 'master-bin.000001' from 106;
413
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
unknown's avatar
unknown committed
414 415 416
master-bin.000001	#	Query	1	#	drop database if exists mysqltest1
master-bin.000001	#	Query	1	#	create database mysqltest1
master-bin.000001	#	Query	1	#	use `mysqltest1`; create table t1 (a varchar(100))
417
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
unknown's avatar
unknown committed
418 419 420 421 422 423 424 425 426
begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8))
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values (unix_timestamp())
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t1
427
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`()
unknown's avatar
unknown committed
428 429 430 431 432
select * from mysqltest1.t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; alter procedure foo2 contains sql
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop table t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; create table t1 (a int)
master-bin.000001	#	Query	1	#	use `mysqltest1`; create table t2 like t1
433 434
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
    DETERMINISTIC
unknown's avatar
unknown committed
435 436 437 438
insert into t1 values (15)
master-bin.000001	#	Query	1	#	use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
master-bin.000001	#	Query	1	#	use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
master-bin.000001	#	Query	1	#	use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
439 440
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
    DETERMINISTIC
unknown's avatar
unknown committed
441 442 443 444 445 446 447 448 449 450 451 452 453
begin
insert into t2 values(3);
insert into t1 values (5);
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t2 values(3)
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values (15)
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t2 values(3)
master-bin.000001	#	Query	1	#	use `mysqltest1`; alter procedure foo4 sql security invoker
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t2 values(3)
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values (5)
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t2
master-bin.000001	#	Query	1	#	use `mysqltest1`; alter table t2 add unique (a)
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop procedure foo4
454 455
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`()
    DETERMINISTIC
unknown's avatar
unknown committed
456 457 458 459 460 461 462 463
begin
insert into t2 values(20),(20);
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t2 values(20),(20)
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop procedure foo4
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop procedure foo
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop procedure foo2
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop procedure foo3
464 465
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
    DETERMINISTIC
unknown's avatar
unknown committed
466 467 468 469 470
begin
insert into t1 values (x);
return x+2;
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete t1,t2 from t1,t2
471
master-bin.000001	#	Query	1	#	use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
unknown's avatar
unknown committed
472 473
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t2 values(fn1(21))
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop function fn1
474 475
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11)
    NO SQL
unknown's avatar
unknown committed
476 477 478 479 480
begin
return unix_timestamp();
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values(fn1())
481 482
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11)
    NO SQL
unknown's avatar
unknown committed
483 484 485
begin
return unix_timestamp();
end
486 487
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11)
    READS SQL DATA
unknown's avatar
unknown committed
488 489 490 491 492 493
begin
return 0;
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t2
master-bin.000001	#	Query	1	#	use `mysqltest1`; alter table t2 add unique (a)
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop function fn1
494
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
unknown's avatar
unknown committed
495
begin
496
insert into t2 values(x),(x);
unknown's avatar
unknown committed
497 498
return 10;
end
499 500
master-bin.000001	#	Query	1	#	use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100)
master-bin.000001	#	Query	1	#	use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
unknown's avatar
unknown committed
501 502 503 504 505 506
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values (1)
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop trigger trg
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t1 values (1)
507 508
master-bin.000001	#	Query	1	#	use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
    READS SQL DATA
509 510 511 512 513
select * from t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop procedure foo
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop function fn1
master-bin.000001	#	Query	1	#	drop database mysqltest1
master-bin.000001	#	Query	1	#	drop user "zedjzlcsjhd"@127.0.0.1
514
master-bin.000001	#	Query	1	#	use `test`; drop function if exists f1
515 516
master-bin.000001	#	Query	1	#	use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
    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 525 526 527 528 529
end
master-bin.000001	#	Query	1	#	use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a
master-bin.000001	#	Query	1	#	use `test`; create table t1 (a int)
master-bin.000001	#	Query	1	#	use `test`; insert into t1 (a) values (f1())
master-bin.000001	#	Query	1	#	use `test`; drop view v1
master-bin.000001	#	Query	1	#	use `test`; drop function f1
530
master-bin.000001	#	Query	1	#	use `test`; DROP PROCEDURE IF EXISTS p1
531 532
master-bin.000001	#	Query	1	#	use `test`; DROP TABLE IF EXISTS t1
master-bin.000001	#	Query	1	#	use `test`; CREATE TABLE t1(col VARCHAR(10))
533
master-bin.000001	#	Query	1	#	use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
534
INSERT INTO t1 VALUES(arg)
535
master-bin.000001	#	Query	1	#	use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
536
master-bin.000001	#	Query	1	#	use `test`; DROP PROCEDURE p1
537 538
master-bin.000001	#	Query	1	#	use `test`; DROP PROCEDURE IF EXISTS p1
master-bin.000001	#	Query	1	#	use `test`; DROP FUNCTION IF EXISTS f1
539 540 541 542
master-bin.000001	#	Query	1	#	use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
SET @a = 1
master-bin.000001	#	Query	1	#	use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
RETURN 0
543 544 545 546 547 548 549 550
master-bin.000001	#	Query	1	#	use `test`; DROP PROCEDURE p1
master-bin.000001	#	Query	1	#	use `test`; DROP FUNCTION f1
master-bin.000001	#	Query	1	#	use `test`; drop table t1
master-bin.000001	#	Query	1	#	drop database if exists mysqltest
master-bin.000001	#	Query	1	#	drop database if exists mysqltest2
master-bin.000001	#	Query	1	#	create database mysqltest
master-bin.000001	#	Query	1	#	create database mysqltest2
master-bin.000001	#	Query	1	#	use `mysqltest2`; create table t ( t integer )
551 552
master-bin.000001	#	Query	1	#	use `mysqltest2`; CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`()
begin end
553
master-bin.000001	#	Query	1	#	use `mysqltest2`; insert into t values ( 1 )
554
master-bin.000001	#	Query	1	#	use `mysqltest2`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
555 556 557 558 559
begin
insert into t values (1);
return 0;
end
master-bin.000001	#	Query	1	#	use `mysqltest`; SELECT `mysqltest2`.`f1`()
560 561
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
562
Warning	1287	The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. 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	The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. 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 678 679 680 681 682 683 684 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 845 846 847 848
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/*!*/;
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
/*!*/;
SET TIMESTAMP=t/*!*/;
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
/*!*/;
SET TIMESTAMP=t/*!*/;
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
/*!*/;
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/*!*/;
drop user "zedjzlcsjhd"@127.0.0.1
/*!*/;
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
unknown's avatar
unknown committed
991
End of 5.1 tests