mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Bug#18761: constant expression as UDF parameters not passed in as constant
The code that set up data to be passed to user-defined functions was very old and analyzed the "Type" of the data that was passed into the UDF, when it really should analyze the "return_type", which is hard-coded for simple Items and works correctly for complex ones like functions. --- Added test at Sergei's behest.
This commit is contained in:
@@ -143,4 +143,41 @@ DROP FUNCTION lookup;
|
||||
DROP FUNCTION reverse_lookup;
|
||||
DROP FUNCTION avgcost;
|
||||
|
||||
#
|
||||
# Bug#18761: constant expression as UDF parameters not passed in as constant
|
||||
#
|
||||
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
||||
eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
|
||||
|
||||
select
|
||||
is_const(3) as const,
|
||||
is_const(3.14) as const,
|
||||
is_const('fnord') as const,
|
||||
is_const(2+3) as const,
|
||||
is_const(rand()) as 'nc rand()',
|
||||
is_const(sin(3.14)) as const,
|
||||
is_const(upper('test')) as const;
|
||||
|
||||
create table bug18761 (n int);
|
||||
insert into bug18761 values (null),(2);
|
||||
select
|
||||
is_const(3) as const,
|
||||
is_const(3.14) as const,
|
||||
is_const('fnord') as const,
|
||||
is_const(2+3) as const,
|
||||
is_const(2+n) as 'nc 2+n ',
|
||||
is_const(sin(n)) as 'nc sin(n)',
|
||||
is_const(sin(3.14)) as const,
|
||||
is_const(upper('test')) as const,
|
||||
is_const(rand()) as 'nc rand()',
|
||||
is_const(n) as 'nc n ',
|
||||
is_const(is_const(n)) as 'nc ic?(n)',
|
||||
is_const(is_const('c')) as const
|
||||
from
|
||||
bug18761;
|
||||
drop table bug18761;
|
||||
|
||||
--error 1241
|
||||
select is_const((1,2,3));
|
||||
|
||||
drop function if exists is_const;
|
||||
|
||||
Reference in New Issue
Block a user