Commit 3bb367f2 authored by unknown's avatar unknown
Browse files

Merge mysqldev@production.mysql.com:my/mysql-5.0-release

into  mysql.com:/home/mysql_src/mysql-5.0-release

parents 0c97fbef 5d9c8e95
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2008,7 +2008,7 @@ sub mysqld_arguments ($$$$$) {
  mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
  mtr_add_arg($args, "%s--character-sets-dir=%s", $prefix, $path_charsetsdir);
  mtr_add_arg($args, "%s--core", $prefix);
  mtr_add_arg($args, "%s--log-bin-trust-routine-creators", $prefix);
  mtr_add_arg($args, "%s--log-bin-trust-function-creators", $prefix);
  mtr_add_arg($args, "%s--default-character-set=latin1", $prefix);
  mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
  mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
@@ -2131,7 +2131,7 @@ sub mysqld_arguments ($$$$$) {
  mtr_add_arg($args, "%s--key_buffer_size=1M", $prefix);
  mtr_add_arg($args, "%s--sort_buffer=256K", $prefix);
  mtr_add_arg($args, "%s--max_heap_table_size=1M", $prefix);
  mtr_add_arg($args, "%s--log-bin-trust-routine-creators", $prefix);
  mtr_add_arg($args, "%s--log-bin-trust-function-creators", $prefix);

  if ( $opt_ssl_supported )
  {
+3 −3
Original line number Diff line number Diff line
@@ -1275,7 +1275,7 @@ start_master()
          --language=$LANGUAGE \
          --innodb_data_file_path=ibdata1:128M:autoextend \
	  --open-files-limit=1024 \
          --log-bin-trust-routine-creators \
          --log-bin-trust-function-creators \
	   $MASTER_40_ARGS \
           $SMALL_SERVER \
           $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT \
@@ -1296,7 +1296,7 @@ start_master()
          --tmpdir=$MYSQL_TMP_DIR \
          --language=$LANGUAGE \
          --innodb_data_file_path=ibdata1:128M:autoextend \
          --log-bin-trust-routine-creators \
          --log-bin-trust-function-creators \
	   $MASTER_40_ARGS \
           $SMALL_SERVER \
           $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT \
@@ -1429,7 +1429,7 @@ start_slave()
          --report-port=$slave_port \
          --master-retry-count=10 \
          -O slave_net_timeout=10 \
          --log-bin-trust-routine-creators \
          --log-bin-trust-function-creators \
           $SMALL_SERVER \
           $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
  CUR_MYERR=$slave_err
+1 −1
Original line number Diff line number Diff line
@@ -486,7 +486,7 @@ void start_master()
#endif
  add_arg(&al, "--local-infile");
  add_arg(&al, "--core");
  add_arg(&al, "--log-bin-trust-routine-creators");
  add_arg(&al, "--log-bin-trust-function-creators");
  add_arg(&al, "--datadir=%s", master_dir);
#ifndef __WIN__
  add_arg(&al, "--pid-file=%s", master_pid);
+194 −94
Original line number Diff line number Diff line
@@ -4,16 +4,11 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
create database if not exists mysqltest1;
drop database if exists mysqltest1;
create database mysqltest1;
use mysqltest1;
create table t1 (a varchar(100));
use mysqltest1;
drop procedure if exists foo;
drop procedure if exists foo2;
drop procedure if exists foo3;
drop procedure if exists foo4;
drop procedure if exists bar;
drop function if exists fn1;
create procedure foo()
begin
declare b int;
@@ -21,21 +16,9 @@ set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end|
ERROR HY000: This routine 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_routine_creators variable)
show binlog events from 98|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Query	1	#	create database if not exists mysqltest1
master-bin.000001	#	Query	1	#	use `mysqltest1`; create table t1 (a varchar(100))
create procedure foo() deterministic
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';
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment
mysqltest1	foo	PROCEDURE	foo	SQL	CONTAINS_SQL	YES	DEFINER			begin
mysqltest1	foo	PROCEDURE	foo	SQL	CONTAINS_SQL	NO	DEFINER			begin
declare b int;
set b = 8;
insert into t1 values (b);
@@ -43,7 +26,7 @@ insert into t1 values (unix_timestamp());
end	root@localhost	#	#		
select * from mysql.proc where name='foo' and db='mysqltest1';
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment
mysqltest1	foo	PROCEDURE	foo	SQL	CONTAINS_SQL	YES	DEFINER			begin
mysqltest1	foo	PROCEDURE	foo	SQL	CONTAINS_SQL	NO	DEFINER			begin
declare b int;
set b = 8;
insert into t1 values (b);
@@ -51,17 +34,6 @@ insert into t1 values (unix_timestamp());
end	@	#	#		
set timestamp=1000000000;
call foo();
show binlog events from 308;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo() deterministic
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())
select * from t1;
a
8
@@ -72,22 +44,10 @@ a
1000000000
delete from t1;
create procedure foo2()
not deterministic
reads sql data
select * from mysqltest1.t1;
call foo2();
a
show binlog events from 518;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo2()
not deterministic
reads sql data
select * from mysqltest1.t1
alter procedure foo2 contains sql;
ERROR HY000: This routine 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_routine_creators variable)
drop table t1;
create table t1 (a int);
create table t2 like t1;
@@ -99,57 +59,21 @@ grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
create procedure foo4()
deterministic
insert into t1 values (10);
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_routine_creators variable)
set global log_bin_trust_routine_creators=1;
create procedure foo4()
deterministic
begin
insert into t2 values(3);
insert into t1 values (5);
end|
call foo4();
Got one of the listed errors
show warnings;
Level	Code	Message
Error	1142	INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1'
Warning	1417	A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes
call foo3();
show warnings;
Level	Code	Message
call foo4();
Got one of the listed errors
show warnings;
Level	Code	Message
Error	1142	INSERT command denied to user 'zedjzlcsjhd'@'127.0.0.1' for table 't1'
Warning	1417	A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes
alter procedure foo4 sql security invoker;
call foo4();
show warnings;
Level	Code	Message
show binlog events from 990;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo3()
deterministic
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo4()
deterministic
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)
select * from t1;
a
15
@@ -168,11 +92,29 @@ a
3
3
3
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();
ERROR 23000: Duplicate entry '20' for key 1
show warnings;
Level	Code	Message
Error	1062	Duplicate entry '20' for key 1
select * from t2;
a
20
select * from t2;
a
20
select * from mysql.proc where name="foo4" and db='mysqltest1';
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment
mysqltest1	foo4	PROCEDURE	foo4	SQL	CONTAINS_SQL	YES	INVOKER			begin
insert into t2 values(3);
insert into t1 values (5);
mysqltest1	foo4	PROCEDURE	foo4	SQL	CONTAINS_SQL	YES	DEFINER			begin
insert into t2 values(20),(20);
end	@	#	#		
drop procedure foo4;
select * from mysql.proc where name="foo4" and db='mysqltest1';
@@ -184,6 +126,13 @@ drop procedure foo2;
drop procedure foo3;
create function fn1(x int)
returns int
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
deterministic
begin
insert into t1 values (x);
@@ -211,17 +160,54 @@ a
drop function fn1;
create function fn1()
returns int
deterministic
no sql
begin
return unix_timestamp();
end|
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)
delete from t1;
set timestamp=1000000000;
insert into t1 values(fn1());
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)
set global log_bin_trust_routine_creators=1;
Warnings:
Warning	1287	'log_bin_trust_routine_creators' is deprecated; use 'log_bin_trust_function_creators' instead
set global log_bin_trust_function_creators=0;
set global log_bin_trust_function_creators=1;
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
select * from mysql.proc where db='mysqltest1';
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment
mysqltest1	fn1	FUNCTION	fn1	SQL	CONTAINS_SQL	YES	DEFINER		int(11)	begin
mysqltest1	fn1	FUNCTION	fn1	SQL	NO_SQL	NO	DEFINER		int(11)	begin
return unix_timestamp();
end	root@localhost	#	#		
mysqltest1	fn2	FUNCTION	fn2	SQL	NO_SQL	NO	DEFINER		int(11)	begin
return unix_timestamp();
end	zedjzlcsjhd@localhost	#	#		
mysqltest1	fn3	FUNCTION	fn3	SQL	READS_SQL_DATA	NO	DEFINER		int(11)	begin
return 0;
end	root@localhost	#	#		
select * from t1;
a
@@ -232,12 +218,34 @@ a
1000000000
select * from mysql.proc where db='mysqltest1';
db	name	type	specific_name	language	sql_data_access	is_deterministic	security_type	param_list	returns	body	definer	created	modified	sql_mode	comment
mysqltest1	fn1	FUNCTION	fn1	SQL	CONTAINS_SQL	YES	DEFINER		int(11)	begin
mysqltest1	fn1	FUNCTION	fn1	SQL	NO_SQL	NO	DEFINER		int(11)	begin
return unix_timestamp();
end	@	#	#		
mysqltest1	fn2	FUNCTION	fn2	SQL	NO_SQL	NO	DEFINER		int(11)	begin
return unix_timestamp();
end	@	#	#		
mysqltest1	fn3	FUNCTION	fn3	SQL	READS_SQL_DATA	NO	DEFINER		int(11)	begin
return 0;
end	@	#	#		
delete from t2;
alter table t2 add unique (a);
drop function fn1;
create function fn1()
returns int
begin
insert into t2 values(20),(20);
return 10;
end|
select fn1();
ERROR 23000: Duplicate entry '20' for key 1
select * from t2;
a
20
select * from t2;
a
20
create trigger trg before insert on t1 for each row set new.a= 10;
ERROR 42000: Access denied; you need the SUPER privilege for this operation
flush logs;
delete from t1;
create trigger trg before insert on t1 for each row set new.a= 10;
insert into t1 values (1);
@@ -253,14 +261,106 @@ insert into t1 values (1);
select * from t1;
a
1
show binlog events in 'master-bin.000002' from 98;
show binlog events in 'master-bin.000001' from 98;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000002	#	Query	1	#	use `mysqltest1`; delete from t1
master-bin.000002	#	Query	1	#	use `mysqltest1`; create trigger trg before insert on t1 for each row set new.a= 10
master-bin.000002	#	Query	1	#	use `mysqltest1`; insert into t1 values (1)
master-bin.000002	#	Query	1	#	use `mysqltest1`; delete from t1
master-bin.000002	#	Query	1	#	use `mysqltest1`; drop trigger trg
master-bin.000002	#	Query	1	#	use `mysqltest1`; insert into t1 values (1)
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))
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo()
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo2()
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo3()
deterministic
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo4()
deterministic
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create procedure foo4()
deterministic
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create function fn1(x int)
returns int
deterministic
begin
insert into t1 values (x);
return x+2;
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete t1,t2 from t1,t2
master-bin.000001	#	Query	1	#	use `mysqltest1`; DO `fn1`(20)
master-bin.000001	#	Query	1	#	use `mysqltest1`; insert into t2 values(fn1(21))
master-bin.000001	#	Query	1	#	use `mysqltest1`; drop function fn1
master-bin.000001	#	Query	1	#	use `mysqltest1`; create function fn1()
returns int
no sql
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())
master-bin.000001	#	Query	1	#	use `mysqltest1`; create function fn2()
returns int
no sql
begin
return unix_timestamp();
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; create function fn3()
returns int
not deterministic
reads sql data
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
master-bin.000001	#	Query	1	#	use `mysqltest1`; create function fn1()
returns int
begin
insert into t2 values(20),(20);
return 10;
end
master-bin.000001	#	Query	1	#	use `mysqltest1`; DO `fn1`()
master-bin.000001	#	Query	1	#	use `mysqltest1`; delete from t1
master-bin.000001	#	Query	1	#	use `mysqltest1`; create 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)
select * from t1;
a
1
+1 −1
Original line number Diff line number Diff line
--log_bin_trust_routine_creators=0
--log_bin_trust_routine_creators=0 --slave-skip-errors=1062
Loading