I think this could be considered a bug in DBD::AdabasD or in the proxy
server code.

DBI::ProxyServer::st::fetch() calls fetchall_arrayref().  This can
cause and infinite recursion and indeed does so with DBD::AdabasD.

Fix is trivial, and for consistancy I also modifed table info to use
SUPER::fetch() rather than fetchall_arrayref().

BTW: Is this the right place to post bugfixes?

*** ProxyServer.pm
--- ProxyServer.pm
***************
*** 289,295 ****
      # DBI::st and not DBI::ProxyServer::st. We could fix this by permitting
      # the client to execute method DBI::st, but I don't like this.
      my @rows;
!     while (my $row = $sth->fetchrow_arrayref()) {
        push(@rows, [@$row]);
      }
      ($numFields, $names, $types, @rows);
--- 289,295 ----
      # DBI::st and not DBI::ProxyServer::st. We could fix this by permitting
      # the client to execute method DBI::st, but I don't like this.
      my @rows;
!     while (my $row = $sth->SUPER::fetch()) {
        push(@rows, [@$row]);
      }
      ($numFields, $names, $types, @rows);
***************
*** 330,336 ****
  sub fetch {
      my $sth = shift; my $numRows = shift || 1;
      my($ref, @rows);
!     while ($numRows--  &&  ($ref = $sth->fetchrow_arrayref())) {
        push(@rows, [@$ref]);
      }
      @rows;
--- 330,336 ----
  sub fetch {
      my $sth = shift; my $numRows = shift || 1;
      my($ref, @rows);
!     while ($numRows--  &&  ($ref = $sth->SUPER::fetch())) {
        push(@rows, [@$ref]);
      }
      @rows;

-- 
     \\   ( )
  .  _\\__[oo
 .__/  \\ /\@
 .  l___\\
  # ll  l\\
 ###LL  LL\\

Reply via email to