Обсуждение: WIP: default values for function parameters
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
Вложения
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.
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. >