Thread: Variadic polymorpic functions

Variadic polymorpic functions

From
Vincenzo Romano
Date:
Hi all.

I'm using the printf() function as seen here:
http://wiki.postgresql.org/wiki/Sprintf

What I see is that when I call that function with just 1 argument,
it's always OK.
As here:
-- code
mp1=# SELECT printf( '%',now() );
            printf
-------------------------------
 2010-01-22 18:31:24.045347+01
(1 row)

Time: 0.565 ms
tmp1=# SELECT printf( '%',3.1415926535 );
    printf
--------------
 3.1415926535
(1 row)

Time: 0.529 ms
-- end code

As soon as I put a second argument I get an arror:
-- code
tmp1=# SELECT printf( '% %',now(),42 );
ERROR:  function printf(unknown, timestamp with time zone, integer)
does not exist
LINE 1: SELECT printf( '% %',now(),42 );
               ^
HINT:  No function matches the given name and argument types. You
might need to add explicit type casts.
-- end code

which disapperas as soon as I cast all the parameters to text:
-- code
tmp1=# SELECT printf( '% %',now()::text,42::text );
              printf
----------------------------------
 2010-01-22 18:33:10.357877+01 42
(1 row)

Time: 1.956 ms
-- end code
or when all argument types have the same type:
-- code
tmp1=# SELECT printf( '% %',now(),now() );
                           printf
-------------------------------------------------------------
 2010-01-22 18:34:07.055344+01 2010-01-22 18:34:07.055344+01
(1 row)

Time: 0.589 ms
-- end code
I was expecting that a "variadic polymorphic" function was able to
accept a "variable number of arguments of different types" (a-la C),
while it looks to me that it actually means "variable number of
arguments of a single type".

Is this limitation intentional or is it a bug?

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Tom Lane
Date:
Vincenzo Romano <vincenzo.romano@notorand.it> writes:
> I'm using the printf() function as seen here:
> http://wiki.postgresql.org/wiki/Sprintf

... which is "variadic anyarray".

> I was expecting that a "variadic polymorphic" function was able to
> accept a "variable number of arguments of different types" (a-la C),
> while it looks to me that it actually means "variable number of
> arguments of a single type".

Yup.  The array can only contain one element type.

            regards, tom lane

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> I'm using the printf() function as seen here:
>> http://wiki.postgresql.org/wiki/Sprintf
>
> ... which is "variadic anyarray".
>
>> I was expecting that a "variadic polymorphic" function was able to
>> accept a "variable number of arguments of different types" (a-la C),
>> while it looks to me that it actually means "variable number of
>> arguments of a single type".
>
> Yup.  The array can only contain one element type.

Understood.
So there's no way to have a function accepting a VARIADIC ANY. Right?


--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Tom Lane
Date:
Vincenzo Romano <vincenzo.romano@notorand.it> writes:
> So there's no way to have a function accepting a VARIADIC ANY. Right?

Not in PL functions.  You can do it in C if you're desperate (but you
then have to deal with each argument individually --- they're not formed
into an array).

            regards, tom lane

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> So there's no way to have a function accepting a VARIADIC ANY. Right?
>
> Not in PL functions.  You can do it in C if you're desperate (but you
> then have to deal with each argument individually --- they're not formed
> into an array).

How would then be declared such a function with the body written in C?

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Tom Lane
Date:
Vincenzo Romano <vincenzo.romano@notorand.it> writes:
> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>> So there's no way to have a function accepting a VARIADIC ANY. Right?
>>
>> Not in PL functions. �You can do it in C if you're desperate (but you
>> then have to deal with each argument individually --- they're not formed
>> into an array).

> How would then be declared such a function with the body written in C?

I think "variadic any" is exactly it, but too lazy to go look.

            regards, tom lane

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>> So there's no way to have a function accepting a VARIADIC ANY. Right?
>>>
>>> Not in PL functions.  You can do it in C if you're desperate (but you
>>> then have to deal with each argument individually --- they're not formed
>>> into an array).
>
>> How would then be declared such a function with the body written in C?
>
> I think "variadic any" is exactly it, but too lazy to go look.

