Re: proposal sql: labeled function params - Mailing list pgsql-hackers

From Hannu Krosing
Subject Re: proposal sql: labeled function params
Date
Msg-id 1218988559.8075.13.camel@huvostro
Whole thread Raw
In response to Re: proposal sql: labeled function params  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: proposal sql: labeled function params
List pgsql-hackers
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




pgsql-hackers by date:

Previous
From: "Pavel Stehule"
Date:
Subject: Re: proposal sql: labeled function params
Next
From: "Pavel Stehule"
Date:
Subject: Re: proposal sql: labeled function params