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)
|
metaphon(testval)
|
||||||
HL
|
HL
|
||||||
drop procedure xxx2;
|
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 metaphon;
|
||||||
DROP FUNCTION myfunc_double;
|
DROP FUNCTION myfunc_double;
|
||||||
DROP FUNCTION myfunc_nonexist;
|
DROP FUNCTION myfunc_nonexist;
|
||||||
|
@ -99,6 +99,17 @@ delimiter ;//
|
|||||||
call XXX2();
|
call XXX2();
|
||||||
drop procedure 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
|
# Drop the example functions from udf_example
|
||||||
@ -114,3 +125,4 @@ DROP FUNCTION lookup;
|
|||||||
DROP FUNCTION reverse_lookup;
|
DROP FUNCTION reverse_lookup;
|
||||||
DROP FUNCTION avgcost;
|
DROP FUNCTION avgcost;
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,6 +70,7 @@ class udf_handler :public Sql_alloc
|
|||||||
void cleanup();
|
void cleanup();
|
||||||
double val(my_bool *null_value)
|
double val(my_bool *null_value)
|
||||||
{
|
{
|
||||||
|
is_null= 0;
|
||||||
if (get_arguments())
|
if (get_arguments())
|
||||||
{
|
{
|
||||||
*null_value=1;
|
*null_value=1;
|
||||||
@ -88,6 +89,7 @@ class udf_handler :public Sql_alloc
|
|||||||
}
|
}
|
||||||
longlong val_int(my_bool *null_value)
|
longlong val_int(my_bool *null_value)
|
||||||
{
|
{
|
||||||
|
is_null= 0;
|
||||||
if (get_arguments())
|
if (get_arguments())
|
||||||
{
|
{
|
||||||
*null_value=1;
|
*null_value=1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user