I fear there's no way!

tmp1=# CREATE FUNCTION q( fmt text, variadic args any )
RETURNS void
LANGUAGE plpgsql
AS $function$
declare
begin
end;
$function$;

ERROR:  syntax error at or near "any"
LINE 1: CREATE FUNCTION q( fmt text, variadic args any )
                                                   ^
tmp1=# CREATE FUNCTION q( fmt text, variadic args anyelement )
RETURNS void
LANGUAGE plpgsql
AS $function$
declare
begin
end;
$function$;

ERROR:  VARIADIC parameter must be an array
#

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Tom Lane
Date:
Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> I think "variadic any" is exactly it, but too lazy to go look.

> I fear there's no way!

> tmp1=# CREATE FUNCTION q( fmt text, variadic args any )

More like this:

regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
regression-# RETURNS void
regression-# LANGUAGE plpgsql
regression-# AS $function$
regression$# declare
regression$# begin
regression$# end;
regression$# $function$;
ERROR:  PL/pgSQL functions cannot accept type "any"

ANY without quotes is a reserved word ...

            regards, tom lane

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>> I think "variadic any" is exactly it, but too lazy to go look.
>
>> I fear there's no way!
>
>> tmp1=# CREATE FUNCTION q( fmt text, variadic args any )
>
> More like this:
>
> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
> regression-# RETURNS void
> regression-# LANGUAGE plpgsql
> regression-# AS $function$
> regression$# declare
> regression$# begin
> regression$# end;
> regression$# $function$;
> ERROR:  PL/pgSQL functions cannot accept type "any"
>
> ANY without quotes is a reserved word ...
>

And this would allow for a stdarg-like argument list?


--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Tom Lane
Date:
Vincenzo Romano <vincenzo.romano@notorand.it> writes:
> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )

> And this would allow for a stdarg-like argument list?

Yeah, it should work, given suitable C code.

            regards, tom lane

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>
>> And this would allow for a stdarg-like argument list?
>
> Yeah, it should work, given suitable C code.

Great!

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>
>>> And this would allow for a stdarg-like argument list?
>>
>> Yeah, it should work, given suitable C code.
>
> Great!
>

I wrote this function year ago.

look on content

http://pgfoundry.org/projects/pstcollection/

Regards
Pavel Stehule
> --
> Vincenzo Romano
> NotOrAnd Information Technologies
> NON QVIETIS MARIBVS NAVTA PERITVS
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>
>>>> And this would allow for a stdarg-like argument list?
>>>
>>> Yeah, it should work, given suitable C code.
>>
>> Great!
>>
>
> I wrote this function year ago.
>
> look on content
>
> http://pgfoundry.org/projects/pstcollection/

Pavel,
that format() function should be included into official contribs.
What about HOWTO compile?

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
> 2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
>> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>>
>>>>> And this would allow for a stdarg-like argument list?
>>>>
>>>> Yeah, it should work, given suitable C code.
>>>
>>> Great!
>>>
>>
>> I wrote this function year ago.
>>
>> look on content
>>
>> http://pgfoundry.org/projects/pstcollection/
>
> Pavel,
> that format() function should be included into official contribs.
> What about HOWTO compile?

There are not consensus about final semantic - some people prefer
sprintf like, some others PostgreSQL RAISE NOTICE like. so I'll keep
it outside. I looking on source of pstcollection - missing
documentation, missing regress test. I never rebuild it outside
PostgreSQL source tree - so it could be problem. Now: copy src to
contrib directory, make, make install - like standard contrib module.

If you would to add some doc or notes, please, add it.

Pavel




