Fixed BUG#2780: Stored procedure exit handler ignored for warnings.
Actually catch pushed warnings.
This commit is contained in:
parent
4a6e6251e7
commit
1541f2e794
@ -1044,6 +1044,28 @@ select @x|
|
|||||||
42
|
42
|
||||||
drop procedure bug2776_1|
|
drop procedure bug2776_1|
|
||||||
drop procedure bug2776_2|
|
drop procedure bug2776_2|
|
||||||
|
drop table if exists t3|
|
||||||
|
create table t3 (s1 smallint)|
|
||||||
|
insert into t3 values (123456789012)|
|
||||||
|
Warnings:
|
||||||
|
Warning 1263 Data truncated, out of range for column 's1' at row 1
|
||||||
|
create procedure bug2780()
|
||||||
|
begin
|
||||||
|
declare exit handler for sqlwarning set @x = 1;
|
||||||
|
set @x = 0;
|
||||||
|
insert into t3 values (123456789012);
|
||||||
|
insert into t3 values (0);
|
||||||
|
end|
|
||||||
|
call bug2780()|
|
||||||
|
select @x|
|
||||||
|
@x
|
||||||
|
1
|
||||||
|
select * from t3|
|
||||||
|
s1
|
||||||
|
32767
|
||||||
|
32767
|
||||||
|
drop procedure bug2780|
|
||||||
|
drop table t3|
|
||||||
drop table if exists fac|
|
drop table if exists fac|
|
||||||
create table fac (n int unsigned not null primary key, f bigint unsigned)|
|
create table fac (n int unsigned not null primary key, f bigint unsigned)|
|
||||||
create procedure ifac(n int unsigned)
|
create procedure ifac(n int unsigned)
|
||||||
|
@ -1215,6 +1215,32 @@ select @x|
|
|||||||
drop procedure bug2776_1|
|
drop procedure bug2776_1|
|
||||||
drop procedure bug2776_2|
|
drop procedure bug2776_2|
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#2780
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t3|
|
||||||
|
--enable_warnings
|
||||||
|
create table t3 (s1 smallint)|
|
||||||
|
|
||||||
|
insert into t3 values (123456789012)|
|
||||||
|
|
||||||
|
create procedure bug2780()
|
||||||
|
begin
|
||||||
|
declare exit handler for sqlwarning set @x = 1;
|
||||||
|
|
||||||
|
set @x = 0;
|
||||||
|
insert into t3 values (123456789012);
|
||||||
|
insert into t3 values (0);
|
||||||
|
end|
|
||||||
|
|
||||||
|
call bug2780()|
|
||||||
|
select @x|
|
||||||
|
select * from t3|
|
||||||
|
|
||||||
|
drop procedure bug2780|
|
||||||
|
drop table t3|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some "real" examples
|
# Some "real" examples
|
||||||
|
@ -43,6 +43,7 @@ This file contains the implementation of error and warnings related
|
|||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
#include "mysql_priv.h"
|
#include "mysql_priv.h"
|
||||||
|
#include "sp_rcontext.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Store a new message in an error object
|
Store a new message in an error object
|
||||||
@ -108,6 +109,9 @@ MYSQL_ERROR *push_warning(THD *thd, MYSQL_ERROR::enum_warning_level level,
|
|||||||
|
|
||||||
MYSQL_ERROR *err= NULL;
|
MYSQL_ERROR *err= NULL;
|
||||||
|
|
||||||
|
if (thd->spcont && thd->spcont->find_handler(code))
|
||||||
|
DBUG_RETURN(NULL);
|
||||||
|
|
||||||
if (thd->warn_list.elements < thd->variables.max_error_count)
|
if (thd->warn_list.elements < thd->variables.max_error_count)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user