@@ -11,7 +11,7 @@ package DBI;
1111require 5.008_001;
1212
1313BEGIN {
14- our $XS_VERSION = our $VERSION = " 1.631 " ; # ==> ALSO update the version in the pod text below!
14+ our $XS_VERSION = our $VERSION = " 1.633 " ; # ==> ALSO update the version in the pod text below!
1515$VERSION = eval $VERSION ;
1616}
1717
@@ -144,7 +144,7 @@ sure that your issue isn't related to the driver you're using.
144144
145145=head2 NOTES
146146
147- This is the DBI specification that corresponds to DBI version 1.631
147+ This is the DBI specification that corresponds to DBI version 1.633
148148(see L<DBI::Changes> for details).
149149
150150The DBI is evolving at a steady pace, so it's good to check that
@@ -328,6 +328,7 @@ sub DBI::var::STORE { Carp::croak("Can't modify \$DBI::${$_[0]} special varia
328328
329329my $dbd_prefix_registry = {
330330 ad_ => { class => ' DBD::AnyData' , },
331+ ad2_ => { class => ' DBD::AnyData2' , },
331332 ado_ => { class => ' DBD::ADO' , },
332333 amzn_ => { class => ' DBD::Amazon' , },
333334 best_ => { class => ' DBD::BestWins' , },
@@ -350,6 +351,7 @@ my $dbd_prefix_registry = {
350351 msql_ => { class => ' DBD::mSQL' , },
351352 mvsftp_ => { class => ' DBD::MVS_FTPSQL' , },
352353 mysql_ => { class => ' DBD::mysql' , },
354+ multi_ => { class => ' DBD::Multi' },
353355 mx_ => { class => ' DBD::Multiplex' , },
354356 neo_ => { class => ' DBD::Neo4p' , },
355357 nullp_ => { class => ' DBD::NullP' , },
@@ -411,6 +413,7 @@ my $keeperr = { O=>0x0004 };
411413 ' FIRSTKEY' => $keeperr ,
412414 ' NEXTKEY' => $keeperr ,
413415 ' STORE' => { O => 0x0418 | 0x4 },
416+ ' DELETE' => { O => 0x0404 },
414417 can => { O => 0x0100 }, # special case, see dispatch
415418 debug => { U => [1,2,' [$debug_level]' ], O => 0x0004 }, # old name for trace
416419 dump_handle => { U => [1,3,' [$message [, $level]]' ], O => 0x0004 },
@@ -1388,7 +1391,7 @@ sub _new_sth { # called by DBD::<drivername>::db::prepare)
13881391 unless $class =~ / ^DBD::(\w +)::(dr|db|st)$ / ;
13891392 my ($driver , $subtype ) = ($1 , $2 );
13901393 Carp::croak(" invalid method name '$method '" )
1391- unless $method =~ m / ^([a-z]+ _)\w +$ / ;
1394+ unless $method =~ m / ^([a-z][a-z0-9]* _)\w +$ / ;
13921395 my $prefix = $1 ;
13931396 my $reg_info = $dbd_prefix_registry -> {$prefix };
13941397 Carp::carp(" method name prefix '$prefix ' is not associated with a registered driver" ) unless $reg_info ;
@@ -1635,9 +1638,9 @@ sub _new_sth { # called by DBD::<drivername>::db::prepare)
16351638 sub _do_selectrow {
16361639 my ($method , $dbh , $stmt , $attr , @bind ) = @_ ;
16371640 my $sth = ((ref $stmt ) ? $stmt : $dbh -> prepare($stmt , $attr ))
1638- or return ;
1641+ or return undef ;
16391642 $sth -> execute(@bind )
1640- or return ;
1643+ or return undef ;
16411644 my $row = $sth -> $method ()
16421645 and $sth -> finish;
16431646 return $row ;
@@ -2417,6 +2420,11 @@ If the C<:>I<N> form of placeholder is supported by the driver you're using,
24172420then you should be able to use either L</bind_param> or L</execute> to bind
24182421values. Check your driver documentation.
24192422
2423+ Some drivers allow you to prevent the recognition of a placeholder by placing a
2424+ single backslash character (C<\ > ) immediately before it. The driver will remove
2425+ the backslash character and ignore the placeholder, passing it unchanged to the
2426+ backend. If the driver supports this then L</get_info> (9000) will return true.
2427+
24202428With most drivers, placeholders can't be used for any element of a
24212429statement that would prevent the database server from validating the
24222430statement and creating a query execution plan for it. For example:
@@ -3689,8 +3697,8 @@ the destruction of inherited handles cause the corresponding handles in the
36893697parent process to cease working.
36903698
36913699Either the parent or the child process, but not both, should set
3692- C<InactiveDestroy > true on all their shared handles. Alternatively the
3693- L</AutoInactiveDestroy> can be set in the parent on connect.
3700+ C<InactiveDestroy > true on all their shared handles. Alternatively, and
3701+ preferably, the L</AutoInactiveDestroy> can be set in the parent on connect.
36943702
36953703To help tracing applications using fork the process id is shown in
36963704the trace log whenever a DBI or handle trace() method is called.
@@ -3703,12 +3711,15 @@ from the DBI's method dispatcher, e.g. >= 9.
37033711Type: boolean, inherited
37043712
37053713The L</InactiveDestroy> attribute, described above, needs to be explicitly set
3706- in the child process after a fork(). This is a problem if the code that performs
3707- the fork() is not under your control, perhaps in a third-party module.
3708- Use C<AutoInactiveDestroy > to get around this situation.
3714+ in the child process after a fork(), on every active database and statement handle.
3715+ This is a problem if the code that performs the fork() is not under your
3716+ control, perhaps in a third-party module. Use C<AutoInactiveDestroy > to get
3717+ around this situation.
37093718
37103719If set true, the DESTROY method will check the process id of the handle and, if
37113720different from the current process id, it will set the I<InactiveDestroy > attribute.
3721+ It is strongly recommended that C<AutoInactiveDestroy > is enabled on all new code
3722+ (it's only not enabled by default to avoid backwards compatibility problems).
37123723
37133724This is the example it's designed to deal with:
37143725
@@ -4963,6 +4974,13 @@ of information types to ensure the DBI itself works properly:
49634974 41 SQL_CATALOG_NAME_SEPARATOR '.' '@'
49644975 114 SQL_CATALOG_LOCATION 1 2
49654976
4977+ Values from 9000 to 9999 for get_info are officially reserved for use by Perl DBI.
4978+ Values in that range which have been assigned a meaning are defined here:
4979+
4980+ C<9000 > : true if a backslash character (C<\ > ) before placeholder-like text
4981+ (e.g. C<? > , C<:foo > ) will prevent it being treated as a placeholder by the driver.
4982+ The backslash will be removed before the text is passed to the backend.
4983+
49664984=head3 C<table_info >
49674985
49684986 $sth = $dbh->table_info( $catalog, $schema, $table, $type );
@@ -7078,7 +7096,7 @@ For example:
70787096 my $sth2 = $dbh->prepare( $sth1->{Statement} );
70797097 my $ParamValues = $sth1->{ParamValues} || {};
70807098 my $ParamTypes = $sth1->{ParamTypes} || {};
7081- $sth2->bind_param($_, $ParamValues->{$_} $ParamTypes->{$_})
7099+ $sth2->bind_param($_, $ParamValues->{$_}, $ParamTypes->{$_})
70827100 for keys %{ {%$ParamValues, %$ParamTypes} };
70837101 $sth2->execute();
70847102
0 commit comments