>

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/25 Pavel Stehule <pavel.stehule@gmail.com>:
> 2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
>> 2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
>>> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>>>
>>>>>> And this would allow for a stdarg-like argument list?
>>>>>
>>>>> Yeah, it should work, given suitable C code.
>>>>
>>>> Great!
>>>>
>>>
>>> I wrote this function year ago.
>>>
>>> look on content
>>>
>>> http://pgfoundry.org/projects/pstcollection/
>>
>> Pavel,
>> that format() function should be included into official contribs.
>> What about HOWTO compile?
>
> There are not consensus about final semantic - some people prefer
> sprintf like, some others PostgreSQL RAISE NOTICE like. so I'll keep
> it outside. I looking on source of pstcollection - missing
> documentation, missing regress test. I never rebuild it outside
> PostgreSQL source tree - so it could be problem. Now: copy src to
> contrib directory, make, make install - like standard contrib module.
>
> If you would to add some doc or notes, please, add it.

I figured that out (from the Makefile)
USE_PGXS=1 make install


--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
> 2010/1/25 Pavel Stehule <pavel.stehule@gmail.com>:
>> 2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>> 2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
>>>> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>>>>
>>>>>>> And this would allow for a stdarg-like argument list?
>>>>>>
>>>>>> Yeah, it should work, given suitable C code.
>>>>>
>>>>> Great!
>>>>>
>>>>
>>>> I wrote this function year ago.
>>>>
>>>> look on content
>>>>
>>>> http://pgfoundry.org/projects/pstcollection/
>>>
>>> Pavel,
>>> that format() function should be included into official contribs.
>>> What about HOWTO compile?
>>
>> There are not consensus about final semantic - some people prefer
>> sprintf like, some others PostgreSQL RAISE NOTICE like. so I'll keep
>> it outside. I looking on source of pstcollection - missing
>> documentation, missing regress test. I never rebuild it outside
>> PostgreSQL source tree - so it could be problem. Now: copy src to
>> contrib directory, make, make install - like standard contrib module.
>>
>> If you would to add some doc or notes, please, add it.
>
> I figured that out (from the Makefile)
> USE_PGXS=1 make install

ok, if you would, add account on pgfoundry

I'll add you to developer group for pstcollection

Pavel

>
>
> --
> Vincenzo Romano
> NotOrAnd Information Technologies
> NON QVIETIS MARIBVS NAVTA PERITVS
>

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/25 Pavel Stehule <pavel.stehule@gmail.com>:
> 2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
>> 2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
>>> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>>>
>>>>>> And this would allow for a stdarg-like argument list?
>>>>>
>>>>> Yeah, it should work, given suitable C code.
>>>>
>>>> Great!
>>>>
>>>
>>> I wrote this function year ago.
>>>
>>> look on content
>>>
>>> http://pgfoundry.org/projects/pstcollection/
>>
>> Pavel,
>> that format() function should be included into official contribs.
>> What about HOWTO compile?
>
> There are not consensus about final semantic - some people prefer
> sprintf like, some others PostgreSQL RAISE NOTICE like.

Whatever you prefer would be OK as far as it is documented.
In my opinion, the main usage for such a function is in the dynamic SQL code
generation in PL/PgSQL functions:

EXECUTE pst.format( .... );

In this very case the sprintf-like syntax/semantics would be much more
powerful, but
the current one is OK if you think that there's nothing similar at the moment.

Again, this function looks to be a badly missing one and including it
at least into the
default contrib collection would help a lot of users.

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
> 2010/1/25 Pavel Stehule <pavel.stehule@gmail.com>:
>> 2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>> 2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
>>>> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>>>>
>>>>>>> And this would allow for a stdarg-like argument list?
>>>>>>
>>>>>> Yeah, it should work, given suitable C code.
>>>>>
>>>>> Great!
>>>>>
>>>>
>>>> I wrote this function year ago.
>>>>
>>>> look on content
>>>>
>>>> http://pgfoundry.org/projects/pstcollection/
>>>
>>> Pavel,
>>> that format() function should be included into official contribs.
>>> What about HOWTO compile?
>>
>> There are not consensus about final semantic - some people prefer
>> sprintf like, some others PostgreSQL RAISE NOTICE like.
>
> Whatever you prefer would be OK as far as it is documented.
> In my opinion, the main usage for such a function is in the dynamic SQL code
> generation in PL/PgSQL functions:
>
> EXECUTE pst.format( .... );

