Commit e46dbc9b authored by unknown's avatar unknown

Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint

into  salvation.intern.azundris.com:/home/tnurnberg/work/mysql-5.1-maint-16456


mysql-test/r/func_time.result:
  Auto merged
mysql-test/r/sp.result:
  Auto merged
mysql-test/t/func_time.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
parents 0aad12d9 b84e9d10
...@@ -1060,6 +1060,7 @@ Note 1003 select timestampdiff(WEEK,_latin1'2001-02-01',_latin1'2001-05-01') AS ...@@ -1060,6 +1060,7 @@ Note 1003 select timestampdiff(WEEK,_latin1'2001-02-01',_latin1'2001-05-01') AS
select time_format('100:00:00', '%H %k %h %I %l'); select time_format('100:00:00', '%H %k %h %I %l');
time_format('100:00:00', '%H %k %h %I %l') time_format('100:00:00', '%H %k %h %I %l')
100 100 04 04 4 100 100 04 04 4
SET GLOBAL log_bin_trust_function_creators = 1;
create table t1 (a timestamp default '2005-05-05 01:01:01', create table t1 (a timestamp default '2005-05-05 01:01:01',
b timestamp default '2005-05-05 01:01:01'); b timestamp default '2005-05-05 01:01:01');
drop function if exists t_slow_sysdate; drop function if exists t_slow_sysdate;
...@@ -1083,6 +1084,7 @@ a != b ...@@ -1083,6 +1084,7 @@ a != b
drop trigger t_before; drop trigger t_before;
drop function t_slow_sysdate; drop function t_slow_sysdate;
drop table t1; drop table t1;
SET GLOBAL log_bin_trust_function_creators = 0;
create table t1 (a datetime, i int, b datetime); create table t1 (a datetime, i int, b datetime);
insert into t1 select sysdate(), sleep(1), sysdate() from dual; insert into t1 select sysdate(), sleep(1), sysdate() from dual;
select a != b from t1; select a != b from t1;
......
...@@ -679,10 +679,11 @@ insert into t1 values (null,null); ...@@ -679,10 +679,11 @@ insert into t1 values (null,null);
ERROR 23000: Column 's1' cannot be null ERROR 23000: Column 's1' cannot be null
drop table t1; drop table t1;
drop procedure if exists fn3; drop procedure if exists fn3;
create function fn3 () returns point return GeomFromText("point(1 1)"); create function fn3 () returns point deterministic return GeomFromText("point(1 1)");
show create function fn3; show create function fn3;
Function sql_mode Create Function Function sql_mode Create Function
fn3 CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS point fn3 CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS point
DETERMINISTIC
return GeomFromText("point(1 1)") return GeomFromText("point(1 1)")
select astext(fn3()); select astext(fn3());
astext(fn3()) astext(fn3())
......
...@@ -365,13 +365,14 @@ insert into mysql.user select * from t1; ...@@ -365,13 +365,14 @@ insert into mysql.user select * from t1;
drop table t1, t2; drop table t1, t2;
drop database TESTDB; drop database TESTDB;
flush privileges; flush privileges;
SET GLOBAL log_bin_trust_function_creators = 1;
grant all privileges on test.* to `a@`@localhost; grant all privileges on test.* to `a@`@localhost;
grant execute on * to `a@`@localhost; grant execute on * to `a@`@localhost;
create table t2 (s1 int); create table t2 (s1 int);
insert into t2 values (1); insert into t2 values (1);
drop function if exists f2; drop function if exists f2;
create function f2 () returns int begin declare v int; select s1 from t2 create function f2 () returns int
into v; return v; end// begin declare v int; select s1 from t2 into v; return v; end//
select f2(); select f2();
f2() f2()
1 1
...@@ -379,3 +380,4 @@ drop function f2; ...@@ -379,3 +380,4 @@ drop function f2;
drop table t2; drop table t2;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM `a@`@localhost; REVOKE ALL PRIVILEGES, GRANT OPTION FROM `a@`@localhost;
drop user `a@`@localhost; drop user `a@`@localhost;
SET GLOBAL log_bin_trust_function_creators = 0;
drop table if exists t1; drop table if exists t1;
SET GLOBAL log_bin_trust_function_creators = 1;
create table t1 (col1 integer primary key, col2 integer) engine=innodb; create table t1 (col1 integer primary key, col2 integer) engine=innodb;
insert t1 values (1,100); insert t1 values (1,100);
create function f1 () returns integer begin create function f1 () returns integer begin
...@@ -18,3 +19,4 @@ rollback; ...@@ -18,3 +19,4 @@ rollback;
rollback; rollback;
drop table t1; drop table t1;
drop function f1; drop function f1;
SET GLOBAL log_bin_trust_function_creators = 0;
...@@ -1500,9 +1500,9 @@ create procedure proc_1() reset query cache; ...@@ -1500,9 +1500,9 @@ create procedure proc_1() reset query cache;
call proc_1(); call proc_1();
call proc_1(); call proc_1();
call proc_1(); call proc_1();
create function func_1() returns int begin reset query cache; return 1; end| create function func_1() returns int deterministic begin reset query cache; return 1; end|
ERROR 0A000: RESET is not allowed in stored function or trigger ERROR 0A000: RESET is not allowed in stored function or trigger
create function func_1() returns int begin call proc_1(); return 1; end| create function func_1() returns int deterministic begin call proc_1(); return 1; end|
select func_1(), func_1(), func_1() from dual; select func_1(), func_1(), func_1() from dual;
ERROR 0A000: RESET is not allowed in stored function or trigger ERROR 0A000: RESET is not allowed in stored function or trigger
drop function func_1; drop function func_1;
......
...@@ -1077,10 +1077,12 @@ create procedure `p1`() ...@@ -1077,10 +1077,12 @@ create procedure `p1`()
begin begin
select a, f1() from t1; select a, f1() from t1;
end// end//
SET GLOBAL log_bin_trust_function_creators = 1;
call p1()// call p1()//
a f1() a f1()
1 2 1 2
2 2 2 2
SET GLOBAL log_bin_trust_function_creators = 0;
drop procedure p1// drop procedure p1//
drop function f1// drop function f1//
drop table t1// drop table t1//
......
...@@ -314,6 +314,7 @@ drop procedure f2; ...@@ -314,6 +314,7 @@ drop procedure f2;
drop procedure f3; drop procedure f3;
drop procedure f4; drop procedure f4;
drop table t1; drop table t1;
SET GLOBAL log_bin_trust_function_creators = 1;
reset query cache; reset query cache;
drop function if exists f1; drop function if exists f1;
create table t1 (id int); create table t1 (id int);
...@@ -345,3 +346,4 @@ id ...@@ -345,3 +346,4 @@ id
drop table t1; drop table t1;
drop function f1; drop function f1;
set GLOBAL query_cache_size=0; set GLOBAL query_cache_size=0;
SET GLOBAL log_bin_trust_function_creators = 0;
set global log_bin_trust_function_creators=0;
set binlog_format=STATEMENT;
create function fn16456()
returns int
begin
return unix_timestamp();
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)
set global log_bin_trust_function_creators=1;
create function fn16456()
returns int
begin
return unix_timestamp();
end|
set global log_bin_trust_function_creators=0;
set binlog_format=ROW;
select fn16456();
fn16456()
timestamp
set binlog_format=STATEMENT;
select fn16456();
ERROR HY000: Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events
drop function fn16456;
...@@ -124,9 +124,6 @@ select * from mysql.proc where name="foo4" and db='mysqltest1'; ...@@ -124,9 +124,6 @@ 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 db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment
select * from mysql.proc where name="foo4" and db='mysqltest1'; 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 db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment
set binlog_format=STATEMENT;
call foo();
ERROR HY000: Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events
drop procedure foo; drop procedure foo;
drop procedure foo2; drop procedure foo2;
drop procedure foo3; drop procedure foo3;
...@@ -255,15 +252,6 @@ select * from t2; ...@@ -255,15 +252,6 @@ select * from t2;
a a
20 20
100 100
set binlog_format=STATEMENT;
create function fn16456()
returns int
begin
return unix_timestamp();
end|
select fn16456();
ERROR HY000: Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events
drop function fn16456;
create trigger trg before insert on t1 for each row set new.a= 10; create trigger trg before insert on t1 for each row set new.a= 10;
ERROR 42000: TRIGGER command denied to user 'zedjzlcsjhd'@'localhost' for table 't1' ERROR 42000: TRIGGER command denied to user 'zedjzlcsjhd'@'localhost' for table 't1'
delete from t1; delete from t1;
...@@ -376,12 +364,6 @@ return 10; ...@@ -376,12 +364,6 @@ return 10;
end end
master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(100) master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(100)
master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(20) master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(20)
master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` function fn16456()
returns int
begin
return unix_timestamp();
end
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn16456
master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 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`; 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`; insert into t1 values (1)
......
...@@ -10,6 +10,7 @@ drop function if exists f1; ...@@ -10,6 +10,7 @@ drop function if exists f1;
drop table if exists t1,t2; drop table if exists t1,t2;
drop view if exists v1; drop view if exists v1;
create table t1 (a int); create table t1 (a int);
SET GLOBAL log_bin_trust_function_creators = 1;
create procedure p1() create procedure p1()
begin begin
declare spv int default 0; declare spv int default 0;
...@@ -234,3 +235,4 @@ drop table t1; ...@@ -234,3 +235,4 @@ drop table t1;
drop function f1; drop function f1;
drop function f2; drop function f2;
drop procedure p1; drop procedure p1;
SET GLOBAL log_bin_trust_function_creators = 0;
...@@ -243,7 +243,7 @@ set x = (select sum(t.i) from test.t2 t); ...@@ -243,7 +243,7 @@ set x = (select sum(t.i) from test.t2 t);
insert into test.t1 values (id, x); insert into test.t1 values (id, x);
end| end|
drop procedure if exists sub3| drop procedure if exists sub3|
create function sub3(i int) returns int create function sub3(i int) returns int deterministic
return i+1| return i+1|
call sub1("sub1a", (select 7))| call sub1("sub1a", (select 7))|
call sub1("sub1b", (select max(i) from t2))| call sub1("sub1b", (select max(i) from t2))|
......
...@@ -269,6 +269,7 @@ select * from t1; ...@@ -269,6 +269,7 @@ select * from t1;
convert_tz(NULL, NULL, NULL) convert_tz(NULL, NULL, NULL)
NULL NULL
drop table t1; drop table t1;
SET GLOBAL log_bin_trust_function_creators = 1;
create table t1 (ldt datetime, udt datetime); create table t1 (ldt datetime, udt datetime);
create function f1(i datetime) returns datetime create function f1(i datetime) returns datetime
return convert_tz(i, 'UTC', 'Europe/Moscow'); return convert_tz(i, 'UTC', 'Europe/Moscow');
...@@ -283,3 +284,4 @@ ldt ldt2 ...@@ -283,3 +284,4 @@ ldt ldt2
2006-04-19 16:30:00 2006-04-19 16:30:00 2006-04-19 16:30:00 2006-04-19 16:30:00
drop table t1; drop table t1;
drop function f1; drop function f1;
SET GLOBAL log_bin_trust_function_creators = 0;
...@@ -586,6 +586,8 @@ select time_format('100:00:00', '%H %k %h %I %l'); ...@@ -586,6 +586,8 @@ select time_format('100:00:00', '%H %k %h %I %l');
# Bug #12562: Make SYSDATE behave like it does in Oracle: always the current # Bug #12562: Make SYSDATE behave like it does in Oracle: always the current
# time, regardless of magic to make NOW() always the same for the # time, regardless of magic to make NOW() always the same for the
# entirety of a statement. # entirety of a statement.
SET GLOBAL log_bin_trust_function_creators = 1;
create table t1 (a timestamp default '2005-05-05 01:01:01', create table t1 (a timestamp default '2005-05-05 01:01:01',
b timestamp default '2005-05-05 01:01:01'); b timestamp default '2005-05-05 01:01:01');
delimiter //; delimiter //;
...@@ -615,6 +617,8 @@ drop trigger t_before; ...@@ -615,6 +617,8 @@ drop trigger t_before;
drop function t_slow_sysdate; drop function t_slow_sysdate;
drop table t1; drop table t1;
SET GLOBAL log_bin_trust_function_creators = 0;
create table t1 (a datetime, i int, b datetime); create table t1 (a datetime, i int, b datetime);
insert into t1 select sysdate(), sleep(1), sysdate() from dual; insert into t1 select sysdate(), sleep(1), sysdate() from dual;
select a != b from t1; select a != b from t1;
......
...@@ -393,7 +393,7 @@ drop table t1; ...@@ -393,7 +393,7 @@ drop table t1;
--disable_warnings --disable_warnings
drop procedure if exists fn3; drop procedure if exists fn3;
--enable_warnings --enable_warnings
create function fn3 () returns point return GeomFromText("point(1 1)"); create function fn3 () returns point deterministic return GeomFromText("point(1 1)");
show create function fn3; show create function fn3;
select astext(fn3()); select astext(fn3());
drop function fn3; drop function fn3;
......
...@@ -484,6 +484,8 @@ flush privileges; ...@@ -484,6 +484,8 @@ flush privileges;
# BUG#13310 incorrect user parsing by SP # BUG#13310 incorrect user parsing by SP
# #
SET GLOBAL log_bin_trust_function_creators = 1;
grant all privileges on test.* to `a@`@localhost; grant all privileges on test.* to `a@`@localhost;
grant execute on * to `a@`@localhost; grant execute on * to `a@`@localhost;
connect (bug13310,localhost,'a@',,test); connect (bug13310,localhost,'a@',,test);
...@@ -494,11 +496,10 @@ insert into t2 values (1); ...@@ -494,11 +496,10 @@ insert into t2 values (1);
drop function if exists f2; drop function if exists f2;
--enable_warnings --enable_warnings
delimiter //; delimiter //;
create function f2 () returns int begin declare v int; select s1 from t2 create function f2 () returns int
into v; return v; end// begin declare v int; select s1 from t2 into v; return v; end//
delimiter ;// delimiter ;//
select f2(); select f2();
drop function f2; drop function f2;
drop table t2; drop table t2;
disconnect bug13310; disconnect bug13310;
...@@ -506,3 +507,5 @@ disconnect bug13310; ...@@ -506,3 +507,5 @@ disconnect bug13310;
connection default; connection default;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM `a@`@localhost; REVOKE ALL PRIVILEGES, GRANT OPTION FROM `a@`@localhost;
drop user `a@`@localhost; drop user `a@`@localhost;
SET GLOBAL log_bin_trust_function_creators = 0;
...@@ -13,6 +13,7 @@ connect (b,localhost,root,,); ...@@ -13,6 +13,7 @@ connect (b,localhost,root,,);
# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to # BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
# non-blocking SELECT # non-blocking SELECT
# #
SET GLOBAL log_bin_trust_function_creators = 1;
create table t1 (col1 integer primary key, col2 integer) engine=innodb; create table t1 (col1 integer primary key, col2 integer) engine=innodb;
insert t1 values (1,100); insert t1 values (1,100);
delimiter |; delimiter |;
...@@ -38,3 +39,4 @@ drop table t1; ...@@ -38,3 +39,4 @@ drop table t1;
drop function f1; drop function f1;
disconnect a; disconnect a;
disconnect b; disconnect b;
SET GLOBAL log_bin_trust_function_creators = 0;
...@@ -1559,8 +1559,8 @@ call proc_1(); ...@@ -1559,8 +1559,8 @@ call proc_1();
call proc_1(); call proc_1();
delimiter |; delimiter |;
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG --error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
create function func_1() returns int begin reset query cache; return 1; end| create function func_1() returns int deterministic begin reset query cache; return 1; end|
create function func_1() returns int begin call proc_1(); return 1; end| create function func_1() returns int deterministic begin call proc_1(); return 1; end|
delimiter ;| delimiter ;|
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG --error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
select func_1(), func_1(), func_1() from dual; select func_1(), func_1(), func_1() from dual;
......
...@@ -788,7 +788,9 @@ create procedure `p1`() ...@@ -788,7 +788,9 @@ create procedure `p1`()
begin begin
select a, f1() from t1; select a, f1() from t1;
end// end//
SET GLOBAL log_bin_trust_function_creators = 1;
call p1()// call p1()//
SET GLOBAL log_bin_trust_function_creators = 0;
drop procedure p1// drop procedure p1//
drop function f1// drop function f1//
......
...@@ -183,6 +183,8 @@ drop table t1; ...@@ -183,6 +183,8 @@ drop table t1;
# #
# bug#14767: INSERT in SF + concurrent SELECT with query cache # bug#14767: INSERT in SF + concurrent SELECT with query cache
# #
SET GLOBAL log_bin_trust_function_creators = 1;
reset query cache; reset query cache;
--disable_warnings --disable_warnings
drop function if exists f1; drop function if exists f1;
...@@ -222,3 +224,4 @@ disconnect con2; ...@@ -222,3 +224,4 @@ disconnect con2;
connection default; connection default;
set GLOBAL query_cache_size=0; set GLOBAL query_cache_size=0;
SET GLOBAL log_bin_trust_function_creators = 0;
# Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
# save status
let $oblf=`select @@SESSION.BINLOG_FORMAT`;
let $otfc=`select @@log_bin_trust_function_creators`;
set global log_bin_trust_function_creators=0;
# fail *on definition*
set binlog_format=STATEMENT;
delimiter |;
--error ER_BINLOG_UNSAFE_ROUTINE
create function fn16456()
returns int
begin
return unix_timestamp();
end|
delimiter ;|
# force in definition, so we can see whether we fail on call
set global log_bin_trust_function_creators=1;
delimiter |;
create function fn16456()
returns int
begin
return unix_timestamp();
end|
delimiter ;|
set global log_bin_trust_function_creators=0;
# allow funcall in RBR
set binlog_format=ROW;
--replace_column 1 timestamp
select fn16456();
# fail funcall in SBR
set binlog_format=STATEMENT;
--error ER_BINLOG_ROW_RBR_TO_SBR
select fn16456();
# restore status
drop function fn16456;
--disable_query_log
eval set binlog_format=$oblf;
eval set global log_bin_trust_function_creators=$otfc;
--enable_query_log
...@@ -173,15 +173,6 @@ select * from mysql.proc where name="foo4" and db='mysqltest1'; ...@@ -173,15 +173,6 @@ select * from mysql.proc where name="foo4" and db='mysqltest1';
sync_slave_with_master; sync_slave_with_master;
select * from mysql.proc where name="foo4" and db='mysqltest1'; select * from mysql.proc where name="foo4" and db='mysqltest1';
# fail if non-deterministic SP is called in SBR, bug#16456
let $oblf=`select @@SESSION.BINLOG_FORMAT`;
set binlog_format=STATEMENT;
--error ER_BINLOG_ROW_RBR_TO_SBR
call foo();
--disable_query_log
eval set binlog_format=$oblf;
--enable_query_log
# ********************** PART 2 : FUNCTIONS *************** # ********************** PART 2 : FUNCTIONS ***************
connection master; connection master;
...@@ -326,25 +317,6 @@ sync_slave_with_master; ...@@ -326,25 +317,6 @@ sync_slave_with_master;
# check that this failed-in-the-middle replicated right: # check that this failed-in-the-middle replicated right:
select * from t2; select * from t2;
# fail if non-deterministic SF is called in SBR, bug#16456
connection master;
let $oblf=`select @@SESSION.BINLOG_FORMAT`;
set binlog_format=STATEMENT;
delimiter |;
create function fn16456()
returns int
begin
return unix_timestamp();
end|
delimiter ;|
--error ER_BINLOG_ROW_RBR_TO_SBR
select fn16456();
--disable_query_log
eval set binlog_format=$oblf;
--enable_query_log
drop function fn16456;
# ********************** PART 3 : TRIGGERS *************** # ********************** PART 3 : TRIGGERS ***************
connection con1; connection con1;
...@@ -555,5 +527,5 @@ set global log_bin_trust_function_creators=0; ...@@ -555,5 +527,5 @@ set global log_bin_trust_function_creators=0;
connection master; connection master;
set global log_bin_trust_function_creators=0; set global log_bin_trust_function_creators=0;
--echo End of 5.0 tests --echo End of 5.0 tests
--echo End of 5.1 tests
--echo End of 5.1 tests
...@@ -20,6 +20,8 @@ drop view if exists v1; ...@@ -20,6 +20,8 @@ drop view if exists v1;
--enable_warnings --enable_warnings
create table t1 (a int); create table t1 (a int);
SET GLOBAL log_bin_trust_function_creators = 1;
# 1. Test simple variables use. # 1. Test simple variables use.
delimiter //; delimiter //;
create procedure p1() create procedure p1()
...@@ -205,3 +207,5 @@ drop function f1; ...@@ -205,3 +207,5 @@ drop function f1;
drop function f2; drop function f2;
drop procedure p1; drop procedure p1;
sync_slave_with_master; sync_slave_with_master;
SET GLOBAL log_bin_trust_function_creators = 0;
...@@ -358,7 +358,7 @@ end| ...@@ -358,7 +358,7 @@ end|
--disable_warnings --disable_warnings
drop procedure if exists sub3| drop procedure if exists sub3|
--enable_warnings --enable_warnings
create function sub3(i int) returns int create function sub3(i int) returns int deterministic
return i+1| return i+1|
call sub1("sub1a", (select 7))| call sub1("sub1a", (select 7))|
......
...@@ -228,6 +228,8 @@ drop table t1; ...@@ -228,6 +228,8 @@ drop table t1;
# Test for bug #11081 "Using a CONVERT_TZ function in a stored function # Test for bug #11081 "Using a CONVERT_TZ function in a stored function
# or trigger fails". # or trigger fails".
# #
SET GLOBAL log_bin_trust_function_creators = 1;
create table t1 (ldt datetime, udt datetime); create table t1 (ldt datetime, udt datetime);
create function f1(i datetime) returns datetime create function f1(i datetime) returns datetime
return convert_tz(i, 'UTC', 'Europe/Moscow'); return convert_tz(i, 'UTC', 'Europe/Moscow');
...@@ -241,4 +243,6 @@ select ldt, f1(udt) as ldt2 from t1; ...@@ -241,4 +243,6 @@ select ldt, f1(udt) as ldt2 from t1;
drop table t1; drop table t1;
drop function f1; drop function f1;
SET GLOBAL log_bin_trust_function_creators = 0;
# End of 5.0 tests # End of 5.0 tests
...@@ -5003,7 +5003,7 @@ Item_func_sp::execute_impl(THD *thd, Field *return_value_fld) ...@@ -5003,7 +5003,7 @@ Item_func_sp::execute_impl(THD *thd, Field *return_value_fld)
Throw an error if a non-deterministic function is called while Throw an error if a non-deterministic function is called while
statement-based replication (SBR) is active. statement-based replication (SBR) is active.
*/ */
if (!m_sp->m_chistics->detistic && if (!m_sp->m_chistics->detistic && !trust_function_creators &&
(mysql_bin_log.is_open() && (mysql_bin_log.is_open() &&
thd->variables.binlog_format == BINLOG_FORMAT_STMT)) thd->variables.binlog_format == BINLOG_FORMAT_STMT))
{ {
......
...@@ -4576,18 +4576,6 @@ mysql_execute_command(THD *thd) ...@@ -4576,18 +4576,6 @@ mysql_execute_command(THD *thd)
goto error; goto error;
} }
/*
Throw an error if a non-deterministic procedure is called while
statement-based replication (SBR) is active.
*/
if (!sp->m_chistics->detistic &&
(mysql_bin_log.is_open() &&
thd->variables.binlog_format == BINLOG_FORMAT_STMT))
{
my_error(ER_BINLOG_ROW_RBR_TO_SBR, MYF(0));
goto error;
}
my_bool nsok= thd->net.no_send_ok; my_bool nsok= thd->net.no_send_ok;
thd->net.no_send_ok= TRUE; thd->net.no_send_ok= TRUE;
if (sp->m_flags & sp_head::MULTI_RESULTS) if (sp->m_flags & sp_head::MULTI_RESULTS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment