plperlu hash problem - Mailing list pgsql-sql

From Bart Degryse
Subject plperlu hash problem
Date
Msg-id 46306BC0.A3DD.0030.0@indicator.be
Whole thread Raw
Responses Re: plperlu hash problem  (Richard Huxton <dev@archonet.com>)
List pgsql-sql
I have a little Perl problem. When I call function dbi_select_test like SELECT * from dbi_select_test() I get the expected result.
However when I call SELECT * from dbi_select I get an error message saying "ERROR:  error from Perl function: setof-composite-returning Perl function must call return_next with reference to hash at line 9." My perl knowledge seems to be too limited to find the solution myself. Can anyone help me out or refer me to a better suited forum? Thanks
 
CREATE OR REPLACE FUNCTION "public"."dbi_select_test" () RETURNS SETOF text AS
$body$
use DBI;
 
my $dbh = DBI->connect('dbi:Oracle:bmssa;host=firev120-1.indicator.be;sid=mars', 'bmssa', '********')
          or die "Couldn't connect to database: " . DBI->errstr;
my $sth = $dbh->prepare('SELECT * FROM address')
          or die "Couldn't prepare statement: " . $dbh->errstr;
$sth->execute() or die "Couldn't execute statement: " . $sth->errstr;
while (my $row = $sth->fetchrow_hashref) {
  return_next($$row{'ADDRTABLEID'});
}
$sth->finish;
return;
$body$
LANGUAGE 'plperlu' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
 
CREATE OR REPLACE FUNCTION "public"."dbi_select" () RETURNS SETOF "bmssa"."ADDRESS" AS
$body$
use DBI;
  my $dbh = DBI->connect('dbi:Oracle:bmssa;host=firev120-1.indicator.be;sid=mars', 'bmssa', '********')
            or die "Couldn't connect to database: " . DBI->errstr;
  my $sth = $dbh->prepare('SELECT * FROM address')
            or die "Couldn't prepare statement: " . $dbh->errstr;
  $sth->execute() or die "Couldn't execute statement: " . $sth->errstr;
  while (my %row = $sth->fetchrow_hashref) {
    return_next($row);
  }
  $sth->finish;
return;
$body$
LANGUAGE 'plperlu' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
 
CREATE TABLE "bmssa"."ADDRESS" (
  "ADDRTABLEID" TEXT,
  "ADDRRECID" TEXT,
  "LINENUM" TEXT,
  "TYPE" TEXT,
  "NAME" TEXT,
  "ADDRESS" TEXT,
  "PHONE" TEXT,
  "TELEFAX" TEXT,
  "COUNTRY" TEXT,
  "DEL_SWIFTNUMBER" TEXT,
  "ZIPCODE" TEXT,
  "STATE" TEXT,
  "COUNTY" TEXT,
  "TELEX" TEXT,
  "URL" TEXT,
  "PHONELOCAL" TEXT,
  "CELLULARPHONE" TEXT,
  "EMAIL" TEXT,
  "TAXGROUP" TEXT,
  "CITY" TEXT,
  "STREET" TEXT,
  "PAGER" TEXT,
  "SMS" TEXT,
  "REFZIPCODE" TEXT,
  "DATAAREAID" TEXT,
  "RECID" TEXT
) WITHOUT OIDS;

pgsql-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: Add constraint for number of chars
Next
From: Dmitry Turin
Date:
Subject: Re: Fwd: Re[2]: We all are looped on Internet: request + transport = invariant