It could be used for expansion packed values - like formated error messages, ...

>
> In this very case the sprintf-like syntax/semantics would be much more
> powerful, but
> the current one is OK if you think that there's nothing similar at the moment.
>

sprintf is more powerful, but more complex too. You don't need some
specific number formating. We have a formating function to_char, so
sprintf is duplicate.

> Again, this function looks to be a badly missing one and including it
> at least into the
> default contrib collection would help a lot of users.
>

I can remove date function from pstcol and I can move it to some
string helper function contrib module.

Pavel

> --
> Vincenzo Romano
> NotOrAnd Information Technologies
> NON QVIETIS MARIBVS NAVTA PERITVS
>

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
Hello

I add sprintf function. Now I think, we can add new contrib module
(string functions) with both function - format and sprintf. These
functions are relative different, so they can exists separately.
Format is simpler and faster. Sprintf is more powerful but slower.

postgres=# select pst.format('now is %', current_time);
          format
---------------------------
 now is 16:34:26.203728+01
(1 row)

postgres=# select pst.sprintf('now is %s', current_time);
         sprintf
--------------------------
 now is 16:34:45.24919+01

Regards
Pavel Stehule

2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
> 2010/1/25 Pavel Stehule <pavel.stehule@gmail.com>:
>> 2010/1/25 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>> 2010/1/23 Pavel Stehule <pavel.stehule@gmail.com>:
>>>> 2010/1/22 Vincenzo Romano <vincenzo.romano@notorand.it>:
>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>>>>>>> 2010/1/22 Tom Lane <tgl@sss.pgh.pa.us>:
>>>>>>>> regression=# CREATE FUNCTION q( fmt text, variadic args "any" )
>>>>>>
>>>>>>> And this would allow for a stdarg-like argument list?
>>>>>>
>>>>>> Yeah, it should work, given suitable C code.
>>>>>
>>>>> Great!
>>>>>
>>>>
>>>> I wrote this function year ago.
>>>>
>>>> look on content
>>>>
>>>> http://pgfoundry.org/projects/pstcollection/
>>>
>>> Pavel,
>>> that format() function should be included into official contribs.
>>> What about HOWTO compile?
>>
>> There are not consensus about final semantic - some people prefer
>> sprintf like, some others PostgreSQL RAISE NOTICE like.
>
> Whatever you prefer would be OK as far as it is documented.
> In my opinion, the main usage for such a function is in the dynamic SQL code
> generation in PL/PgSQL functions:
>
> EXECUTE pst.format( .... );
>
> In this very case the sprintf-like syntax/semantics would be much more
> powerful, but
> the current one is OK if you think that there's nothing similar at the moment.
>
> Again, this function looks to be a badly missing one and including it
> at least into the
> default contrib collection would help a lot of users.
>
> --
> Vincenzo Romano
> NotOrAnd Information Technologies
> NON QVIETIS MARIBVS NAVTA PERITVS
>

Attachment

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/27 Pavel Stehule <pavel.stehule@gmail.com>:
> Hello
>
> I add sprintf function. Now I think, we can add new contrib module
> (string functions) with both function - format and sprintf. These
> functions are relative different, so they can exists separately.
> Format is simpler and faster. Sprintf is more powerful but slower.
>
> postgres=# select pst.format('now is %', current_time);
>          format
> ---------------------------
>  now is 16:34:26.203728+01
> (1 row)
>
> postgres=# select pst.sprintf('now is %s', current_time);
>         sprintf
> --------------------------
>  now is 16:34:45.24919+01
>
> Regards
> Pavel Stehule

Yeah!

