
Yes, The API is changed slightly, which I should have made clear.

The number of rows is reported in a member called 'processed'. If actual 
data is returned (i.e. from a select), then that data is returned in the 
'rows' member (it will be a ref to an array of refs to hash.

Run this sample script (requires plperlu) and you will see what's happening:

create function showme(text) returns text language plperlu as $$
 my $query = shift;
 my $rv = spi_exec_query($query);
 use Data::Dumper;
 return Dumper($rv);
$$;
create table tst(i int, v text);
insert into tst values(2,'two');
select showme('select * from tst');
select showme($$insert into tst values(3,'three')$$);
select showme($$create table tst2(q int, r text)$$);
select * from tst;
select showme($$update tst set i = i + 1$$);
select * from tst;


cheers

andrew


elein wrote:

>The README said that $rv->{rows} should return the number of
>rows affected for INSERT, UPDATE & DELETE.  It seems to return NULL.
>@{$rv->{rows}} also returns NULL.
>
>
>-- drop table users ( email text, who text );
>create table users ( email text, who text );
>insert into users values ('someone@somewhere.com', USER);
>
>create or replace function upd_user( text )
>returns integer as
>'
>my $email = $_[0];
>my $qry = "update users set email=''".$email."'' where who = USER ; ";
>my $rv = spi_exec_query( $qry );
>elog NOTICE, $qry;
>elog NOTICE, $rv->{status};
>elog NOTICE, $rv->{rows};
>return $rv->{rows};
>' language 'plperl';
>
>select val_user('me@home');
>
>  
>


Mon, 05 Jul 2004 09:22:37 -0400
Andrew Dunstan <andrew@dunslane.net>
[Fwd: Re: plperl, cvs head w/spi patch, return rows on update returns
	nothing]