Re: WIP: default values for function parameters - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: WIP: default values for function parameters
Date
Msg-id 200811301748.43645.peter_e@gmx.net
Whole thread Raw
In response to Re: WIP: default values for function parameters  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Responses Re: WIP: default values for function parameters  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Re: WIP: default values for function parameters  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: WIP: default values for function parameters  ("Pavel Stehule" <pavel.stehule@gmail.com>)
List 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?


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [BUGS] BUG #4553: HOLD cursors not materializing results fully
Next
From: "Pavel Stehule"
Date:
Subject: Re: WIP: default values for function parameters