But why still on  separate schema?
I'd rather put them all in the public one, so you don't need the "pst." anymore.
Just like (most of) all other contrib mudules ...

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
2010/1/27 Vincenzo Romano <vincenzo.romano@notorand.it>:
> 2010/1/27 Pavel Stehule <pavel.stehule@gmail.com>:
>> Hello
>>
>> I add sprintf function. Now I think, we can add new contrib module
>> (string functions) with both function - format and sprintf. These
>> functions are relative different, so they can exists separately.
>> Format is simpler and faster. Sprintf is more powerful but slower.
>>
>> postgres=# select pst.format('now is %', current_time);
>>          format
>> ---------------------------
>>  now is 16:34:26.203728+01
>> (1 row)
>>
>> postgres=# select pst.sprintf('now is %s', current_time);
>>         sprintf
>> --------------------------
>>  now is 16:34:45.24919+01
>>
>> Regards
>> Pavel Stehule
>
> Yeah!
>
> But why still on  separate schema?
> I'd rather put them all in the public one, so you don't need the "pst." anymore.
> Just like (most of) all other contrib mudules ...

if you like, you can set a search_path

it is cleaner than put all to public schema. I prefer ADA
modul.function notation - it is more readable for me.

Regards
Pavel Stehule



>

Re: Variadic polymorpic functions

From
Tom Lane
Date:
Vincenzo Romano <vincenzo.romano@notorand.it> writes:
> But why still on  separate schema?
> I'd rather put them all in the public one, so you don't need the "pst." anymore.
> Just like (most of) all other contrib mudules ...

If this were to get committed, it would definitely get made to look just
like all the other contrib modules; so forget the separate schema.

But what I'm wondering is whether it should be contrib or in core.
Is there some potential reason why someone might not want it installed?

            regards, tom lane

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/27 Pavel Stehule <pavel.stehule@gmail.com>:
> 2010/1/27 Vincenzo Romano <vincenzo.romano@notorand.it>:
>> But why still on  separate schema?
>> I'd rather put them all in the public one, so you don't need the "pst." anymore.
>> Just like (most of) all other contrib mudules ...
>
> if you like, you can set a search_path
>
> it is cleaner than put all to public schema. I prefer ADA
> modul.function notation - it is more readable for me.

Correct, but then things like tablefunc should go in a separate schema.
I'd prefer to have consistency more than readability.
But that's just my opinion.

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS

Re: Variadic polymorpic functions

From
Pavel Stehule
Date:
2010/1/27 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> But why still on  separate schema?
>> I'd rather put them all in the public one, so you don't need the "pst." anymore.
>> Just like (most of) all other contrib mudules ...
>
> If this were to get committed, it would definitely get made to look just
> like all the other contrib modules; so forget the separate schema.
>

I have not problem with it. Code to contrib module can be more
modificated. Current code is for pgfoundry and I prefer some
separation.

regards
Pavel

> But what I'm wondering is whether it should be contrib or in core.
> Is there some potential reason why someone might not want it installed?
>

>                        regards, tom lane
>

Re: Variadic polymorpic functions

From
Vincenzo Romano
Date:
2010/1/27 Tom Lane <tgl@sss.pgh.pa.us>:
> Vincenzo Romano <vincenzo.romano@notorand.it> writes:
>> But why still on  separate schema?
>> I'd rather put them all in the public one, so you don't need the "pst." anymore.
>> Just like (most of) all other contrib modules ...
>
> If this were to get committed, it would definitely get made to look just
> like all the other contrib modules; so forget the separate schema.
>
> But what I'm wondering is whether it should be contrib or in core.
> Is there some potential reason why someone might not want it installed?

I'm currently using it to solve a number of problems with dynamic SQL code
in PL/PgSQL functions.

I'm using "EXECUTE psd.format(...)" in order to overcome a number of
"limitations" with the
EXECUTE ... USING form I was not able to solve otherwise.

Something known in the past as "wishful thinking"! :-)

--
Vincenzo Romano
NotOrAnd Information Technologies
NON QVIETIS MARIBVS NAVTA PERITVS