mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
WL#1364: Store some environmental values with SPs and use at invokation
sql_mode is stored and used with SPs. sql_select_limit is always unlimited in SPs. mysql-test/r/sp.result: Test case for mode settings. mysql-test/t/sp.test: Test case for mode settings. sql/sp.cc: Store the sql_mode with the SP and reset it on retrieval. sql_select_limit is always maximum (default) in an SP, regardless of the setting at the time of create or call.
This commit is contained in:
@ -691,6 +691,34 @@ delete from t1;
|
||||
delete from t2;
|
||||
drop table t3;
|
||||
drop procedure cur2;
|
||||
insert into t1 values ("foo", 1), ("bar", 2), ("zip", 3);
|
||||
set @@sql_mode = 'ANSI';
|
||||
create procedure modes(out c1 int, out c2 int)
|
||||
begin
|
||||
declare done int default 0;
|
||||
declare x int;
|
||||
declare continue handler for sqlstate '02000' set done = 1;
|
||||
declare c cursor for select data from t1;
|
||||
select 1 || 2 into c1;
|
||||
set c2 = 0;
|
||||
open c;
|
||||
repeat
|
||||
fetch c into x;
|
||||
if not done then
|
||||
set c2 = c2 + 1;
|
||||
end if;
|
||||
until done end repeat;
|
||||
close c;
|
||||
end;
|
||||
set @@sql_mode = '';
|
||||
set sql_select_limit = 1;
|
||||
call modes(@c1, @c2);
|
||||
set sql_select_limit = default;
|
||||
select @c1, @c2;
|
||||
@c1 @c2
|
||||
12 3
|
||||
delete from t1;
|
||||
drop procedure modes;
|
||||
create procedure bug822(a_id char(16), a_data int)
|
||||
begin
|
||||
declare n int;
|
||||
|
@ -816,6 +816,41 @@ drop table t3|
|
||||
drop procedure cur2|
|
||||
|
||||
|
||||
# Check mode settings
|
||||
insert into t1 values ("foo", 1), ("bar", 2), ("zip", 3)|
|
||||
|
||||
set @@sql_mode = 'ANSI'|
|
||||
delimiter $|
|
||||
create procedure modes(out c1 int, out c2 int)
|
||||
begin
|
||||
declare done int default 0;
|
||||
declare x int;
|
||||
declare continue handler for sqlstate '02000' set done = 1;
|
||||
declare c cursor for select data from t1;
|
||||
|
||||
select 1 || 2 into c1;
|
||||
set c2 = 0;
|
||||
open c;
|
||||
repeat
|
||||
fetch c into x;
|
||||
if not done then
|
||||
set c2 = c2 + 1;
|
||||
end if;
|
||||
until done end repeat;
|
||||
close c;
|
||||
end$
|
||||
delimiter |$
|
||||
set @@sql_mode = ''|
|
||||
|
||||
set sql_select_limit = 1|
|
||||
call modes(@c1, @c2)|
|
||||
set sql_select_limit = default|
|
||||
|
||||
select @c1, @c2|
|
||||
delete from t1|
|
||||
drop procedure modes|
|
||||
|
||||
|
||||
#
|
||||
# Test cases for old bugs
|
||||
#
|
||||
|
Reference in New Issue
Block a user