Обсуждение: WIP: default values for function parameters

Поиск
Список
Период
Сортировка

WIP: default values for function parameters

От
"Pavel Stehule"
Дата:
Hello

attached patch allows to define for any PL language default values for
parameters.

Example:
postgres=# create function fx(a int, b int default 30, c int default 40)
postgres-# returns int as $$ select $1 + $2 + $3; $$
postgres-# language sql;
CREATE FUNCTION
postgres=# select fx();
ERROR:  function fx() does not exist
LINE 1: select fx();
               ^
HINT:  No function matches the given name and argument types. You
might need to add explicit type casts.
postgres=# select fx(10);
 fx
----
 80
(1 row)

postgres=# select fx(10,11);
 fx
----
 61
(1 row)

postgres=# select fx(10,11,12);
 fx
----
 33
(1 row)

Know bugs:
blind ambiguous call detection

comments, ideas?

regards
Pavel Stehule

Вложения

Re: WIP: default values for function parameters

От
Alvaro Herrera
Дата:
Pavel Stehule escribió:

> postgres=# create function fx(a int, b int default 30, c int default 40)
> postgres-# returns int as $$ select $1 + $2 + $3; $$
> postgres-# language sql;

How do you deal with the case where you have
f(a int, b int default 1) and
f(a int, b text default '1')  ?

select f(1);    -- which one do you call?

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


Re: WIP: default values for function parameters

От
"Pavel Stehule"
Дата:
2008/10/27 Alvaro Herrera <alvherre@commandprompt.com>:
> Pavel Stehule escribió:
>
>> postgres=# create function fx(a int, b int default 30, c int default 40)
>> postgres-# returns int as $$ select $1 + $2 + $3; $$
>> postgres-# language sql;
>
> How do you deal with the case where you have
> f(a int, b int default 1) and
> f(a int, b text default '1')  ?
>
> select f(1);    -- which one do you call?

it should raise exception  - but actually it's undefined (I have known
bug in WIP patch).

regards
Pavel


> --
> Alvaro Herrera                                http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>