Arrays of Records in PL/Perl

From: "David E(dot) Wheeler" <david(at)kineticode(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Arrays of Records in PL/Perl
Date: 2011-07-12 18:45:19
Message-ID: 25EBA9D7-6B0F-4550-8D6F-354CB3185972@kineticode.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hackers,

Given this script:

BEGIN;

CREATE TYPE foo AS ( this int, that int );

CREATE OR REPLACE FUNCTION dump(foo[]) returns text language plperlu AS $$
use Data::Dumper; Dumper shift;
$$;

CREATE OR REPLACE FUNCTION dump(foo) returns text language plperlu AS $$
use Data::Dumper; Dumper shift;
$$;

select dump(row(3, 5)::foo);
select dump(ARRAY[row(3, 5)::foo]);

ROLLBACK;

The output is:

dump
--------------------------
$VAR1 = { +
'that' => '5',+
'this' => '3' +
}; +

(1 row)

Time: 0.936 ms
dump
----------------------
$VAR1 = '{"(3,5)"}';+

(1 row)

That is, if a record is passed to a PL/Perl function, it's correctly converted into a hash. If, however, an array of records are passed, the record are stringified, rather than turned into hashes. This seems inconsistent. Bug?

Thanks,

David

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2011-07-12 18:56:03 Re: Full GUID support
Previous Message Robert Haas 2011-07-12 18:35:02 Re: Full GUID support