Author: timbo
Date: Wed May 9 06:05:23 2007
New Revision: 9530
Modified:
dbi/trunk/DBI.pm
dbi/trunk/Makefile.PL
dbi/trunk/dbiproxy.PL
dbi/trunk/lib/DBD/Gofer.pm
dbi/trunk/lib/DBD/Gofer/Transport/Base.pm
dbi/trunk/lib/DBI/DBD.pm
dbi/trunk/lib/DBI/FAQ.pm
dbi/trunk/lib/DBI/Gofer/Transport/pipeone.pm
dbi/trunk/lib/DBI/Gofer/Transport/stream.pm
Log:
Overhaul pod docs, including using =head3 in the DBI docs
Modified: dbi/trunk/DBI.pm
==============================================================================
--- dbi/trunk/DBI.pm (original)
+++ dbi/trunk/DBI.pm Wed May 9 06:05:23 2007
@@ -2512,9 +2512,7 @@
The following methods are provided by the DBI class:
-=over 4
-
-=item C<parse_dsn>
+=head3 C<parse_dsn>
($scheme, $driver, $attr_string, $attr_hash, $driver_dsn) =
DBI->parse_dsn($dsn)
or die "Can't parse DBI DSN '$dsn'";
@@ -2540,7 +2538,7 @@
The parse_dsn() method was added in DBI 1.43.
-=item C<connect>
+=head3 C<connect>
$dbh = DBI->connect($data_source, $username, $password)
or die $DBI::errstr;
@@ -2680,7 +2678,7 @@
checked if C<DBI_DSN> is not defined. Beware that this "old-style"
C<connect> will soon be withdrawn in a future version of DBI.
-=item C<connect_cached>
+=head3 C<connect_cached>
$dbh = DBI->connect_cached($data_source, $username, $password)
or die $DBI::errstr;
@@ -2735,7 +2733,7 @@
%$CachedKids_hashref = () if $CachedKids_hashref;
-=item C<available_drivers>
+=head3 C<available_drivers>
@ary = DBI->available_drivers;
@ary = DBI->available_drivers($quiet);
@@ -2745,7 +2743,7 @@
some drivers are hidden by others of the same name in earlier
directories. Passing a true value for C<$quiet> will inhibit the warning.
-=item C<installed_drivers>
+=head3 C<installed_drivers>
%drivers = DBI->installed_drivers();
@@ -2758,7 +2756,7 @@
Added in DBI 1.49.
-=item C<installed_versions>
+=head3 C<installed_versions>
DBI->installed_versions;
@ary = DBI->installed_versions;
@@ -2791,7 +2789,7 @@
The installed_versions() method was added in DBI 1.38.
-=item C<data_sources>
+=head3 C<data_sources>
@ary = DBI->data_sources($driver);
@ary = DBI->data_sources($driver, \%attr);
@@ -2814,7 +2812,7 @@
There is also a data_sources() method defined for database handles.
-=item C<trace>
+=head3 C<trace>
DBI->trace($trace_setting)
DBI->trace($trace_setting, $trace_filename)
@@ -2831,7 +2829,6 @@
See the L</TRACING> section for full details about the DBI's powerful
tracing facilities.
-=back
=head2 DBI Utility Functions
@@ -2849,9 +2846,7 @@
use DBI qw(:utils);
-=over 4
-
-=item C<data_string_desc>
+=head3 C<data_string_desc>
$description = data_string_desc($string);
@@ -2873,7 +2868,7 @@
The data_string_desc() function was added in DBI 1.46.
-=item C<data_string_diff>
+=head3 C<data_string_diff>
$diff = data_string_diff($a, $b);
@@ -2900,7 +2895,7 @@
The data_string_diff() function was added in DBI 1.46.
-=item C<data_diff>
+=head3 C<data_diff>
$diff = data_diff($a, $b);
$diff = data_diff($a, $b, $logical);
@@ -2922,7 +2917,7 @@
The data_diff() function was added in DBI 1.46.
-=item C<neat>
+=head3 C<neat>
$str = neat($value);
$str = neat($value, $maxlen);
@@ -2947,7 +2942,7 @@
typically I<not> be used for formatting values for database use.
(See also L</quote>.)
-=item C<neat_list>
+=head3 C<neat_list>
$str = neat_list([EMAIL PROTECTED], $maxlen, $field_sep);
@@ -2955,7 +2950,7 @@
containing the results joined with C<$field_sep>. C<$field_sep> defaults
to C<", ">.
-=item C<looks_like_number>
+=head3 C<looks_like_number>
@bool = looks_like_number(@array);
@@ -2963,7 +2958,7 @@
Returns false for each element that does not look like a number.
Returns C<undef> for each element that is undefined or empty.
-=item C<hash>
+=head3 C<hash>
$hash_value = DBI::hash($buffer, $type);
@@ -2980,8 +2975,6 @@
This function doesn't have much to do with databases, except that
it can be handy to store hash values in a database.
-=back
-
=head2 DBI Dynamic Attributes
@@ -2998,41 +2991,35 @@
calling the method that "sets" them.
If in any doubt, use the corresponding method call.
-=over 4
-
-=item C<$DBI::err>
+=head3 C<$DBI::err>
Equivalent to C<$h-E<gt>err>.
-=item C<$DBI::errstr>
+=head3 C<$DBI::errstr>
Equivalent to C<$h-E<gt>errstr>.
-=item C<$DBI::state>
+=head3 C<$DBI::state>
Equivalent to C<$h-E<gt>state>.
-=item C<$DBI::rows>
+=head3 C<$DBI::rows>
Equivalent to C<$h-E<gt>rows>. Please refer to the documentation
for the L</rows> method.
-=item C<$DBI::lasth>
+=head3 C<$DBI::lasth>
Returns the DBI object handle used for the most recent DBI method call.
If the last DBI method call was a DESTROY then $DBI::lasth will return
the handle of the parent of the destroyed handle, if there is one.
-=back
-
=head1 METHODS COMMON TO ALL HANDLES
The following methods can be used by all types of DBI handles.
-=over 4
-
-=item C<err>
+=head3 C<err>
$rv = $h->err;
@@ -3062,7 +3049,7 @@
See L</set_err> for more information.
-=item C<errstr>
+=head3 C<errstr>
$str = $h->errstr;
@@ -3079,7 +3066,7 @@
See L</set_err> for more information.
-=item C<state>
+=head3 C<state>
$str = $h->state;
@@ -3096,7 +3083,7 @@
for that, because drivers may return a 'success with information' or
warning state code via state() for methods that have not 'failed'.
-=item C<set_err>
+=head3 C<set_err>
$rv = $h->set_err($err, $errstr);
$rv = $h->set_err($err, $errstr, $state);
@@ -3151,7 +3138,7 @@
Support for warning and information states was added in DBI 1.41.
-=item C<trace>
+=head3 C<trace>
$h->trace($trace_settings);
$h->trace($trace_settings, $trace_filename);
@@ -3167,7 +3154,7 @@
See the L</TRACING> section for full details about the DBI's powerful
tracing facilities.
-=item C<trace_msg>
+=head3 C<trace_msg>
$h->trace_msg($message_text);
$h->trace_msg($message_text, $min_level);
@@ -3178,7 +3165,7 @@
See L</TRACING> for more details.
-=item C<func>
+=head3 C<func>
$h->func(@func_arguments, $func_name) or die ...;
@@ -3196,10 +3183,10 @@
Some drivers, such as DBD::Oracle, support it in non-portable ways.
See driver documentation for more details.)
-See also L</install_method> for how you can avoid needing to
-use func() and gain.
+See also install_method() in L<DBI::DBD> for how you can avoid needing to
+use func() and gain direct access to driver-private methods.
-=item C<can>
+=head3 C<can>
$is_implemented = $h->can($method_name);
@@ -3208,7 +3195,7 @@
It returns false where a driver hasn't implemented a method and the
default method is provided by the DBI is just an empty stub.
-=item C<parse_trace_flags>
+=head3 C<parse_trace_flags>
$trace_settings_integer = $h->parse_trace_flags($trace_settings);
@@ -3224,7 +3211,7 @@
The parse_trace_flags() method was added in DBI 1.42.
-=item C<parse_trace_flag>
+=head3 C<parse_trace_flag>
$bit_flag = $h->parse_trace_flag($trace_flag_name);
@@ -3235,7 +3222,7 @@
The parse_trace_flag() method was added in DBI 1.42.
-=item C<private_attribute_info>
+=head3 C<private_attribute_info>
$hash_ref = $h->private_attribute_info();
@@ -3243,7 +3230,7 @@
attributes available for that kind of handle (driver, database, statement).
(The values should be undef. Meanings may be assigned to particular values in
future.)
-=item C<swap_inner_handle>
+=head3 C<swap_inner_handle>
$rc = $h1->swap_inner_handle( $h2 );
$rc = $h1->swap_inner_handle( $h2, $allow_reparent );
@@ -3288,8 +3275,6 @@
dbh1o -> dbh2i
sthAo -> sthBi(dbh2i)
-=back
-
=head1 ATTRIBUTES COMMON TO ALL HANDLES
@@ -3311,9 +3296,7 @@
$h->{AttributeName} = ...; # set/write
... = $h->{AttributeName}; # get/read
-=over 4
-
-=item C<Warn> (boolean, inherited)
+=head3 C<Warn> (boolean, inherited)
The C<Warn> attribute enables useful warnings for certain bad
practices. It is enabled by default and should only be disabled in
@@ -3323,7 +3306,7 @@
The C<Warn> attribute is not related to the C<PrintWarn> attribute.
-=item C<Active> (boolean, read-only)
+=head3 C<Active> (boolean, read-only)
The C<Active> attribute is true if the handle object is "active". This is
rarely used in
applications. The exact meaning of active is somewhat vague at the
@@ -3333,7 +3316,7 @@
that may have more data to fetch. (Fetching all the data or calling
C<$sth-E<gt>finish>
sets C<Active> off.)
-=item C<Executed> (boolean)
+=head3 C<Executed> (boolean)
The C<Executed> attribute is true if the handle object has been "executed".
Currently only the $dbh do() method and the $sth execute(), execute_array(),
@@ -3350,7 +3333,7 @@
The C<Executed> attribute was added in DBI 1.41.
-=item C<Kids> (integer, read-only)
+=head3 C<Kids> (integer, read-only)
For a driver handle, C<Kids> is the number of currently existing database
handles that were created from that driver handle. For a database
@@ -3358,24 +3341,24 @@
were created from that database handle.
For a statement handle, the value is zero.
-=item C<ActiveKids> (integer, read-only)
+=head3 C<ActiveKids> (integer, read-only)
Like C<Kids>, but only counting those that are C<Active> (as above).
-=item C<CachedKids> (hash ref)
+=head3 C<CachedKids> (hash ref)
For a database handle, C<CachedKids> returns a reference to the cache (hash) of
statement handles created by the L</prepare_cached> method. For a
driver handle, returns a reference to the cache (hash) of
database handles created by the L</connect_cached> method.
-=item C<Type> (scalar, read-only)
+=head3 C<Type> (scalar, read-only)
The C<Type> attribute identifies the type of a DBI handle. Returns
"dr" for driver handles, "db" for database handles and "st" for
statement handles.
-=item C<ChildHandles> (array ref)
+=head3 C<ChildHandles> (array ref)
The ChildHandles attribute contains a reference to an array of all the
handles created by this handle which are still accessible. The
@@ -3400,7 +3383,7 @@
my %drivers = DBI->installed_drivers();
show_child_handles($_) for (values %drivers);
-=item C<CompatMode> (boolean, inherited)
+=head3 C<CompatMode> (boolean, inherited)
The C<CompatMode> attribute is used by emulation layers (such as
Oraperl) to enable compatible behaviour in the underlying driver
@@ -3411,7 +3394,7 @@
are handled by the drivers own FETCH method. This makes them slightly
slower but is useful for special-purpose drivers like DBD::Multiplex.
-=item C<InactiveDestroy> (boolean)
+=head3 C<InactiveDestroy> (boolean)
The default value, false, means a handle will be fully destroyed
as normal when the last reference to it is removed, just as you'd expect.
@@ -3439,7 +3422,7 @@
level (not handle trace level) is set high enough to show the trace
from the DBI's method dispatcher, e.g. >= 9.
-=item C<PrintWarn> (boolean, inherited)
+=head3 C<PrintWarn> (boolean, inherited)
The C<PrintWarn> attribute controls the printing of warnings recorded
by the driver. When set to a true value the DBI will check method
@@ -3466,7 +3449,7 @@
still indicate the fact that there were warnings by setting the
warning string to, for example: "3 warnings".
-=item C<PrintError> (boolean, inherited)
+=head3 C<PrintError> (boolean, inherited)
The C<PrintError> attribute can be used to force errors to generate warnings
(using
C<warn>) in addition to returning error codes in the normal way. When set
@@ -3481,7 +3464,7 @@
If desired, the warnings can be caught and processed using a C<$SIG{__WARN__}>
handler or modules like CGI::Carp and CGI::ErrorWrap.
-=item C<RaiseError> (boolean, inherited)
+=head3 C<RaiseError> (boolean, inherited)
The C<RaiseError> attribute can be used to force errors to raise exceptions
rather
than simply return error codes in the normal way. It is "off" by default.
@@ -3529,7 +3512,7 @@
regardless of how the block is exited.
The same logic applies to other attributes, including C<PrintError>.
-=item C<HandleError> (code ref, inherited)
+=head3 C<HandleError> (code ref, inherited)
The C<HandleError> attribute can be used to provide your own alternative
behaviour
in case of errors. If set to a reference to a subroutine then that
@@ -3594,7 +3577,7 @@
recommended for general use! If you find a I<good> use for it then
please let me know.
-=item C<HandleSetErr> (code ref, inherited)
+=head3 C<HandleSetErr> (code ref, inherited)
The C<HandleSetErr> attribute can be used to intercept
the setting of handle C<err>, C<errstr>, and C<state> values.
@@ -3630,7 +3613,7 @@
The C<HandleSetErr> attribute was added in DBI 1.41.
-=item C<ErrCount> (unsigned integer)
+=head3 C<ErrCount> (unsigned integer)
The C<ErrCount> attribute is incremented whenever the set_err()
method records an error. It isn't incremented by warnings or
@@ -3641,7 +3624,7 @@
attribute may not be incremented when using them.
-=item C<ShowErrorStatement> (boolean, inherited)
+=head3 C<ShowErrorStatement> (boolean, inherited)
The C<ShowErrorStatement> attribute can be used to cause the relevant
Statement text to be appended to the error messages generated by
@@ -3654,7 +3637,7 @@
(placeholder) values then those are formatted and appended to the
end of the Statement text in the error message.
-=item C<TraceLevel> (integer, inherited)
+=head3 C<TraceLevel> (integer, inherited)
The C<TraceLevel> attribute can be used as an alternative to the
L</trace> method to set the DBI trace level and trace flags for a
@@ -3663,7 +3646,7 @@
The C<TraceLevel> attribute is especially useful combined with
C<local> to alter the trace settings for just a single block of code.
-=item C<FetchHashKeyName> (string, inherited)
+=head3 C<FetchHashKeyName> (string, inherited)
The C<FetchHashKeyName> attribute is used to specify whether the
fetchrow_hashref()
method should perform case conversion on the field names used for
@@ -3674,7 +3657,7 @@
handles the value is frozen when prepare() is called.
-=item C<ChopBlanks> (boolean, inherited)
+=head3 C<ChopBlanks> (boolean, inherited)
The C<ChopBlanks> attribute can be used to control the trimming of trailing
space
characters from fixed width character (CHAR) fields. No other field
@@ -3688,7 +3671,7 @@
does not support it must arrange to return C<undef> as the attribute value.
-=item C<LongReadLen> (unsigned integer, inherited)
+=head3 C<LongReadLen> (unsigned integer, inherited)
The C<LongReadLen> attribute may be used to control the maximum
length of 'long' type fields (LONG, BLOB, CLOB, MEMO, etc.) which the driver
will
@@ -3735,7 +3718,7 @@
See also L</LongTruncOk> for information on truncation of long types.
-=item C<LongTruncOk> (boolean, inherited)
+=head3 C<LongTruncOk> (boolean, inherited)
The C<LongTruncOk> attribute may be used to control the effect of
fetching a long field value which has been truncated (typically
@@ -3753,7 +3736,7 @@
See also L</LongReadLen>.
-=item C<TaintIn> (boolean, inherited)
+=head3 C<TaintIn> (boolean, inherited)
If the C<TaintIn> attribute is set to a true value I<and> Perl is running in
taint mode (e.g., started with the C<-T> option), then all the arguments
@@ -3768,7 +3751,7 @@
The C<TaintIn> attribute was added in DBI 1.31.
-=item C<TaintOut> (boolean, inherited)
+=head3 C<TaintOut> (boolean, inherited)
If the C<TaintOut> attribute is set to a true value I<and> Perl is running in
taint mode (e.g., started with the C<-T> option), then most data fetched
@@ -3789,7 +3772,7 @@
The C<TaintOut> attribute was added in DBI 1.31.
-=item C<Taint> (boolean, inherited)
+=head3 C<Taint> (boolean, inherited)
The C<Taint> attribute is a shortcut for L</TaintIn> and L</TaintOut> (it is
also present
for backwards compatibility).
@@ -3798,14 +3781,14 @@
it returns a true value if and only if L</TaintIn> and L</TaintOut> are
both set to true values.
-=item C<Profile> (inherited)
+=head3 C<Profile> (inherited)
The C<Profile> attribute enables the collection and reporting of method call
timing statistics.
See the L<DBI::Profile> module documentation for I<much> more detail.
The C<Profile> attribute was added in DBI 1.24.
-=item C<ReadOnly> (boolean, inherited)
+=head3 C<ReadOnly> (boolean, inherited)
An application can set the C<ReadOnly> attribute of a handle to a true value to
indicate that it will not be attempting to make any changes using that handle
@@ -3827,7 +3810,7 @@
The attribute should be set to 1 or 0 (or undef). Other values are reserved.
-=item C<private_your_module_name_*>
+=head3 C<private_your_module_name_*>
The DBI provides a way to store extra information in a DBI handle as
"private" attributes. The DBI will allow you to store and retrieve any
@@ -3851,9 +3834,6 @@
This attribute is primarily of interest to people sub-classing DBI,
or for applications to piggy-back extra information onto DBI handles.
-=back
-
-
=head1 DBI DATABASE HANDLE OBJECTS
This section covers the methods and attributes associated with
@@ -3863,9 +3843,7 @@
The following methods are specified for DBI database handles:
-=over 4
-
-=item C<clone>
+=head3 C<clone>
$new_dbh = $dbh->clone();
$new_dbh = $dbh->clone(\%attr);
@@ -3893,7 +3871,7 @@
The C<clone> method was added in DBI 1.33. It is very new and likely
to change.
-=item C<data_sources>
+=head3 C<data_sources>
@ary = $dbh->data_sources();
@ary = $dbh->data_sources(\%attr);
@@ -3909,7 +3887,7 @@
The data_sources() method, for a $dbh, was added in DBI 1.38.
-=item C<do>
+=head3 C<do>
$rows = $dbh->do($statement) or die $dbh->errstr;
$rows = $dbh->do($statement, \%attr) or die $dbh->errstr;
@@ -3953,7 +3931,7 @@
C<qq{...}> operator if you want to interpolate variables into the string.
See L<perlop/"Quote and Quote-like Operators"> for more details.
-=item C<last_insert_id>
+=head3 C<last_insert_id>
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field, \%attr);
@@ -4006,7 +3984,7 @@
The C<last_insert_id> method was added in DBI 1.38.
-=item C<selectrow_array>
+=head3 C<selectrow_array>
@row_ary = $dbh->selectrow_array($statement);
@row_ary = $dbh->selectrow_array($statement, \%attr);
@@ -4031,7 +4009,7 @@
C<selectrow_array> in a scalar context, or just don't do that.
-=item C<selectrow_arrayref>
+=head3 C<selectrow_arrayref>
$ary_ref = $dbh->selectrow_arrayref($statement);
$ary_ref = $dbh->selectrow_arrayref($statement, \%attr);
@@ -4046,7 +4024,7 @@
will return undef.
-=item C<selectrow_hashref>
+=head3 C<selectrow_hashref>
$hash_ref = $dbh->selectrow_hashref($statement);
$hash_ref = $dbh->selectrow_hashref($statement, \%attr);
@@ -4061,7 +4039,7 @@
will return undef.
-=item C<selectall_arrayref>
+=head3 C<selectall_arrayref>
$ary_ref = $dbh->selectall_arrayref($statement);
$ary_ref = $dbh->selectall_arrayref($statement, \%attr);
@@ -4114,7 +4092,7 @@
See L</fetchall_arrayref> method for more details.
-=item C<selectall_hashref>
+=head3 C<selectall_hashref>
$hash_ref = $dbh->selectall_hashref($statement, $key_field);
$hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr);
@@ -4142,7 +4120,7 @@
See fetchall_hashref() for more details.
-=item C<selectcol_arrayref>
+=head3 C<selectcol_arrayref>
$ary_ref = $dbh->selectcol_arrayref($statement);
$ary_ref = $dbh->selectcol_arrayref($statement, \%attr);
@@ -4175,7 +4153,7 @@
You can specify a maximum number of rows to fetch by including a
'C<MaxRows>' attribute in \%attr.
-=item C<prepare>
+=head3 C<prepare>
$sth = $dbh->prepare($statement) or die $dbh->errstr;
$sth = $dbh->prepare($statement, \%attr) or die $dbh->errstr;
@@ -4210,7 +4188,7 @@
be used with the DBI.
-=item C<prepare_cached>
+=head3 C<prepare_cached>
$sth = $dbh->prepare_cached($statement)
$sth = $dbh->prepare_cached($statement, \%attr)
@@ -4310,7 +4288,7 @@
my $cache = $dbh->{CachedKids};
tie %$cache, 'Tie::Cache::LRU', 500;
-=item C<commit>
+=head3 C<commit>
$rc = $dbh->commit or die $dbh->errstr;
@@ -4322,7 +4300,7 @@
See also L</Transactions> in the L</FURTHER INFORMATION> section below.
-=item C<rollback>
+=head3 C<rollback>
$rc = $dbh->rollback or die $dbh->errstr;
@@ -4334,7 +4312,7 @@
See also L</Transactions> in the L</FURTHER INFORMATION> section below.
-=item C<begin_work>
+=head3 C<begin_work>
$rc = $dbh->begin_work or die $dbh->errstr;
@@ -4350,7 +4328,7 @@
See also L</Transactions> in the L</FURTHER INFORMATION> section below.
-=item C<disconnect>
+=head3 C<disconnect>
$rc = $dbh->disconnect or warn $dbh->errstr;
@@ -4383,7 +4361,7 @@
To avoid the warning call the C<finish> method on the active handles.
-=item C<ping>
+=head3 C<ping>
$rc = $dbh->ping;
@@ -4402,7 +4380,7 @@
Apache::DBI module for one example usage.
-=item C<get_info>
+=head3 C<get_info>
$value = $dbh->get_info( $info_type );
@@ -4436,7 +4414,7 @@
41 SQL_CATALOG_NAME_SEPARATOR '.' '@'
114 SQL_CATALOG_LOCATION 1 2
-=item C<table_info>
+=head3 C<table_info>
$sth = $dbh->table_info( $catalog, $schema, $table, $type );
$sth = $dbh->table_info( $catalog, $schema, $table, $type, \%attr );
@@ -4515,7 +4493,7 @@
See also L</tables>, L</"Catalog Methods"> and
L</"Standards Reference Information">.
-=item C<column_info>
+=head3 C<column_info>
$sth = $dbh->column_info( $catalog, $schema, $table, $column );
@@ -4632,7 +4610,7 @@
See also L</"Catalog Methods"> and L</"Standards Reference Information">.
-=item C<primary_key_info>
+=head3 C<primary_key_info>
$sth = $dbh->primary_key_info( $catalog, $schema, $table );
@@ -4674,7 +4652,7 @@
See also L</"Catalog Methods"> and L</"Standards Reference Information">.
-=item C<primary_key>
+=head3 C<primary_key>
@key_column_names = $dbh->primary_key( $catalog, $schema, $table );
@@ -4683,7 +4661,7 @@
The list is in primary key column sequence order.
If there is no primary key then an empty list is returned.
-=item C<foreign_key_info>
+=head3 C<foreign_key_info>
$sth = $dbh->foreign_key_info( $pk_catalog, $pk_schema, $pk_table
, $fk_catalog, $fk_schema, $fk_table );
@@ -4805,7 +4783,7 @@
See also L</"Catalog Methods"> and L</"Standards Reference Information">.
-=item C<statistics_info>
+=head3 C<statistics_info>
B<Warning:> This method is experimental and may change.
@@ -4895,7 +4873,7 @@
See also L</"Catalog Methods"> and L</"Standards Reference Information">.
-=item C<tables>
+=head3 C<tables>
@names = $dbh->tables( $catalog, $schema, $table, $type );
@names = $dbh->tables; # deprecated
@@ -4911,7 +4889,7 @@
words etc. This means that the table names returned will include
quote characters.
-=item C<type_info_all>
+=head3 C<type_info_all>
$type_info_all = $dbh->type_info_all;
@@ -4980,7 +4958,7 @@
The L</type_info> method provides a more usable and useful interface
to the data.
-=item C<type_info>
+=head3 C<type_info>
@type_info = $dbh->type_info($data_type);
@@ -5152,7 +5130,7 @@
See also L</"Standards Reference Information">.
-=item C<quote>
+=head3 C<quote>
$sql = $dbh->quote($value);
$sql = $dbh->quote($value, $data_type);
@@ -5192,7 +5170,7 @@
The quote() method should I<not> be used with L</"Placeholders and
Bind Values">.
-=item C<quote_identifier>
+=head3 C<quote_identifier>
$sql = $dbh->quote_identifier( $name );
$sql = $dbh->quote_identifier( $catalog, $schema, $table, \%attr );
@@ -5218,7 +5196,7 @@
would return C<"schema"."table"@"link">.
-=item C<take_imp_data>
+=head3 C<take_imp_data>
$imp_data = $dbh->take_imp_data;
@@ -5253,8 +5231,6 @@
The C<take_imp_data> method was added in DBI 1.36 but wasn't useful till 1.49.
-=back
-
=head2 Database Handle Attributes
@@ -5272,9 +5248,7 @@
$h->{AutoCommit} = ...; # set/write
... = $h->{AutoCommit}; # get/read
-=over 4
-
-=item C<AutoCommit> (boolean)
+=head3 C<AutoCommit> (boolean)
If true, then database changes cannot be rolled-back (undone). If false,
then database changes automatically occur within a "transaction", which
@@ -5344,7 +5318,7 @@
notes about transactions.
-=item C<Driver> (handle)
+=head3 C<Driver> (handle)
Holds the handle of the parent driver. The only recommended use for this
is to find the name of the driver using:
@@ -5352,14 +5326,14 @@
$dbh->{Driver}->{Name}
-=item C<Name> (string)
+=head3 C<Name> (string)
Holds the "name" of the database. Usually (and recommended to be) the
same as the "C<dbi:DriverName:...>" string used to connect to the database,
but with the leading "C<dbi:DriverName:>" removed.
-=item C<Statement> (string, read-only)
+=head3 C<Statement> (string, read-only)
Returns the statement string passed to the most recent L</prepare> method
called in this database handle, even if that method failed. This is especially
@@ -5367,7 +5341,7 @@
and sees that a 'prepare' method call failed.
-=item C<RowCacheSize> (integer)
+=head3 C<RowCacheSize> (integer)
A hint to the driver indicating the size of the local row cache that the
application would like the driver to use for future C<SELECT> statements.
@@ -5388,14 +5362,11 @@
See also the L</RowsInCache> statement handle attribute.
-=item C<Username> (string)
+=head3 C<Username> (string)
Returns the username used to connect to the database.
-=back
-
-
=head1 DBI STATEMENT HANDLE OBJECTS
This section lists the methods and attributes associated with DBI
@@ -5405,9 +5376,7 @@
The DBI defines the following methods for use on DBI statement handles:
-=over 4
-
-=item C<bind_param>
+=head3 C<bind_param>
$sth->bind_param($p_num, $bind_value)
$sth->bind_param($p_num, $bind_value, \%attr)
@@ -5480,7 +5449,7 @@
See also L</"Placeholders and Bind Values"> for more information.
-=item C<bind_param_inout>
+=head3 C<bind_param_inout>
$rc = $sth->bind_param_inout($p_num, \$bind_value, $max_len) or die
$sth->errstr;
$rv = $sth->bind_param_inout($p_num, \$bind_value, $max_len, \%attr) or
...
@@ -5506,7 +5475,7 @@
See also L</"Placeholders and Bind Values"> for more information.
-=item C<bind_param_array>
+=head3 C<bind_param_array>
$rc = $sth->bind_param_array($p_num, $array_ref_or_value)
$rc = $sth->bind_param_array($p_num, $array_ref_or_value, \%attr)
@@ -5554,7 +5523,7 @@
The C<bind_param_array> method was added in DBI 1.22.
-=item C<execute>
+=head3 C<execute>
$rv = $sth->execute or die $sth->errstr;
$rv = $sth->execute(@bind_values) or die $sth->errstr;
@@ -5593,7 +5562,7 @@
to tidy up the previous execution results before starting this new
execution.
-=item C<execute_array>
+=head3 C<execute_array>
$tuples = $sth->execute_array(\%attr) or die $sth->errstr;
$tuples = $sth->execute_array(\%attr, @bind_values) or die $sth->errstr;
@@ -5730,7 +5699,7 @@
The C<execute_array> method was added in DBI 1.22, and ArrayTupleFetch
was added in 1.36.
-=item C<execute_for_fetch>
+=head3 C<execute_for_fetch>
$tuples = $sth->execute_for_fetch($fetch_tuple_sub);
$tuples = $sth->execute_for_fetch($fetch_tuple_sub, [EMAIL PROTECTED]);
@@ -5804,7 +5773,7 @@
The C<execute_for_fetch> method was added in DBI 1.38.
-=item C<fetchrow_arrayref>
+=head3 C<fetchrow_arrayref>
$ary_ref = $sth->fetchrow_arrayref;
$ary_ref = $sth->fetch; # alias
@@ -5825,7 +5794,7 @@
elements of the array are also reused for each row, so take care if you
want to take a reference to an element. See also L</bind_columns>.
-=item C<fetchrow_array>
+=head3 C<fetchrow_array>
@ary = $sth->fetchrow_array;
@@ -5847,7 +5816,7 @@
For these reasons you should exercise some caution if you use
C<fetchrow_array> in a scalar context.
-=item C<fetchrow_hashref>
+=head3 C<fetchrow_hashref>
$hash_ref = $sth->fetchrow_hashref;
$hash_ref = $sth->fetchrow_hashref($name);
@@ -5879,7 +5848,7 @@
be enabled by default because of the risk of breaking old code.
-=item C<fetchall_arrayref>
+=head3 C<fetchall_arrayref>
$tbl_ary_ref = $sth->fetchall_arrayref;
$tbl_ary_ref = $sth->fetchall_arrayref( $slice );
@@ -5958,7 +5927,7 @@
would then shift the balance back towards fetchall_arrayref().
-=item C<fetchall_hashref>
+=head3 C<fetchall_hashref>
$hash_ref = $sth->fetchall_hashref($key_field);
@@ -6003,7 +5972,7 @@
with the same values for the key fields then later rows overwrite
earlier ones.
-=item C<finish>
+=head3 C<finish>
$rc = $sth->finish;
@@ -6045,7 +6014,7 @@
The C<finish> method should have been called C<discard_pending_rows>.
-=item C<rows>
+=head3 C<rows>
$rv = $sth->rows;
@@ -6068,7 +6037,7 @@
query and then fetch the row count from that.
-=item C<bind_col>
+=head3 C<bind_col>
$rc = $sth->bind_col($column_number, \$var_to_bind);
$rc = $sth->bind_col($column_number, \$var_to_bind, \%attr );
@@ -6131,7 +6100,7 @@
The TYPE attribute for bind_col() was first specified in DBI 1.41.
-=item C<bind_columns>
+=head3 C<bind_columns>
$rc = $sth->bind_columns(@list_of_refs_to_vars_to_bind);
@@ -6176,7 +6145,7 @@
}
-=item C<dump_results>
+=head3 C<dump_results>
$rows = $sth->dump_results($maxlen, $lsep, $fsep, $fh);
@@ -6189,8 +6158,6 @@
format and edit the string for reading by humans, it is not recomended
for data transfer applications.
-=back
-
=head2 Statement Handle Attributes
@@ -6219,22 +6186,20 @@
See also L</finish> to learn more about the effect it
may have on some attributes.
-=over 4
-
-=item C<NUM_OF_FIELDS> (integer, read-only)
+=head3 C<NUM_OF_FIELDS> (integer, read-only)
Number of fields (columns) in the data the prepared statement may return.
Statements that don't return rows of data, like C<DELETE> and C<CREATE>
set C<NUM_OF_FIELDS> to 0 (though it may be undef in some drivers).
-=item C<NUM_OF_PARAMS> (integer, read-only)
+=head3 C<NUM_OF_PARAMS> (integer, read-only)
The number of parameters (placeholders) in the prepared statement.
See SUBSTITUTION VARIABLES below for more details.
-=item C<NAME> (array-ref, read-only)
+=head3 C<NAME> (array-ref, read-only)
Returns a reference to an array of field names for each column. The
names may contain spaces but should not be truncated or have any
@@ -6244,19 +6209,19 @@
print "First column name: $sth->{NAME}->[0]\n";
-=item C<NAME_lc> (array-ref, read-only)
+=head3 C<NAME_lc> (array-ref, read-only)
Like L</NAME> but always returns lowercase names.
-=item C<NAME_uc> (array-ref, read-only)
+=head3 C<NAME_uc> (array-ref, read-only)
Like L</NAME> but always returns uppercase names.
-=item C<NAME_hash> (hash-ref, read-only)
+=head3 C<NAME_hash> (hash-ref, read-only)
-=item C<NAME_lc_hash> (hash-ref, read-only)
+=head3 C<NAME_lc_hash> (hash-ref, read-only)
-=item C<NAME_uc_hash> (hash-ref, read-only)
+=head3 C<NAME_uc_hash> (hash-ref, read-only)
The C<NAME_hash>, C<NAME_lc_hash>, and C<NAME_uc_hash> attributes
return column name information as a reference to a hash.
@@ -6274,7 +6239,7 @@
print "Name $row[ $sth->{NAME_lc_hash}{name} ]\n";
-=item C<TYPE> (array-ref, read-only)
+=head3 C<TYPE> (array-ref, read-only)
Returns a reference to an array of integer values for each
column. The value indicates the data type of the corresponding column.
@@ -6295,7 +6260,7 @@
All possible values for C<TYPE> should have at least one entry in the
output of the C<type_info_all> method (see L</type_info_all>).
-=item C<PRECISION> (array-ref, read-only)
+=head3 C<PRECISION> (array-ref, read-only)
Returns a reference to an array of integer values for each column.
@@ -6311,12 +6276,12 @@
(More recent standards refer to this as COLUMN_SIZE but we stick
with PRECISION for backwards compatibility.)
-=item C<SCALE> (array-ref, read-only)
+=head3 C<SCALE> (array-ref, read-only)
Returns a reference to an array of integer values for each column.
NULL (C<undef>) values indicate columns where scale is not applicable.
-=item C<NULLABLE> (array-ref, read-only)
+=head3 C<NULLABLE> (array-ref, read-only)
Returns a reference to an array indicating the possibility of each
column returning a null. Possible values are C<0>
@@ -6325,19 +6290,19 @@
print "First column may return NULL\n" if $sth->{NULLABLE}->[0];
-=item C<CursorName> (string, read-only)
+=head3 C<CursorName> (string, read-only)
Returns the name of the cursor associated with the statement handle, if
available. If not available or if the database driver does not support the
C<"where current of ..."> SQL syntax, then it returns C<undef>.
-=item C<Database> (dbh, read-only)
+=head3 C<Database> (dbh, read-only)
Returns the parent $dbh of the statement handle.
-=item C<ParamValues> (hash ref, read-only)
+=head3 C<ParamValues> (hash ref, read-only)
Returns a reference to a hash containing the values currently bound
to placeholders. The keys of the hash are the 'names' of the
@@ -6367,7 +6332,7 @@
The C<ParamValues> attribute was added in DBI 1.28.
-=item C<ParamArrays> (hash ref, read-only)
+=head3 C<ParamArrays> (hash ref, read-only)
Returns a reference to a hash containing the values currently bound to
placeholders with L</execute_array> or L</bind_param_array>. The
@@ -6401,7 +6366,7 @@
prepared statement. For example, DBD::Oracle translates 'C<?>'
placeholders into 'C<:pN>' where N is a sequence number starting at 1.
-=item C<ParamTypes> (hash ref, read-only)
+=head3 C<ParamTypes> (hash ref, read-only)
Returns a reference to a hash containing the type information
currently bound to placeholders. The keys of the hash are the
@@ -6409,7 +6374,7 @@
for drivers that support named placeholders, the actual parameter
name string. The hash values are hashrefs of type information in
the same form as that provided to the various bind_param() methods
-(See L</"Data Types for Placeholders"> for the format and values),
+(See L</bind_param> for the format and values),
plus anything else that was passed as the third argument to bind_param().
Returns undef if not supported by the driver.
@@ -6436,12 +6401,12 @@
implementation simply returns undef.
-=item C<Statement> (string, read-only)
+=head3 C<Statement> (string, read-only)
Returns the statement string passed to the L</prepare> method.
-=item C<RowsInCache> (integer, read-only)
+=head3 C<RowsInCache> (integer, read-only)
If the driver supports a local row cache for C<SELECT> statements, then
this attribute holds the number of un-fetched rows in the cache. If the
@@ -6450,51 +6415,6 @@
See also the L</RowCacheSize> database handle attribute.
-=back
-
-=head1 OTHER METHODS
-
-=over 4
-
-=item C<install_method>
-
- DBD::Foo::db->install_method($method_name, \%attr);
-
-Installs the driver-private method named by $method_name into the
-DBI method dispatcher so it can be called directly, avoiding the
-need to use the func() method.
-
-It is called as a static method on the driver class to which the
-method belongs. The method name must begin with the corresponding
-registered driver-private prefix. For example, for DBD::Oracle
-$method_name must being with 'C<ora_>', and for DBD::AnyData it
-must begin with 'C<ad_>'.
-
-The attributes can be used to provide fine control over how the DBI
-dispatcher handles the dispatching of the method. However, at this
-point, it's undocumented and very liable to change. (Volunteers to
-polish up and document the interface are very welcome to get in
-touch via [EMAIL PROTECTED])
-
-Methods installed using install_method default to the standard error
-handling behaviour for DBI methods: clearing err and errstr before
-calling the method, and checking for errors to trigger RaiseError
-etc. on return. This differs from the default behaviour of func().
-
-Note for driver authors: The DBD::Foo::xx->install_method call won't
-work until the class-hierarchy has been setup. Normally the DBI
-looks after that just after the driver is loaded. This means
-install_method() can't be called at the time the driver is loaded
-unless the class-hierarchy is set up first. The way to do that is
-to call the setup_driver() method:
-
- DBI->setup_driver('DBD::Foo');
-
-before using install_method().
-
-
-=back
-
=head1 FURTHER INFORMATION
=head2 Catalog Methods
@@ -6789,7 +6709,7 @@
If C<cancel> returns true, then it has successfully
invoked the database engine's own cancel function. If it returns false,
then C<cancel> failed. If it returns C<undef>, then the database
-driver does not have cancel implemented.
+driver does not have cancel implemented - very few do.
=item Timeout
Modified: dbi/trunk/Makefile.PL
==============================================================================
--- dbi/trunk/Makefile.PL (original)
+++ dbi/trunk/Makefile.PL Wed May 9 06:05:23 2007
@@ -323,6 +323,11 @@
$(RM_RF) blib
find . -type f \( -name .svn -prune -o -name \*.pm -o -name \*.PL -o
-name \*.pl \) \
-exec bash -c '[ -z "$$(svn pg svn:keywords {})" ] && echo svn
propset svn:keywords \"Id Revision\" {}' \;
+
+checkpod:
+ $(RM_RF) blib
+ find . -type f \( -name .svn -prune -o -name \*.pm -o -name \*.PL -o
-name \*.pl \) \
+ -exec podchecker {} \; 2>&1 | grep -v 'pod syntax OK'
};
return $xst;
Modified: dbi/trunk/dbiproxy.PL
==============================================================================
--- dbi/trunk/dbiproxy.PL (original)
+++ dbi/trunk/dbiproxy.PL Wed May 9 06:05:23 2007
@@ -36,7 +36,6 @@
dbiproxy - A proxy server for the DBD::Proxy driver
-
=head1 SYNOPSIS
dbiproxy <options> --localport=<port>
@@ -46,7 +45,7 @@
This tool is just a front end for the DBI::ProxyServer package. All it
does is picking options from the command line and calling
-DBI::ProxyServer::main(). See L<DBI::ProxyServer(3)> for details.
+DBI::ProxyServer::main(). See L<DBI::ProxyServer> for details.
Available options include:
@@ -84,8 +83,8 @@
Config files are assumed to return a single hash ref that overrides the
arguments of the new method. However, command line arguments in turn take
-precedence over the config file. See the L<"CONFIGURATION FILE"> section
-below for details on the config file.
+precedence over the config file. See the "CONFIGURATION FILE" section
+in the L<DBI::ProxyServer> documentation for details on the config file.
=item B<--debug>
@@ -94,7 +93,7 @@
=item B<--facility=mode>
-(UNIX only) Facility to use for L<Sys::Syslog (3)>. The default is
+(UNIX only) Facility to use for L<Sys::Syslog>. The default is
B<daemon>.
=item B<--group=gid>
@@ -122,7 +121,7 @@
Be default logging messages will be written to the syslog (Unix) or
to the event log (Windows NT). On other operating systems you need to
specify a log file. The special value "STDERR" forces logging to
-stderr. See L<Net::Daemon::Log(3)> for details.
+stderr. See L<Net::Daemon::Log> for details.
=item B<--mode=modename>
@@ -185,7 +184,7 @@
=head1 SEE ALSO
-L<DBI::ProxyServer(3)>, L<DBD::Proxy(3)>, L<DBI(3)>
+L<DBI::ProxyServer>, L<DBD::Proxy>, L<DBI>
=cut
SCRIPT
Modified: dbi/trunk/lib/DBD/Gofer.pm
==============================================================================
--- dbi/trunk/lib/DBD/Gofer.pm (original)
+++ dbi/trunk/lib/DBD/Gofer.pm Wed May 9 06:05:23 2007
@@ -812,6 +812,8 @@
This is very similar to the way http works as a stateless protocol for the web.
Each request from your web browser can be handled by a different web server
process.
+=head2 Use Cases
+
This may seem like pointless overhead but there are situations where this is a
very good thing. Let's consider a specific case.
@@ -828,6 +830,8 @@
unpacks it and presents it to the application as if it had executed the
statement itself.
+=head2 Advantages
+
Okay, but you still don't see the point? Well let's consider what we've gained:
=head3 Connection Pooling and Throttling
@@ -858,7 +862,7 @@
=head1 CONSTRAINTS
There are some natural constraints imposed by the DBD::Gofer 'stateless'
approach.
-But not too many:
+But not many:
=head2 You can't change database handle attributes after connect()
@@ -882,29 +886,30 @@
AutoCommit only. Transactions aren't supported.
+(In theory transactions could be supported when using a transport that
+maintains a connection, like C<stream> does. If you're interested in this
+please get in touch via [EMAIL PROTECTED])
+
=head2 You can't call driver-private sth methods
But that's rarely needed anyway.
-=head2 Per-row driver-private sth attributes aren't supported
-
-Some drivers provide sth attributes that relate to the row that was just
-fetched (e.g., Sybase and syb_result_type). These aren't supported.
-
=head1 GENERAL CAVEATS
A few important things to keep in mind when using DBD::Gofer:
-=head2 You shouldn't use temporary tables, locks, or other per-connection
persistent state
+=head2 Temporary tables, locks, and other per-connection persistent state
+
+You shouldn't expect any per-session state to persist between requests.
+This includes locks and temporary tables.
Because the server-side may execute your requests via a different
database connections, you can't rely on any per-connection persistent state,
such as temporary tables, being available from one request to the next.
-This is an easy trap to fall into and a difficult one to debug.
-The pipeone transport may help as it forces a new connection for each request.
-(It is very slow though, so I plan to add a way for the stream driver to use
-connect instead of connect_cache to achive the same effect much more
efficiently.)
+This is an easy trap to fall into. A good way to check for this is to test your
+code with a Gofer policy package that sets the C<connect_method> policy to
+'connect' to force a new connection for each request. The C<pedantic> policy
does this.
=head2 Driver-private Database Handle Attributes
@@ -932,7 +937,7 @@
=head2 Methods that report an error always return undef
-With DBD::Gofer a method that sets an error always return an undef or empty
list.
+With DBD::Gofer, a method that sets an error always return an undef or empty
list.
That shouldn't be a problem in practice because the DBI doesn't define any
methods that return meaningful values while also reporting an error.
@@ -961,7 +966,8 @@
The array methods bind_param_array() and execute_array() are supported.
When execute_array() is called the data is serialized and executed in a single
-round-trip to the Gofer server.
+round-trip to the Gofer server. This makes it very fast, but requires enough
+memory to store all the serialized data.
The execute_for_fetch() method currently isn't optimised, it uses the DBI
fallback behaviour of executing each tuple individually.
@@ -995,8 +1001,8 @@
freeze and thaw is applied to the results.
The null transport is the best way to test if your application will work with
Gofer.
-Just set the DBI_AUTOPROXY environment variable to
"C<dbi:Gofer:transport=null>"
-(see L</DBI_AUTOPROXY> below) and run your application, or ideally its test
suite, as usual.
+Just set the DBI_AUTOPROXY environment variable to
"C<dbi:Gofer:transport=null;policy=pedantic>"
+(see L</Using DBI_AUTOPROXY> below) and run your application, or ideally its
test suite, as usual.
It doesn't take any parameters.
@@ -1006,45 +1012,40 @@
request and reads the response.
The fact that a new subprocess is started for each request ensures that the
-server side is truly stateless. While this does make the transport very slow it
-is useful as a way to test that your application doesn't depend on
+server side is truly stateless. While this does make the transport I<very>
slow,
+it is useful as a way to test that your application doesn't depend on
per-connection state, such as temporary tables, persisting between requests.
It's also useful both as a proof of concept and as a base class for the stream
driver.
-This transport supports a timeout parameter in the dsn which specifies
-the maximum time it can take to send a requestor receive a response.
-
=head3 stream
The stream driver also launches a subprocess and writes requests and reads
responses, like the pipeone transport. In this case, however, the subprocess
-is expected to handle more that one request. (Though it will be restarted if
it exits.)
+is expected to handle more that one request. (Though it will be automitically
+restarted if it exits.)
This is the first transport that is truly useful because it can launch the
-subprocess on a remote machine using ssh. This means you can now use DBD::Gofer
+subprocess on a remote machine using C<ssh>. This means you can now use
DBD::Gofer
to easily access any databases that's accessible from any system you can login
to.
You also get all the benefits of ssh, including encryption and optional
compression.
-This transport supports a timeout parameter in the dsn which specifies the
-maximum time it can take to send a requestor receive a response.
-
-See L</DBI_AUTOPROXY> below for an example.
+See L</Using DBI_AUTOPROXY> below for an example.
=head2 Other Transports
+Implementing a transport is very simple, and more transports are very welcome.
+Just take a look at any existing transports that are similar to your needs.
+
=head3 http
See the GoferTransport-http distribution on CPAN.
=head3 Gearman
-I know Ask Bj�rn Hansen has implemented a transport for the gearman distributed
-job system. (Not yet on CPAN.)
-
-Implementing a transport is very simple, and more transports are very welcome.
-Just take a look at any existing transports that are similar to your needs.
+I know Ask Bj�rn Hansen has implemented a transport for the C<gearman>
distributed
+job system, though it's not yet on CPAN.
=head1 CONNECTING
@@ -1053,19 +1054,19 @@
The C<transport> and C<dsn> attributes must be specified and the C<dsn>
attributes must be last.
Other attributes can be specified in the DSN to configure DBD::Gofer and/or the
-Gofer transport module being used. The two main attributes after C<transport>,
-are C<url> and C<policy>. These are described below.
+Gofer transport module being used. The main attributes after C<transport>, are
+C<url> and C<policy>. These are described below.
=head2 Using DBI_AUTOPROXY
The simplest way to try out DBD::Gofer is to set the DBI_AUTOPROXY environment
variable.
In this case you don't include the C<dsn=> part. For example:
- export DBI_AUTOPROXY=dbi:Gofer:transport=null
+ export DBI_AUTOPROXY="dbi:Gofer:transport=null"
or, for a more useful example, try:
- export DBI_AUTOPROXY=dbi:Gofer:transport=stream;url=ssh:[EMAIL PROTECTED]
+ export DBI_AUTOPROXY="dbi:Gofer:transport=stream;url=ssh:[EMAIL PROTECTED]"
=head1 CONFIGURING VIA POLICY
@@ -1109,7 +1110,7 @@
=head1 TODO
-This is just a random brain dump... (There's more in Changes)
+This is just a random brain dump... (There's more in the source of the Changes
file, not the pod)
Document policy mechanism
@@ -1117,8 +1118,6 @@
Driver-private sth attributes - set via prepare() - change DBI spec
-Caching of get_info values
-
add hooks into transport base class for checking & updating a result set cache
ie via a standard cache interface such as:
http://search.cpan.org/~robm/Cache-FastMmap/FastMmap.pm
@@ -1130,8 +1129,6 @@
so that web caches (squid etc) could be used to implement the caching.
(MUST require the use of GET rather than POST requests.)
-Neat way for $h->trace to enable transport tracing.
-
Rework handling of installed_methods to not piggback on dbh_attributes?
Perhaps support transactions for transports where it's possible (ie null and
stream)?
@@ -1141,6 +1138,6 @@
Add @val = FETCH_many(@names) to DBI in C and use in Gofer/Execute?
-Implement DBI::st::TIEHASH etc in C.
+Implement _new_sth in C.
=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 Wed May 9 06:05:23 2007
@@ -178,11 +178,11 @@
my $remote_dsn = "..."
DBI->connect("dbi:Gofer:transport=...;url=...;timeout=...;retry_limit=...;dsn=$remote_dsn",...)
-
+
or, enable by setting the DBI_AUTOPROXY environment variable:
-
+
export DBI_AUTOPROXY='dbi:Gofer:transport=...;url=...'
-
+
which will force I<all> DBI connections to be made via that Gofer server.
=head1 DESCRIPTION
Modified: dbi/trunk/lib/DBI/DBD.pm
==============================================================================
--- dbi/trunk/lib/DBI/DBD.pm (original)
+++ dbi/trunk/lib/DBI/DBD.pm Wed May 9 06:05:23 2007
@@ -676,6 +676,9 @@
$class .= "::dr";
+ DBD::Driver::db->install_method('drv_example_dbh_method');
+ DBD::Driver::st->install_method('drv_example_sth_method');
+
# not a 'my' since we use it above to prevent multiple drivers
$drh = DBI::_new_drh($class, {
'Name' => 'File',
@@ -723,6 +726,44 @@
for failure (in which case you must look at I<$DBI::err> and I<$DBI::errstr>
for the failure information, because you have no driver handle to use).
+
+=head4 Using install_method() to expose driver-private methods
+
+ DBD::Foo::db->install_method($method_name, \%attr);
+
+Installs the driver-private method named by $method_name into the
+DBI method dispatcher so it can be called directly, avoiding the
+need to use the func() method.
+
+It is called as a static method on the driver class to which the
+method belongs. The method name must begin with the corresponding
+registered driver-private prefix. For example, for DBD::Oracle
+$method_name must being with 'C<ora_>', and for DBD::AnyData it
+must begin with 'C<ad_>'.
+
+The attributes can be used to provide fine control over how the DBI
+dispatcher handles the dispatching of the method. However, at this
+point, it's undocumented and very liable to change. (Volunteers to
+polish up and document the interface are very welcome to get in
+touch via [EMAIL PROTECTED])
+
+Methods installed using install_method default to the standard error
+handling behaviour for DBI methods: clearing err and errstr before
+calling the method, and checking for errors to trigger RaiseError
+etc. on return. This differs from the default behaviour of func().
+
+Note for driver authors: The DBD::Foo::xx->install_method call won't
+work until the class-hierarchy has been setup. Normally the DBI
+looks after that just after the driver is loaded. This means
+install_method() can't be called at the time the driver is loaded
+unless the class-hierarchy is set up first. The way to do that is
+to call the setup_driver() method:
+
+ DBI->setup_driver('DBD::Foo');
+
+before using install_method().
+
+
=head4 The CLONE special subroutine
Also needed here, in the B<DBD::Driver> package, is a C<CLONE()> method
Modified: dbi/trunk/lib/DBI/FAQ.pm
==============================================================================
--- dbi/trunk/lib/DBI/FAQ.pm (original)
+++ dbi/trunk/lib/DBI/FAQ.pm Wed May 9 06:05:23 2007
@@ -532,10 +532,10 @@
Scripts written with the DBI and DBD::ODBC are faster than Win32::ODBC
on Win32 and are trivially portable to other supported database types.
-
+
The DBI offers optional automatic printing or die()ing on errors which
makes applications simpler and more robust.
-
+
The current DBD::ODBC driver version 0.16 is new and not yet fully stable.
A new release is due soon [relative to the date of the next TPJ issue :-]
and will be much improved and offer more ODBC functionality.
@@ -805,7 +805,7 @@
Truncation of BLOB data may not be a big deal in cases where the BLOB
contains run-length encoded data, but data containing checksums at the end,
for example, a ZIP file, would be rendered useless.
-
+
=head2 5.3 How can I invoke stored procedures with DBI?
The DBI does not define a database-independent way of calling stored
procedures.
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 Wed May 9 06:05:23 2007
@@ -39,7 +39,7 @@
=head1 NAME
DBI::Gofer::Transport::pipeone - DBD::Gofer server-side transport for pipeone
-
+
=head1 SYNOPSIS
See L<DBD::Gofer::Transport::pipeone>.
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 Wed May 9 06:05:23 2007
@@ -57,7 +57,7 @@
=head1 NAME
DBI::Gofer::Transport::stream - DBD::Gofer server-side transport for stream
-
+
=head1 SYNOPSIS
See L<DBD::Gofer::Transport::stream>.