Skip site navigation (1) Skip section navigation (2)

Re: variadic function support

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
Cc: pgsql-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: variadic function support
Date: 2008-06-23 16:46:28
Message-ID: 485FD364.5070203@dunslane.net (view raw or flat)
Thread:
Lists: pgsql-patches

Pavel Stehule wrote:
> Hello
>
> this patch enhance current syntax of CREATE FUNCTION statement. It
> allows creating functions with variable number of arguments. This
> version is different than last my patches. It doesn't need patching
> PL. Basic idea is transformation of real arguments (related to
> declared variadic argument) to array. All changes are mostly in
> parser.
>
> Demo:
> CREATE FUNCTION public.least(double precision[]) RETURNS double precision AS $$
>   SELECT min($1[i])
>      FROM generate_subscripts($1,1) g(i)
> $$ LANGUAGE SQL VARIADIC;
>
> SELECT public.least(3,2,1);
>  least
> -------
>      1
> (1 row)
>
> SELECT public.least(3,2,1,0,-1);
>  least
> -------
>     -1
> CREATE FUNCTION concat(varchar, anyarray) RETURNS varchar AS $$
>   SELECT array_to_string($2, $1);
> $$ LANGUAGE SQL VARIADIC;
>
> SELECT concat('-',2008,10,12);
>    concat
> ------------
>  2008-10-12
> (1 row)
>
>
>   
>   

And what about a function that takes 2 arrays as arguments?

This proposal strikes me as half-baked. Either we need proper and full 
support for variadic functions, or we don't, but I don't think we need 
syntactic sugar like the above (or maybe in this case it's really 
syntactic saccharine).

cheers

andrew

In response to

Responses

pgsql-patches by date

Next:From: Tom LaneDate: 2008-06-23 18:10:24
Subject: Re: variadic function support
Previous:From: Pavel StehuleDate: 2008-06-23 13:13:22
Subject: variadic function support

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group