Re: variadic function support - Mailing list pgsql-patches

From Tom Lane
Subject Re: variadic function support
Date
Msg-id 7480.1214275269@sss.pgh.pa.us
Whole thread Raw
In response to Re: variadic function support  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: variadic function support  (Andrew Dunstan <andrew@dunslane.net>)
Re: variadic function support  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Re: variadic function support  ("Pavel Stehule" <pavel.stehule@gmail.com>)
List pgsql-patches
Andrew Dunstan <andrew@dunslane.net> writes:
> But if I have
>   foo( a text, b int[])
> it looks odd if both these calls are legal:
>   foo('a',1,2,3,)
>   foo('a',ARRAY[1,2,3])
> which I understand would be the case with the current patch.

Maybe I misunderstand what is supposed to happen, but I believe that
if the function is marked VARIADIC then the second case would in fact
be rejected: the signature of the function for parameter-matching
purposes is text followed by one or more ints, never text and int[].

> I'm also still curious to know how the following would be handled:
>   foo(a text[], b text[])

I think a is just text[], full stop.  Only the last parameter is
interpreted differently for variadic.

Your point about the syntax is good though.  It would be better if
the syntax were like

    create function foo (a text, variadic b int[])

or maybe even better

    create function foo (a text, variadic b int)

since (a) this makes it much more obvious to the reader what the
function might match, and (b) it leaves the door open for marking
multiple parameters as variadic, if we can figure out what that means.

            regards, tom lane

pgsql-patches by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: variadic function support
Next
From: Andrew Dunstan
Date:
Subject: Re: variadic function support