mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #25382: Passing NULL to an UDF called from stored procedures
crashes server Check for null value is reliable only after calling some of the val_xxx() methods. If the val_xxx() method is not called the null_value flag will be set only for certain types of NULL values (like SQL constant NULLs for example). This caused a crash while trying to dereference a NULL pointer that is returned by val_str() for NULL values. Fixed by swapping the order of val_xxx() and null_value check.
This commit is contained in:
@ -240,3 +240,37 @@ drop table bug18761;
|
||||
select is_const((1,2,3));
|
||||
ERROR 21000: Operand should contain 1 column(s)
|
||||
drop function if exists is_const;
|
||||
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
|
||||
CREATE FUNCTION myfunc_double RETURNS REAL SONAME "UDF_EXAMPLE_LIB";
|
||||
CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
|
||||
create function f1(p1 varchar(255))
|
||||
returns varchar(255)
|
||||
begin
|
||||
return metaphon(p1);
|
||||
end//
|
||||
create function f2(p1 varchar(255))
|
||||
returns double
|
||||
begin
|
||||
return myfunc_double(p1);
|
||||
end//
|
||||
create function f3(p1 varchar(255))
|
||||
returns double
|
||||
begin
|
||||
return myfunc_int(p1);
|
||||
end//
|
||||
select f3(NULL);
|
||||
f3(NULL)
|
||||
0
|
||||
select f2(NULL);
|
||||
f2(NULL)
|
||||
NULL
|
||||
select f1(NULL);
|
||||
f1(NULL)
|
||||
NULL
|
||||
drop function f1;
|
||||
drop function f2;
|
||||
drop function f3;
|
||||
drop function metaphon;
|
||||
drop function myfunc_double;
|
||||
drop function myfunc_int;
|
||||
End of 5.0 tests.
|
||||
|
Reference in New Issue
Block a user