Обсуждение: 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. >