Bug#19904: UDF: not initialized *is_null per row
The is_null value was initialized once and thereafter only set to indicate NULL, and never unset to indicate not-NULL. Now set is_null to false, in addition to only setting it to true when the value in question is null.
This commit is contained in:
parent
f25fcf79a5
commit
4bb358924c
@ -76,6 +76,24 @@ call XXX2();
|
||||
metaphon(testval)
|
||||
HL
|
||||
drop procedure xxx2;
|
||||
CREATE TABLE bug19904(n INT, v varchar(10));
|
||||
INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four');
|
||||
SELECT myfunc_double(n) AS f FROM bug19904;
|
||||
f
|
||||
49.00
|
||||
50.00
|
||||
NULL
|
||||
51.00
|
||||
52.00
|
||||
SELECT metaphon(v) AS f FROM bug19904;
|
||||
f
|
||||
ON
|
||||
TW
|
||||
NULL
|
||||
0R
|
||||
FR
|
||||
DROP TABLE bug19904;
|
||||
End of 5.0 tests.
|
||||
DROP FUNCTION metaphon;
|
||||
DROP FUNCTION myfunc_double;
|
||||
DROP FUNCTION myfunc_nonexist;
|
||||
|
@ -99,6 +99,17 @@ delimiter ;//
|
||||
call XXX2();
|
||||
drop procedure xxx2;
|
||||
|
||||
#
|
||||
# Bug#19904: UDF: not initialized *is_null per row
|
||||
#
|
||||
|
||||
CREATE TABLE bug19904(n INT, v varchar(10));
|
||||
INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four');
|
||||
SELECT myfunc_double(n) AS f FROM bug19904;
|
||||
SELECT metaphon(v) AS f FROM bug19904;
|
||||
DROP TABLE bug19904;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
#
|
||||
# Drop the example functions from udf_example
|
||||
@ -114,3 +125,4 @@ DROP FUNCTION lookup;
|
||||
DROP FUNCTION reverse_lookup;
|
||||
DROP FUNCTION avgcost;
|
||||
|
||||
|
||||
|
@ -70,6 +70,7 @@ class udf_handler :public Sql_alloc
|
||||
void cleanup();
|
||||
double val(my_bool *null_value)
|
||||
{
|
||||
is_null= 0;
|
||||
if (get_arguments())
|
||||
{
|
||||
*null_value=1;
|
||||
@ -88,6 +89,7 @@ class udf_handler :public Sql_alloc
|
||||
}
|
||||
longlong val_int(my_bool *null_value)
|
||||
{
|
||||
is_null= 0;
|
||||
if (get_arguments())
|
||||
{
|
||||
*null_value=1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user