Re: Help with a plperl function

From: Harald Fuchs <use_reply_to(at)protecting(dot)net>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Help with a plperl function
Date: 2005-04-18 19:24:21
Message-ID: puvf6jdh22.fsf@srv.protecting.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

In article <4263E797(dot)8000500(at)meerkatsoft(dot)com>,
Alex <alex(at)meerkatsoft(dot)com> writes:

> Hi,
> i am having a problem with a plperl function. bellow function always
> returns me an error saying "elements of Perl result array must be
> reference to hash"

> Can anyone point me out what i am doing wrong here?
> Basically i try to return data from a select in a specific record format.
> (i know that bellow example does not require a function, just want to
> get a feel for it.)

> Thanks in advance for any tips.

> Alex

> DROP FUNCTION get_item ();
> DROP TYPE my_items;

> CREATE TYPE my_items AS (
> item_id INTEGER, description TEXT,
> order_date DATE);

> CREATE FUNCTION get_item () RETURNS SETOF my_items AS $$
> my $res = [];
> my $rv = spi_exec_query('SELECT * FROM items LIMIT 10');
> my $nrows = $rv->{processed};
> foreach my $rn (0 .. $nrows - 1) {
> my $row = $rv->{rows}[$rn];
> my @record;
> $record[0] = $row->{item_id};
> $record[1] = $row->{item_descr};
> $record[2] = $row->{start_date};
> push @$res, @record;

This is the culprit. You should instead use something like

push @$res, {
item_id => $row->{item_id},
description => $row->{item_descr},
order_date => $row->{start_date},
};

In response to

Browse pgsql-general by date

  From Date Subject
Next Message jackfitz 2005-04-18 19:25:33 Indexes in PostgreSQL
Previous Message ElayaRaja S 2005-04-18 19:23:55 Uninstall existing - postgesql 7.3.2