Odd. I'm sure I didn't remove them. Maybe I applied an old version.
Anyway, patch applied. Thanks!
Tim.
On Sat, Nov 30, 2002 at 08:53:44PM -0500, Steven N. Hirsch wrote:
> Tim,
>
> The following bits of my Proxy patches seem to be missing from the
> released DBI-1.31. I can assure you that localizing the 'die' handler is
> quite necessary to keep client behavior the same between direct connect
> and proxy connect. If you no longer have my message with the original
> rationale, let me know and I can resend.
>
> Regards,
>
> Steve
>
>
>
> --- DBI-1.31/lib/DBD/Proxy.pm.orig Fri Oct 11 12:13:45 2002
> +++ DBI-1.31/lib/DBD/Proxy.pm Wed Sep 18 09:56:20 2002
> @@ -234,6 +234,7 @@
> 'type' => $type,
> 'h' => "DBI::_::$type"
> );
> + local $SIG{__DIE__} = 'DEFAULT';
> my $method_code = UNIVERSAL::can($expand{'h'}, $method) ?
> q/package ~class~;
> sub ~method~ {
> @@ -283,6 +284,7 @@
> }
>
> if ($type eq 'remote' || $type eq 'cached') {
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $dbh->{'proxy_dbh'}->STORE($attr => $val) };
> return DBD::Proxy::proxy_set_err($dbh, $@) if $@; # returns undef
> $dbh->{$attr} = $val if $type eq 'cached';
> @@ -302,6 +304,7 @@
>
> return $dbh->SUPER::FETCH($attr) unless $type eq 'remote';
>
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $dbh->{'proxy_dbh'}->FETCH($attr) };
> return DBD::Proxy::proxy_set_err($dbh, $@) if $@;
> return $result;
> @@ -320,6 +323,7 @@
> if ( $proto_ver > 1 ) {
> $sth->{'proxy_attr_cache'} = {cache_filled => 0};
> my $rdbh = $dbh->{'proxy_dbh'};
> + local $SIG{__DIE__} = 'DEFAULT';
> my $rsth = eval { $rdbh->prepare($sth->{'Statement'}, $sth->{'proxy_attr'},
>undef, $proto_ver) };
> return DBD::Proxy::proxy_set_err($sth, $@) if $@;
> return DBD::Proxy::proxy_set_err($sth, "Constructor didn't return a handle:
>$rsth")
> @@ -355,7 +359,7 @@
> # $dbh->{'proxy_quote'} = 'backslash_escaped';
> # for example.
> # Jochen
> -
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $dbh->{'proxy_dbh'}->quote(@_) };
> return DBD::Proxy::proxy_set_err($dbh, $@) if $@;
> return $result;
> @@ -365,6 +369,7 @@
> my $dbh = shift;
> my $rdbh = $dbh->{'proxy_dbh'};
> #warn "table_info(@_)";
> + local $SIG{__DIE__} = 'DEFAULT';
> my($numFields, $names, $types, @rows) = eval { $rdbh->table_info(@_) };
> return DBD::Proxy::proxy_set_err($dbh, $@) if $@;
> my $sth = DBI::_new_sth($dbh, {
> @@ -395,6 +400,7 @@
>
> sub type_info_all {
> my $dbh = shift;
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $dbh->{'proxy_dbh'}->type_info_all(@_) };
> return DBD::Proxy::proxy_set_err($dbh, $@) if $@;
> return $result;
> @@ -450,6 +456,7 @@
>
> my ($numRows, @outData);
>
> + local $SIG{__DIE__} = 'DEFAULT';
> if ( $proto_ver > 1 ) {
> ($numRows, @outData) = eval { $rsth->execute($params, $proto_ver) };
> return DBD::Proxy::proxy_set_err($sth, $@) if $@;
> @@ -527,6 +534,7 @@
> die "Attempt to fetch row without execute";
> }
> my $num_rows = $sth->FETCH('RowCacheSize') || 20;
> + local $SIG{__DIE__} = 'DEFAULT';
> my @rows = eval { $rsth->fetch($num_rows) };
> return DBD::Proxy::proxy_set_err($sth, $@) if $@;
> unless (@rows == $num_rows) {
> @@ -559,6 +567,7 @@
> ? $sth->{'proxy_no_finish'}
> : $sth->FETCH('Database')->{'proxy_no_finish'};
> unless ($no_finish) {
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $rsth->finish() };
> return DBD::Proxy::proxy_set_err($sth, $@) if $@;
> return $result;
> @@ -581,6 +590,7 @@
>
> if ($type eq 'remote') {
> my $rsth = $sth->{'proxy_sth'} or return undef;
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $rsth->STORE($attr => $val) };
> return DBD::Proxy::proxy_set_err($sth, $@) if ($@);
> return $result;
> @@ -610,6 +620,7 @@
>
> if ($type ne 'local') {
> my $rsth = $sth->{'proxy_sth'} or return undef;
> + local $SIG{__DIE__} = 'DEFAULT';
> my $result = eval { $rsth->FETCH($attr) };
> return DBD::Proxy::proxy_set_err($sth, $@) if $@;
> return $result;
> --- DBI-1.31/lib/DBI/ProxyServer.pm.orig Tue Oct 29 05:00:57 2002
> +++ DBI-1.31/lib/DBI/ProxyServer.pm Tue Sep 17 13:20:02 2002
> @@ -220,7 +220,7 @@
> my $msg = $@;
> undef $dbh->{'private_server'};
> if ($msg) {
> - $server->Error($msg);
> + $server->Debug("CallMethod died with: $@");
> die $msg;
> } else {
> $server->Debug("CallMethod: <= " . join(",", @result));
>