variadic function support

From: "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>
To: pgsql-patches <pgsql-patches(at)postgresql(dot)org>
Subject: variadic function support
Date: 2008-06-23 13:13:22
Message-ID: 162867790806230613w5719d25ejd2a03fac84792d18@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

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)

Regards
Pavel Stehule

Attachment Content-Type Size
variadic.1.0.0.diff.gz application/x-gzip 88.5 KB

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Andrew Dunstan 2008-06-23 16:46:28 Re: variadic function support
Previous Message ITAGAKI Takahiro 2008-06-23 06:22:57 WIP: executor_hook for pg_stat_statements