Author: timbo
Date: Sun May 13 08:45:04 2007
New Revision: 9560
Removed:
dbi/trunk/META.yml
Modified:
dbi/trunk/Changes
dbi/trunk/DBI.pm
dbi/trunk/MANIFEST
dbi/trunk/lib/DBD/Gofer.pm
dbi/trunk/lib/DBD/Gofer/Policy/Base.pm
dbi/trunk/lib/DBD/Gofer/Policy/classic.pm
dbi/trunk/lib/DBD/Gofer/Policy/pedantic.pm
dbi/trunk/lib/DBD/Gofer/Policy/rush.pm
dbi/trunk/lib/DBD/Gofer/Transport/Base.pm
dbi/trunk/lib/DBD/Gofer/Transport/null.pm
dbi/trunk/lib/DBD/Gofer/Transport/pipeone.pm
dbi/trunk/lib/DBD/Gofer/Transport/stream.pm
dbi/trunk/lib/DBI/Gofer/Execute.pm
dbi/trunk/lib/DBI/Gofer/Request.pm
dbi/trunk/lib/DBI/Gofer/Response.pm
dbi/trunk/lib/DBI/Gofer/Transport/Base.pm
dbi/trunk/lib/DBI/Gofer/Transport/pipeone.pm
dbi/trunk/lib/DBI/Gofer/Transport/stream.pm
dbi/trunk/t/85gofer.t
Log:
Removed META.yml so it'll be autogenerated correctly.
Changes default gofo retry_limit from 2 to 0 to be safe.
Enable 'gofer random' behaviour to be specified via Gofer config.
Lots more Gofer docs
Modified: dbi/trunk/Changes
==============================================================================
--- dbi/trunk/Changes (original)
+++ dbi/trunk/Changes Sun May 13 08:45:04 2007
@@ -8,8 +8,6 @@
Assorted TODO notes:
-XXX write up DBI_GOFER_RANDOM
-
Policy principle:
Designed to influence behaviour of unaltered programs
ie go_* attributes take precidence over policy
@@ -41,6 +39,24 @@
Add trace modules that just records the last N trace messages into an array
and prepends them to any error message.
+=head2 Changes in DBI 1.56 (svn rev XXX), 11th May 2007
+
+ Fixed printf arg warnings thanks to JDHEDDEN.
+ Fixed returning driver-private sth attributes via gofer.
+
+ Changed pod docs docs to use =head3 instead of =item
+ so now in html you get links to individual methods etc.
+ Changed default gofer retry_limit from 2 to 0.
+ Changed tests to workaround Math::BigInt broken versions.
+
+ Added DBI_GOFER_RANDOM env var that can be use to trigger random
+ failures and delays when executing gofer requests. Designed to help
+ test automatic retry on failures and timeout handling.
+
+ Add way for gofer executor config to enable extra dbh/sth to be returned
with responses.
+ Add $h->FETCH_many(@attrib_names) method.
+
+
=head2 Changes in DBI 1.55 (svn rev 9504), 4th May 2007
Fixed set_err() so HandleSetErr hook is executed reliably, if set.
Modified: dbi/trunk/DBI.pm
==============================================================================
--- dbi/trunk/DBI.pm (original)
+++ dbi/trunk/DBI.pm Sun May 13 08:45:04 2007
@@ -1323,7 +1323,7 @@
sub EXISTS { defined($_[0]->FETCH($_[1])) } # XXX undef?
sub CLEAR { Carp::carp "Can't CLEAR $_[0] (DBI)" }
- sub FETCH_many { # should move to C one day
+ sub FETCH_many { # XXX should move to C one day
my $h = shift;
return map { $h->FETCH($_) } @_;
}
Modified: dbi/trunk/MANIFEST
==============================================================================
--- dbi/trunk/MANIFEST (original)
+++ dbi/trunk/MANIFEST Sun May 13 08:45:04 2007
@@ -5,7 +5,6 @@
Driver.xst Template driver xs file
Driver_xst.h Template driver xs support code
MANIFEST
-META.yml Module meta-data in YAML
Makefile.PL The Makefile generator
Perl.xs Test harness (currently) for Driver.xst
README
Modified: dbi/trunk/lib/DBD/Gofer.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer.pm (original)
+++ dbi/trunk/lib/DBD/Gofer.pm Sun May 13 08:45:04 2007
@@ -1071,23 +1071,36 @@
=head1 CONFIGURING VIA POLICY
-XXX
+DBD::Gofer supports a 'policy' mechanism that allows you to fine-tune the
number of round-trips to the Gofer server.
+The policies are grouped into classes (which may be subclassed) and referenced
by the name of the class.
-policy=pedantic is most transparent but slow
+The L<DBD::Gofer::Policy::Base> class is the base class for all the policy
+packages and describes all the available policies.
-policy=classic is a reasonable compromise, and is the default
+Three policy packages are supplied with DBD::Gofer:
-policy=rush is fastest but may require code changes in application
+L<DBD::Gofer::Policy::pedantic> is most 'transparent' but slowest because it
+makes more round-trips to the Gofer server.
-See L<DBD::Gofer::Policy::Base> for more information.
+L<DBD::Gofer::Policy::classic> is a reasonable compromise - it's the default
policy.
-=head1 AUTHOR AND COPYRIGHT
+L<DBD::Gofer::Policy::rush> is fastest, but may require code changes in your
applications.
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+Generally the default C<classic> policy is fine. When first testing an existing
+application with Gofer it is a good idea to start with the C<pedantic> policy
+first and then switch to C<classic> or a custom policy, for final testing.
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
=head1 ACKNOWLEDGEMENTS
Modified: dbi/trunk/lib/DBD/Gofer/Policy/Base.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Policy/Base.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Policy/Base.pm Sun May 13 08:45:04 2007
@@ -83,11 +83,40 @@
1;
-=head1 AUTHOR AND COPYRIGHT
+=head1 NAME
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+DBD::Gofer::Policy::Base - Base class for DBD::Gofer policies
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 SYNOPSIS
+
+ $dbh = DBI->connect("dbi:Gofer:transport=...;policy=...", ...)
+
+=head1 DESCRIPTION
+
+The Base policy is not used directly. You should use a policy class derived
from it.
+
+Policies included with DBD::Gofer include:
+
+L<DBD::Gofer::Policy::pedantic> - strictest but slowest
+
+L<DBD::Gofer::Policy::classic> - reasonable strictness and speed - the default
+
+L<DBD::Gofer::Policy::rush> - least strictness, fewest round-trips
+
+These are temporary docs: See the source code for list of policies and their
defaults.
+
+In a future version the policies and their defaults will be defined in the pod
and parsed out at load-time.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+=cut
Modified: dbi/trunk/lib/DBD/Gofer/Policy/classic.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Policy/classic.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Policy/classic.pm Sun May 13 08:45:04 2007
@@ -48,11 +48,32 @@
1;
-=head1 AUTHOR AND COPYRIGHT
+=head1 NAME
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+DBD::Gofer::Policy::classic - The 'classic' policy for DBD::Gofer
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 SYNOPSIS
+
+ $dbh = DBI->connect("dbi:Gofer:transport=...;policy=classic", ...)
+
+The C<classic> policy is the default DBD::Gofer policy, so need not be
included in the DSN.
+
+=head1 DESCRIPTION
+
+Temporary docs: See the source code for list of policies and their defaults.
+
+In a future version the policies and their defaults will be defined in the pod
and parsed out at load-time.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+=cut
Modified: dbi/trunk/lib/DBD/Gofer/Policy/pedantic.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Policy/pedantic.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Policy/pedantic.pm Sun May 13 08:45:04 2007
@@ -18,11 +18,36 @@
1;
-=head1 AUTHOR AND COPYRIGHT
+=head1 NAME
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+DBD::Gofer::Policy::pedantic - The 'pedantic' policy for DBD::Gofer
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 SYNOPSIS
+
+ $dbh = DBI->connect("dbi:Gofer:transport=...;policy=pedantic", ...)
+
+=head1 DESCRIPTION
+
+The C<pedantic> policy tries to be as transparent as possible. To do this it
+makes round-trips to the server for almost every DBI method call.
+
+This is the best policy to use when first testing existing code with Gofer.
+Once it's working well you should consider moving to the C<classic> policy or
defining your own policy class.
+
+Temporary docs: See the source code for list of policies and their defaults.
+
+In a future version the policies and their defaults will be defined in the pod
and parsed out at load-time.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+=cut
Modified: dbi/trunk/lib/DBD/Gofer/Policy/rush.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Policy/rush.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Policy/rush.pm Sun May 13 08:45:04 2007
@@ -58,11 +58,33 @@
1;
-=head1 AUTHOR AND COPYRIGHT
+=head1 NAME
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+DBD::Gofer::Policy::rush - The 'rush' policy for DBD::Gofer
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 SYNOPSIS
+
+ $dbh = DBI->connect("dbi:Gofer:transport=...;policy=rush", ...)
+
+=head1 DESCRIPTION
+
+The C<rush> policy tries to make as few round-trips as possible.
+It's the opposite end of the policy spectrum to the C<pedantic> policy.
+
+Temporary docs: See the source code for list of policies and their defaults.
+
+In a future version the policies and their defaults will be defined in the pod
and parsed out at load-time.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+=cut
Modified: dbi/trunk/lib/DBD/Gofer/Transport/Base.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Transport/Base.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Transport/Base.pm Sun May 13 08:45:04 2007
@@ -18,6 +18,7 @@
trace
go_dsn
go_url
+ go_policy
go_timeout
go_retry_hook
go_retry_limit
@@ -147,9 +148,13 @@
return 0;
}
- my $meta = $request->meta;
my $retry_limit = $self->go_retry_limit;
- $retry_limit = 2 unless defined $retry_limit;
+ # $retry_limit = 2 unless defined $retry_limit; # not safe enough to do
this
+ if (!$retry_limit) {
+ $self->trace_msg("response_needs_retransmit: retries disabled
(retry_limit not set)\n");
+ return 0;
+ }
+ my $meta = $request->meta;
if (($meta->{retry_count}||=0) >= $retry_limit) {
$self->trace_msg("response_needs_retransmit: $meta->{retry_count} is
too many retries\n");
return 0;
@@ -240,19 +245,22 @@
Tracing of gofer requests and reponses can be enabled by setting the
C<DBD_GOFER_TRACE> environment variable. A value of 1 gives a reasonably
-compact summary o each request and response. A value of 2 or more gives a
+compact summary of each request and response. A value of 2 or more gives a
detailed, and voluminous, dump.
The trace is written using DBI->trace_msg() and so is written to the default
DBI trace output, which is usually STDERR.
-=head1 AUTHOR AND COPYRIGHT
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
=head1 SEE ALSO
Modified: dbi/trunk/lib/DBD/Gofer/Transport/null.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Transport/null.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Transport/null.pm Sun May 13 08:45:04 2007
@@ -89,17 +89,21 @@
The C<t/85gofer.t> script in the DBI distribution includes a comparative
benchmark.
-=head1 AUTHOR AND COPYRIGHT
+=head1 AUTHOR
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 LICENCE AND COPYRIGHT
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
=head1 SEE ALSO
+L<DBD::Gofer::Transport::Base>
+
L<DBD::Gofer>
=cut
Modified: dbi/trunk/lib/DBD/Gofer/Transport/pipeone.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Transport/pipeone.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Transport/pipeone.pm Sun May 13 08:45:04 2007
@@ -209,7 +209,7 @@
__END__
=head1 NAME
-
+
DBD::Gofer::Transport::pipeone - DBD::Gofer client transport for testing
=head1 SYNOPSIS
@@ -233,18 +233,21 @@
It also provides a base class for the much more useful
L<DBD::Gofer::Transport::stream>
transport.
-=head1 AUTHOR AND COPYRIGHT
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+=head1 LICENCE AND COPYRIGHT
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
=head1 SEE ALSO
+L<DBD::Gofer::Transport::Base>
+
L<DBD::Gofer>
=cut
-
Modified: dbi/trunk/lib/DBD/Gofer/Transport/stream.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer/Transport/stream.pm (original)
+++ dbi/trunk/lib/DBD/Gofer/Transport/stream.pm Sun May 13 08:45:04 2007
@@ -211,7 +211,7 @@
__END__
=head1 NAME
-
+
DBD::Gofer::Transport::stream - DBD::Gofer transport for stdio streaming
=head1 SYNOPSIS
@@ -270,17 +270,21 @@
Decide on default for persistent connection - on or off? limits? ttl?
-=head1 AUTHOR AND COPYRIGHT
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
=head1 SEE ALSO
+L<DBD::Gofer::Transport::Base>
+
L<DBD::Gofer>
=cut
-
Modified: dbi/trunk/lib/DBI/Gofer/Execute.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Execute.pm (original)
+++ dbi/trunk/lib/DBI/Gofer/Execute.pm Sun May 13 08:45:04 2007
@@ -45,6 +45,7 @@
max_cached_dbh_per_drh => 1,
max_cached_sth_per_dbh => 1,
forced_response_attributes => {},
+ forced_gofer_random => 1,
stats => {},
);
@@ -164,6 +165,13 @@
$dsn = $self->forced_connect_dsn || $dsn || $self->default_connect_dsn
or die "No forced_connect_dsn, requested dsn, or default_connect_dsn
for request";
+ # ensure this connect_cached doesn't have the same args as the client
+ # because that causes subtle issues if in the same process (ie
transport=null)
+ # include pid to avoid problems with forking (ie null transport in
mod_perl)
+ # include gofer-random to avoid random behaviour leaking to other handles
+ my $extra_cache_key = join "|",
+ __PACKAGE__, "$$", $self->{forced_gofer_random} ||
$ENV{DBI_GOFER_RANDOM} || '';
+
# XXX implement our own private connect_cached method? (with rate-limited
ping)
my $dbh = DBI->$connect_method($dsn, undef, undef, {
@@ -192,18 +200,17 @@
# if errors happened before the main part of the request was executed
Executed => 0,
- # ensure this connect_cached doesn't have the same args as the client
- # because that causes subtle issues if in the same process (ie
transport=null)
- # include pid to avoid problems with forking (ie null transport in
mod_perl)
- dbi_go_execute_unique => __PACKAGE__."$$",
+ # ensure connect_cached is sufficiently distinct
+ dbi_go_execute_unique => $extra_cache_key,
});
$dbh->{ShowErrorStatement} = 1 if $local_log;
- # note that this affects previously cached handles because
$ENV{DBI_GOFER_RANDOM}
- # isn't included in the cache key. Could add a go_rand_fail=>... attribute.
- $self->_install_rand_callbacks($dbh, $ENV{DBI_GOFER_RANDOM})
- if $ENV{DBI_GOFER_RANDOM};
+ # XXX should probably just be a Callbacks => arg to connect_cached
+ # with a cache of pre-built callback hoks (memoized, without $self)
+ if (my $random = $self->{forced_gofer_random} || $ENV{DBI_GOFER_RANDOM}) {
+ $self->_install_rand_callbacks($dbh, $random);
+ }
my $CK = $dbh->{CachedKids};
if ($CK && keys %$CK > $self->{max_cached_sth_per_dbh}) {
@@ -708,6 +715,10 @@
Note that this setting can significantly increase memory use. Use with caution.
+=head2 forced_gofer_random
+
+Enable forced random failures and/or delays for testing. See
L</DBI_GOFER_RANDOM> below.
+
=head1 DRIVER-SPECIFIC ISSUES
Gofer needs to know about any driver-private attributes that should have their
@@ -718,6 +729,52 @@
the driver being used. Currently hard-coded details are available for the
mysql, Pg, Sybase, and SQLite drivers.
+=head1 TESTING
+
+DBD::Gofer, DBD::Execute and related packages are well tested by executing the
+DBI test suite with DBI_AUTOPROXY configured to route all DBI calls via
DBD::Gofer.
+
+Because Gofer includes timeout and 'retry on error' mechanisms there is a need
+for some way to trigger delays and/or errors. This can be done via the
+C<forced_gofer_random> configuration item, or else the DBI_GOFER_RANDOM
environment
+variable.
+
+=head2 DBI_GOFER_RANDOM
+
+The value of the C<forced_gofer_random> configuration item (or else the
+DBI_GOFER_RANDOM environment variable) is treated as a series of tokens
+separated by commas.
+
+The tokens can be one of three types:
+
+=over 4
+
+=item fail=R%
+
+Set the current random failure rate to R where R is a percentage. The value R
can be floating point, e.g., C<fail=0.05%>.
+
+=item delayN=R%
+
+Set the current random delay rate to R where R is a percentage, and set the
+current delay duration to N seconds. The values of R and N can be floating
point,
+e.g., C<delay120=0.1%>.
+
+=item methodname
+
+Applies the current current random failure rate and random delay rate and
duration to the named method.
+If neither a fail nor delay have been set yet then a warning is generated.
+
+=back
+
+For example:
+
+ $executor = DBI::Gofer::Execute->new( {
+ forced_gofer_random => "fail=0.01%,do,delay60=1%,execute",
+ });
+
+will cause the do() method to fail for 0.01% of calls, and the execute()
method to
+fail for 0.01% of calls and be delayed by 60 seconds on 1% of calls.
+
=head1 AUTHOR
Tim Bunce, L<http://www.linkedin.com/in/timbunce>
Modified: dbi/trunk/lib/DBI/Gofer/Request.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Request.pm (original)
+++ dbi/trunk/lib/DBI/Gofer/Request.pm Sun May 13 08:45:04 2007
@@ -17,7 +17,7 @@
use constant GOf_REQUEST_IDEMPOTENT => 0x0001;
use constant GOf_REQUEST_READONLY => 0x0002;
-
+
our @EXPORT = qw(GOf_REQUEST_IDEMPOTENT GOf_REQUEST_READONLY);
@@ -151,6 +151,13 @@
1;
+=head1 NAME
+
+DBI::Gofer::Request - Encapsulate a request from DBD::Gofer to
DBI::Gofer::Execute
+
+=head1 DESCRIPTION
+
+This is an internal class.
=head1 AUTHOR
@@ -163,3 +170,4 @@
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
+=cut
Modified: dbi/trunk/lib/DBI/Gofer/Response.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Response.pm (original)
+++ dbi/trunk/lib/DBI/Gofer/Response.pm Sun May 13 08:45:04 2007
@@ -155,11 +155,24 @@
1;
-=head1 AUTHOR AND COPYRIGHT
+=head1 NAME
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+DBI::Gofer::Response - Encapsulate a response from DBI::Gofer::Execute to
DBD::Gofer
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 DESCRIPTION
+
+This is an internal class.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+=cut
Modified: dbi/trunk/lib/DBI/Gofer/Transport/Base.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Transport/Base.pm (original)
+++ dbi/trunk/lib/DBI/Gofer/Transport/Base.pm Sun May 13 08:45:04 2007
@@ -17,7 +17,6 @@
__PACKAGE__->mk_accessors(qw(
trace
- go_policy
serializer_obj
));
@@ -140,11 +139,28 @@
1;
-=head1 AUTHOR AND COPYRIGHT
+=head1 NAME
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+DBI::Gofer::Transport::Base - Base class for Gofer transports
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 DESCRIPTION
+
+This is the base class for server-side Gofer transports.
+
+It's also the base class for the client-side base class
L<DBD::Gofer::Transport::Base>.
+
+This is an internal class.
+
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+=cut
Modified: dbi/trunk/lib/DBI/Gofer/Transport/pipeone.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Transport/pipeone.pm (original)
+++ dbi/trunk/lib/DBI/Gofer/Transport/pipeone.pm Sun May 13 08:45:04 2007
@@ -37,21 +37,23 @@
__END__
=head1 NAME
-
+
DBI::Gofer::Transport::pipeone - DBD::Gofer server-side transport for pipeone
=head1 SYNOPSIS
See L<DBD::Gofer::Transport::pipeone>.
-=head1 AUTHOR AND COPYRIGHT
+=head1 AUTHOR
+
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+=head1 LICENCE AND COPYRIGHT
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
=cut
Modified: dbi/trunk/lib/DBI/Gofer/Transport/stream.pm
==============================================================================
--- dbi/trunk/lib/DBI/Gofer/Transport/stream.pm (original)
+++ dbi/trunk/lib/DBI/Gofer/Transport/stream.pm Sun May 13 08:45:04 2007
@@ -55,21 +55,22 @@
__END__
=head1 NAME
-
+
DBI::Gofer::Transport::stream - DBD::Gofer server-side transport for stream
=head1 SYNOPSIS
See L<DBD::Gofer::Transport::stream>.
-=head1 AUTHOR AND COPYRIGHT
+=head1 AUTHOR
-The DBD::Gofer, DBD::Gofer::* and DBI::Gofer::* modules are
-Copyright (c) 2007 Tim Bunce. Ireland. All rights reserved.
+Tim Bunce, L<http://www.linkedin.com/in/timbunce>
-You may distribute under the terms of either the GNU General Public License or
-the Artistic License, as specified in the Perl README file.
+=head1 LICENCE AND COPYRIGHT
+Copyright (c) 2007, Tim Bunce, Ireland. All rights reserved.
-=cut
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+=cut
Modified: dbi/trunk/t/85gofer.t
==============================================================================
--- dbi/trunk/t/85gofer.t (original)
+++ dbi/trunk/t/85gofer.t Sun May 13 08:45:04 2007
@@ -127,7 +127,7 @@
$dsn = $remote_dsn if $transport eq 'no';
print " $dsn\n";
- my $dbh = DBI->connect($dsn, undef, undef, { RaiseError => 1, PrintError
=> 0 } );
+ my $dbh = DBI->connect($dsn, undef, undef, { RaiseError => 1, PrintError
=> 0, ShowErrorStatement => 1 } );
die "$test_run_tag aborted: $DBI::errstr\n" unless $dbh; # no point
continuing
ok $dbh, sprintf "should connect to %s", $dsn;