Re: plperl and/or insert trigger problem

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: plperl and/or insert trigger problem
Дата
Msg-id 4666D643.1090103@archonet.com
обсуждение исходный текст
Ответ на Re: plperl and/or insert trigger problem  ("Bart Degryse" <Bart.Degryse@indicator.be>)
Ответы Re: plperl and/or insert trigger problem  (Martijn van Oosterhout <kleptog@svana.org>)
Re: plperl and/or insert trigger problem  ("Bart Degryse" <Bart.Degryse@indicator.be>)
Список pgsql-general
Bart Degryse wrote:
> I tend to exclude reason 1: I've dumped the whole array using a debugger and it really contains what I return when
loopingthrough it. 
> As far as I can see it's rather reason 2: execute_for_fetch seems to fill the array incorrectly, that is: it's a
validarray, but the last value added to it also seems to overwrite previously added values. 

Hmm - see below

>
> I seem to have found a workaround but my perl knowledge is too limited to evaluate if it's a good one.

I'm no guru myself...

> When I replace
> my $fetch_tuple_sub = sub { $sel->fetchrow_arrayref };
> by
> my $fetch_tuple_sub = sub {
>   my $ary_ref = $sel->fetchrow_arrayref;
>   print "my method: ".$dbh_pg->errstr."\n" if $dbh_pg->err;
>   return $ary_ref;
>  };
> then the expected exception messages get printed.
> Is this a acceptable way to do it in your opinion?

Looks OK to me, except you'll not get any error message on the last row
- the insert will be called after the fetch.


I've had a quick look at my copy of DBI.pm (Debian Etch - lives in
/usr/lib/perl5/DBI.pm)

Around line 1930, we have the error-handling for execute_for_fetch()

else {
   $err_count++;
   my $err = $sth->err;
   push @$tuple_status, [ $err, $errstr_cache{$err} ||= $sth->errstr,
$sth->state ];
...

Notice how it's taking a copy of the error code ("my $err = ") but not
the error-string? What happens if you change the code to take a copy of
sth->errstr too:

   my ($err,$errstr) = ($sth->err, $sth->errstr);
   push @$tuple_status, [ $err, $errstr_cache{$err} ||= $errstr,
$sth->state];

--
   Richard Huxton
   Archonet Ltd

В списке pgsql-general по дате отправления:

Предыдущее
От: "Bart Degryse"
Дата:
Сообщение: Re: plperl and/or insert trigger problem
Следующее
От: Erwin Brandstetter
Дата:
Сообщение: Re: Join field values