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\\