On Aug 7, 2010, at 12:24 AM, Pavel Stehule wrote:

>> try=# create or replace function try(bool) returns text language plperl AS 
>> 'shift';
>> CREATE FUNCTION
>> Time: 121.403 ms
>> try=# select try(true);
>>  try
>> -----
>>  t
>> (1 row)
>> 
>> I wish this wasn't so.
>> 
> 
> It must not be - it depends on PL handler implementation. PostgreSQL
> call PL handler with binary values. I am thinking so new Python PL can
> do it well.

I'm thinking an update to PL/Perl would be useful. Frankly, I'd most like to 
see proper array support. But that's another topic.

>> Valid points. I agree that it would be nicer to use RECORDs:
>> 
>>    SELECT foo( row('foo', 1), row('bar', true));
> 
> I am not absolutly satisfied - but it's better, than arrays.

>> Certainly much clearer. But given that we've gone round and round on 
>> allowing non-C functions to use ROWs and gotten nowhere, I don't know that 
>> we'll get any further now. But can you not create a C function that allows a 
>> signature of VARIADIC RECORD?
> 
> you can do a variadic over ROW type. We have not a polymorphic arrays
> - so isn't possible to write VARIADIC RECORD now.

Ah, right. I guess table types can't be cast to RECORD?

> It could be a nice
> if we are to define a own composite types with polymorphic fields.
> Then you can do:
> 
> CREATE TYPE pair AS (key text, value "any");
> CREATE FUNCTION foo(VARIADIC pair[])

Yes.

> other idea is leave arrays - and thinking about key, value collection
> as new kind of data types. so maybe
> 
> CREATE FUNCTION foo(VARIADIC params COLECTION OF text WITH UNIQUE text KEY)

COLLECTION?

David


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to