Re: WIP: default values for function parameters

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Cc: "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: WIP: default values for function parameters
Date: 2008-11-30 15:48:42
Message-ID: 200811301748.43645.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thursday 27 November 2008 00:14:19 Pavel Stehule wrote:
> I am sending actualized versions - I accepted Tom's comments - default
> expressions are serialised List stored in text field.

OK, this is looking pretty good.

There is a structural problem that we need to address. With your patch,
pg_dump produces something like this:

CREATE FUNCTION foo(a integer = 1, b integer = 2, c integer = 3) RETURNS
integer
LANGUAGE sql
AS $_$ SELECT $1 + $2 + $3; $_$;

ALTER FUNCTION public.foo(a integer = 1, b integer = 2, c integer = 3) OWNER
TO peter;

The second command is rejected because default values are only accepted in
CREATE FUNCTION.

There are two ways to fix this, both having some validity:

1. We create a second version of pg_get_function_arguments() that produces
arguments without default values decoration. This is probably the
technically sound thing to do.

2. We accept the default values specification and ignore it silently. Note
that we already silently ignore the argument names. ALTER FUNCTION foo(a
int, b int) will also act on a function defined as foo(x int, y int).

Comments?

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2008-11-30 16:09:28 Re: WIP: default values for function parameters
Previous Message Tom Lane 2008-11-29 21:06:54 Re: BUG #4553: HOLD cursors not materializing results fully