Re: Unable to call an overloaded UDF

Поиск
Список
Период
Сортировка
От Bzzzz
Тема Re: Unable to call an overloaded UDF
Дата
Msg-id 20220513015718.5971a546@msi.defcon1.lan
обсуждение исходный текст
Ответ на Unable to call an overloaded UDF  (Hanefi Onaldi <Hanefi.Onaldi@microsoft.com>)
Список pgsql-novice
On Thu, 12 May 2022 23:38:29 +0000
Hanefi Onaldi <Hanefi.Onaldi@microsoft.com> wrote:

> Hello,

Hi,

> I have created 2 functions with the same name, and I am unable to
> call one of them. The first one does not have any parameters, and the
> second one has a single parameter with a default value. The error
> message I get makes sense to me, however the hint is not so helpful
> as I do not see any way I can do a type cast that will make Postgres
> call the function without any parameters in the definition.
>
> Is there a way to make this work? Can this be a bug that needs
> fixing, or is it a known and intended feature?
>
>
> Function definitions:
>
> CREATE FUNCTION f() RETURNS int as $$ SELECT 1 $$ LANGUAGE SQL;
> CREATE FUNCTION f(param int DEFAULT 1) RETURNS int as $$ SELECT param
> $$ LANGUAGE SQL;
>
>
> Error message after I ran a simple query:
>
> postgres # SELECT f();
> ERROR:  42725: function f() is not unique
> LINE 1: SELECT f();
>                ^
> HINT:  Could not choose a best candidate function. You might need to
> add explicit type casts. LOCATION:  ParseFuncOrColumn,
> parse_func.c:577

Looks logical to me, as the 2nd Fn has a _facultative_ parm, hence both
Fn are "equal" as they both can be called without any parm, remove the
"DEFAULT 1" part of the 2nd Fn to see if you still get an error, or if
you really need this default, move one of those into another schema and
call it by it's qualified name : schema_name.Fn_name(…)

Jean-Yves



В списке pgsql-novice по дате отправления:

Предыдущее
От: Hanefi Onaldi
Дата:
Сообщение: Unable to call an overloaded UDF
Следующее
От: mahendrakar s
Дата:
Сообщение: Read rows from a table and process - Need pointers