On Sun, 2008-08-17 at 11:08 -0400, Tom Lane wrote:
> Hannu Krosing <hannu@2ndQuadrant.com> writes:
> > Actually the most "natural" syntax to me is just f(name=value) similar
> > to how UPDATE does it. It has the added benefit of _not_ forcing us to
> > make a operator reserved (AFAIK "=" can't be used to define new ops)
>
> *What* are you thinking?
I think that we could achieve what Pavel was after by allowing one to
define something similar to keyword arguments in python.
maybe allow input RECORD type, which is instantiated at call time by
giving extra arguments to function call:
CREATE FUNCTION f_kw(r record) ....
and then if you call it like this:
SELECT ... f_kw(name='bob', age=7::int)
then function gets as its input a record
which can be accessed in pl/pgsql like
r.name r.age
and if terseness is really appreciated then the it could also be called
like this
SELECT ... f_kw(name, age) from people where name='bob';
which is rewritten to
SELECT ... f_kw(name=name, age=age) from people where name='bob';
not sure if we should allow defining SETOF RECORD and then enable
calling it with
SELECT * FROM f_kw( VALUES(name='bob', age=7::int), VALUES(name='bill', age=42::int );
or somesuch
------------------
Hannu