Changes in DBI 1.50 (svn rev 2307), 13 December 2005
Fixed Makefile.PL options for gcc bug introduced in 1.49.
Fixed handle magic order to keep DBD::Oracle happy.
Changed dbi_profile_merge() to be able to recurse and merge
sub-trees of profile data.
Added documentation for dbi_profile_merge(), including how to
measure the time spent inside the DBI for an http request.
Changes in DBI 1.49 (svn rev 2287), 29th November 2005
Fixed assorted attribute handling bugs in DBD::Proxy.
Fixed croak() in DBD::NullP thanks to Sergey Skvortsov.
Fixed handling of take_imp_data() and dbi_imp_data attribute.
Fixed bugs in DBD::DBM thanks to Jeff Zucker.
Fixed bug in DBI::ProfileDumper thanks to Sam Tregar.
Fixed ping in DBD::Proxy thanks to George Campbell.
Fixed dangling ref in $sth after parent $dbh destroyed
with thanks to il@rol.ru for the bug report #13151
Fixed prerequisites to include Storable thanks to Michael Schwern.
Fixed take_imp_data to be more practical.
Change to require perl 5.6.1 (as advertised in 2003) not 5.6.0.
Changed internals to be more strictly coded thanks to Andy Lester.
Changed warning about multiple copies of Driver.xst found in @INC
to ignore duplicated directories thanks to Ed Avis.
Changed Driver.xst to enable drivers to define an dbd_st_prepare_sv
function where the statement parameter is an SV. That enables
compiled drivers to support SQL strings that are UTF-8.
Changed "use DBI" to only set $DBI::connect_via if not already set.
Changed docs to clarify pre-method clearing of err values.
Added ability for DBI::ProfileData to edit profile path on loading.
This enables aggregation of different SQL statements into the same
profile node - very handy when not using placeholders or when working
multiple separate tables for the same thing (ie logtable_2005_11_28)
Added $sth->{ParamTypes} specification thanks to Dean Arnold.
Added $h->{Callbacks} attribute to enable code hooks to be invoked
when certain methods are called. For example:
$dbh->{Callbacks}->{prepare} = sub { ... };
With thanks to David Wheeler for the kick start.
Added $h->{ChildHandles} (using weakrefs) thanks to Sam Tregar
I've recoded it in C so there's no significant performance impact.
Added $h->{Type} docs (returns 'dr', 'db', or 'st')
Adding trace message in DESTROY if InactiveDestroy enabled.
Ported DBI::ProfileDumper::Apache to mod_perl2 RC5+
thanks to Philip M. Golluci
Changes in DBI 1.48 (svn rev 928), 14th March 2005
Fixed DBI::DBD::Metadata generation of type_info_all thanks to
Steffen Goeldner (driver authors who have used it should rerun
it).
Updated docs for NULL Value placeholders thanks to Brian Campbell.
Added multi-keyfield nested hash fetching to fetchall_hashref()
thanks to Zhuang (John) Li for polishing up my draft.
Added registered driver prefixes: amzn_ for DBD::Amazon and yaswi_
for DBD::Yaswi.
o Changes in DBI 1.47 (svn rev 854), 2nd February 2005
Fixed DBI::ProxyServer to not create pid files by default.
References: Ubuntu Security Notice USN-70-1, CAN-2005-0077
Thanks to Javier Fernández-Sanguino Peña from the
Debian Security Audit Project, and Jonathan Leffler.
[we already had a patch for that in pkgsrc]
Fixed some tests to work with older Test::More versions.
Fixed setting $DBI::err/errstr in DBI::PurePerl.
Fixed potential undef warning from connect_cached().
Fixed $DBI::lasth handling for DESTROY so lasth points to
parent even if DESTROY called other methods.
Fixed DBD::Proxy method calls to not alter $@.
Fixed DBD::File problem with encoding pragma thanks to Erik Rijkers.
Changed error handling so undef errstr doesn't cause warning.
Changed DBI::DBD docs to use =head3/=head4 pod thanks to
Jonathan Leffler. This may generate warnings for perl 5.6.
Changed DBI::PurePerl to set autoflush on trace filehandle.
Changed DBD::Proxy to treat Username as a local attribute
so recent DBI version can be used with old DBI::ProxyServer.
Changed driver handle caching in DBD::File.
Added $GetInfoType{SQL_DATABASE_NAME} thanks to Steffen Goeldner.
Updated docs to recommend some common DSN string attributes.
Updated connect_cached() docs with issues and suggestions.
Updated docs for NULL Value placeholders thanks to Brian Campbell.
Updated docs for primary_key_info and primary_keys.
Updated docs to clarify that the default fetchrow_hashref behaviour,
of returning a ref to a new hash for each row, will not change.
Updated err/errstr/state docs for DBD authors thanks to Steffen Goeldner.
Updated handle/attribute docs for DBD authors thanks to Steffen Goeldner.
Corrected and updated LongReadLen docs thanks to Bart Lateur.
Added DBD::JDBC as a registered driver.
module directory has changed (eg. "darwin-2level" vs.
"darwin-thread-multi-2level").
binary packages of perl modules need to be distinguishable between
being built against threaded perl and unthreaded perl, so bump the
PKGREVISION of all perl module packages and introduce
BUILDLINK_RECOMMENDED for perl as perl>=5.8.5nb5 so the correct
dependencies are registered and the binary packages are distinct.
addresses PR pkg/28619 from H. Todd Fujinaka.
Change log:
Changes in DBI 1.46 (svn rev 584), 16th November 2004
Fixed parsing bugs in DBI::SQL::Nano thanks to Jeff Zucker.
Fixed a couple of bad links in docs thanks to Graham Barr.
Fixed test.pl Win32 undef warning thanks to H.Merijn Brand & David Repko.
Fixed minor issues in DBI::DBD::Metadata thanks to Steffen Goeldner.
Fixed DBI::PurePerl neat() to use double quotes for utf8.
Changed execute_array() definition, and default implementation,
to not consider scalar values for execute tuple count. See docs.
Changed DBD::File to enable ShowErrorStatement by default,
which affects DBD::File subclasses such as DBD::CSV and DBD::DBM.
Changed use DBI qw(:utils) tag to include $neat_maxlen.
Updated Roadmap and ToDo.
Added data_string_diff() data_string_desc() and data_diff()
utility functions to help diagnose Unicode issues.
All can be imported via the use DBI qw(:utils) tag.
Changes in DBI 1.45 (svn rev 480), 6th October 2004
Fixed DBI::DBD code for drivers broken in 1.44.
Fixed "Free to wrong pool"/"Attempt to free unreferenced scalar" in FETCH.
Changes in DBI 1.44 (svn rev 478), 5th October 2004
Fixed build issues on VMS thanks to Jakob Snoer.
Fixed DBD::File finish() method to return 1 thanks to Jan Dubois.
Fixed rare core dump during global destruction thanks to Mark Jason Dominus.
Fixed risk of utf8 flag persisting from one row to the next.
Changed bind_param_array() so it doesn't require all bind arrays
to have the same number of elements.
Changed bind_param_array() to error if placeholder number <= 0.
Changed execute_array() definition, and default implementation,
to effectively NULL-pad shorter bind arrays.
Changed execute_array() to return "0E0" for 0 as per the docs.
Changed execute_for_fetch() definition, and default implementation,
to return "0E0" for 0 like execute() and execute_array().
Changed Test::More prerequisite to Test::Simple (which is also the name
of the distribution both are packaged in) to work around ppm behaviour.
Corrected docs to say that get/set of unknown attribute generates
a warning and is no longer fatal. Thanks to Vadim.
Corrected fetchall_arrayref() docs example thanks to Drew Broadley.
Added $h1->swap_inner_handle($h2) sponsored by BizRate.com
Changes in DBI 1.43 (svn rev 377), 2nd July 2004
Fixed connect() and connect_cached() RaiseError/PrintError
which would sometimes show "(no error string)" as the error.
Fixed compiler warning thanks to Paul Marquess.
Fixed "trace level set to" trace message thanks to H.Merijn Brand.
Fixed DBD::DBM $dbh->{dbm_tables}->{...} to be keyed by the
table name not the file name thanks to Jeff Zucker.
Fixed last_insert_id(...) thanks to Rudy Lippan.
Fixed propagation of scalar/list context into proxied methods.
Fixed DBI::Profile::DESTROY to not alter $@.
Fixed DBI::ProfileDumper new() docs thanks to Michael Schwern.
Fixed _load_class to propagate $@ thanks to Drew Taylor.
Fixed compile warnings on Win32 thanks to Robert Baron.
Fixed problem building with recent versions of MakeMaker.
Fixed DBD::Sponge not to generate warning with threads.
Fixed DBI_AUTOPROXY to work more than once thanks to Steven Hirsch.
Changed TraceLevel 1 to not show recursive/nested calls.
Changed getting or setting an invalid attribute to no longer be
a fatal error but generate a warning instead.
Changed selectall_arrayref() to call finish() if
$attr->{MaxRows} is defined.
Changed all tests to use Test::More and enhanced the tests thanks
to Stevan Little and Andy Lester. See http://qa.perl.org/phalanx/
Changed Test::More minimum prerequisite version to 0.40 (2001).
Changed DBI::Profile header to include the date and time.
Added DBI->parse_dsn($dsn) method.
Added warning if build directory path contains whitespace.
Added docs for parse_trace_flags() and parse_trace_flag().
Removed "may change" warnings from the docs for table_info(),
primary_key_info(), and foreign_key_info() methods.
Changes in DBI 1.42 (svn rev 222), 12th March 2004
Fixed $sth->{NUM_OF_FIELDS} of non-executed statement handle
to be undef as per the docs (it was 0).
Fixed t/41prof_dump.t to work with perl5.9.1.
Fixed DBD_ATTRIB_DELETE macro thanks to Marco Paskamp.
Fixed DBI::PurePerl looks_like_number() and $DBI::rows.
Fixed ref($h)->can("foo") to not croak.
Changed attributes (NAME, TYPE etc) of non-executed statement
handle to be undef instead of triggering an error.
Changed ShowErrorStatement to apply to more $dbh methods.
Changed DBI_TRACE env var so just does this at load time:
DBI->trace(split '=', $ENV{DBI_TRACE}, 2);
Improved "invalid number of parameters" error message.
Added DBI::common as base class for DBI::db, DBD::st etc.
Moved methods common to all handles into DBI::common.
Major tracing enhancement:
Added $h->parse_trace_flags("foo|SQL|7") to map a group of
trace flags into the corresponding trace flag bits.
Added automatic calling of parse_trace_flags() if
setting the trace level to a non-numeric value:
$h->{TraceLevel}="foo|SQL|7"; $h->trace("foo|SQL|7");
DBI->connect("dbi:Driver(TraceLevel=SQL|foo):...", ...);
Currently no trace flags have been defined.
Added to, and reworked, the trace documentation.
Added dbivport.h for driver authors to use.
Major driver additions that Jeff Zucker and I have been working on:
Added DBI::SQL::Nano a 'smaller than micro' SQL parser
with an SQL::Statement compatible API. If SQL::Statement
is installed then DBI::SQL::Nano becomes an empty subclass
of SQL::Statement, unless the DBI_SQL_NANO env var is true.
Added DBD::File, modified to use DBI::SQL::Nano.
Added DBD::DBM, an SQL interface to DBM files using DBD::File.
Documentation changes:
Corrected typos in docs thanks to Steffen Goeldner.
Corrected execute_for_fetch example thanks to Dean Arnold.
by moving the inclusion of buildlink3.mk files outside of the protected
region. This bug would be seen by users that have set PREFER_PKGSRC
or PREFER_NATIVE to non-default values.
BUILDLINK_PACKAGES should be ordered so that for any package in the
list, that package doesn't depend on any packages to the left of it
in the list. This ordering property is used to check for builtin
packages in the correct order. The problem was that including a
buildlink3.mk file for <pkg> correctly ensured that <pkg> was removed
from BUILDLINK_PACKAGES and appended to the end. However, since the
inclusion of any other buildlink3.mk files within that buildlink3.mk
was in a region that was protected against multiple inclusion, those
dependencies weren't also moved to the end of BUILDLINK_PACKAGES.
Perl >= 5.6.0 is required now, so update buildlink2.mk and buildlink3.mk.
Add missing build-time dependence on Test::More (ie, Test::Simple).
Changes since 1.37
==================
CHANGES in DBI 1.41 (svn rev 130), 22nd February 2004
Fixed execute_for_array() so tuple_status parameter is optional
as per docs, thanks to Ed Avis.
Fixed execute_for_array() docs to say that it returns undef if
any of the execute() calls fail.
Fixed take_imp_data() test on m68k reported by Christian Hammers.
Fixed write_typeinfo_pm inconsistencies in DBI::DBD::Metadata
thanks to Andy Hassall.
Fixed $h->{TraceLevel} to not return DBI->trace trace level
which it used to if DBI->trace trace level was higher.
Changed set_err() to append to errstr, with a leading "\n" if it's
not empty, so that multiple error/warning messages are recorded.
Changed trace to limit elements dumped when an array reference is
returned from a method to the max(40, $DBI::neat_maxlen/10)
so that fetchall_arrayref(), for example, doesn't flood the trace.
Changed trace level to be a four bit integer (levels 0 thru 15)
and a set of topic flags (no topics have been assigned yet).
Changed column_info() to check argument count.
Extended bind_param() TYPE attribute specification to imply
standard formating of value, eg SQL_DATE implies 'YYYY-MM-DD'.
Added way for drivers to indicate 'success with info' or 'warning'
by setting err to "0" for warning and "" for information.
Both values are false and so don't trigger RaiseError etc.
Warnings (err="0") are automatically printed if PrintError is set.
Thanks to Steffen Goeldner for the original idea.
Added $h->{HandleSetErr} = sub { ... } to be called at the
point that an error, warn, or info state is recorded.
The code can alter the err, errstr, and state values
(e.g., to promote an error to a warning, or the reverse).
Added $h->{PrintWarn} attribute to enable printing of warnings
recorded by the driver. Defaults to same value as $^W (perl -w).
Added $h->{ErrCount} attribute, incremented whenever an error is
recorded by the driver via set_err().
Added $h->{Executed} attribute, set if do()/execute() called.
Added \%attr parameter to foreign_key_info() method.
Added ref count of inner handle to "DESTROY ignored for outer" msg.
Added Win32 build config checks to DBI::DBD thanks to Andy Hassall.
Added bind_col to Driver.xst so drivers can define their own.
Added TYPE attribute to bind_col and specified the expected
driver behaviour.
Major update to signal handling docs thanks to Lincoln Baxter.
Corrected dbiproxy usage doc thanks to Christian Hammers.
Corrected type_info_all index hash docs thanks to Steffen Goeldner.
Corrected type_info COLUMN_SIZE to chars not bytes thanks to Dean Arnold.
Corrected get_info() docs to include details of DBI::Const::GetInfoType.
Clarified that $sth->{PRECISION} is OCTET_LENGTH for char types.
Changes in DBI 1.40, 7th January 2004
Fixed handling of CachedKids when DESTROYing threaded handles.
Fixed sql_user_name() in DBI::DBD::Metadata (used by write_getinfo_pm)
to use $dbh->{Username}. Driver authors please update your code.
Changed connect_cached() when running under Apache::DBI
to route calls to Apache::DBI::connect().
Added CLONE() to DBD::Sponge and DBD::ExampleP.
Added warning when starting a new thread about any loaded driver
which does not have a CLONE() function.
Added new prepare_cache($sql, \%attr, 3) option to manage Active handles.
Added SCALE and NULLABLE support to DBD::Sponge.
Added missing execute() in fetchall_hashref docs thanks to Iain Truskett.
Added a CONTRIBUTING section to the docs with notes on creating patches.
Changes in DBI 1.39, 27th November 2003
Fixed STORE to not clear error during nested DBI call, again/better,
thanks to Tony Bowden for the report and helpful test case.
Fixed DBI dispatch to not try to use AUTOLOAD for driver methods unless
the method has been declared (as methods should be when using AUTOLOAD).
This fixes a problem when the Attribute::Handlers module is loaded.
Fixed cwd check code to use $Config{path_sep} thanks to Steve Hay.
Fixed unqualified croak() calls thanks to Steffen Goeldner.
Fixed DBD::ExampleP TYPE and PRECISION attributes thanks to Tom Lowery.
Fixed tracing of methods that only get traced at high trace levels.
The level 1 trace no longer includes nested method calls so it generally
just shows the methods the application explicitly calls.
Added line to trace log (level>=4) when err/errstr is cleared.
Updated docs for InactiveDestroy and point out where and when the
trace includes the process id.
Update DBI::DBD docs thanks to Steffen Goeldner.
Removed docs saying that the DBI->data_sources method could be
passed a $dbh. The $dbh->data_sources method should be used instead.
Added link to 'DBI recipes' thanks to Giuseppe Maxia:
http://gmax.oltrelinux.com/dbirecipes.html (note that this
is not an endorsement that the recipies are 'optimal')
Note: There is a bug in perl 5.8.2 when configured with threads
and debugging enabled (bug #24463) which causes a DBI test to fail.
Changes in DBI 1.38, 21th August 2003
NOTE: The DBI now requires perl version 5.6.0 or later.
(As per notice in DBI 1.33 released 27th February 2003)
Fixed spurious t/03handles failure on 64bit perls reported by H.Merijn Brand.
Fixed spurious t/15array failure on some perl versions thanks to Ed Avis.
Fixed build using dmake on windows thanks to Steffen Goeldner.
Fixed build on using some shells thanks to Gurusamy Sarathy.
Fixed ParamValues to only be appended to ShowErrorStatement if not empty.
Fixed $dbh->{Statement} not being writable by drivers in some cases.
Fixed occasional undef warnings on connect failures thanks to Ed Avis.
Fixed small memory leak when using $sth->{NAME..._hash}.
Fixed 64bit warnings thanks to Marian Jancar.
Fixed DBD::Proxy::db::DESTROY to not alter $@ thanks to Keith Chapman.
Fixed Makefile.PL status from WriteMakefile() thanks to Leon Brocard.
Changed "Can't set ...->{Foo}: unrecognised attribute" from an error to a
warning when running with DBI::ProxyServer to simplify upgrades.
Changed execute_array() to no longer require ArrayTupleStatus attribute.
Changed DBI->available_drivers to not hide DBD::Sponge.
Updated/moved placeholder docs to a better place thanks to Johan Vromans.
Changed dbd_db_do4 api in Driver.xst to match dbd_st_execute (return int,
not bool), relevant only to driver authors.
Changed neat(), and thus trace(), so strings marked as utf8 are presented
in double quotes instead of single quotes and are not sanitized.
Added $dbh->data_sources method.
Added $dbh->last_insert_id method.
Added $sth->execute_for_fetch($fetch_tuple_sub, \@tuple_status) method.
Added DBI->installed_versions thanks to Jeff Zucker.
Added $DBI::Profile::ON_DESTROY_DUMP variable.
Added docs for DBD::Sponge thanks to Mark Stosberg.
the normal case when BUILDLINK_DEPENDS.<pkg> isn't specified, it receives
a value only once due to the multiple inclusion protection in the
bulldlink3.mk files. In the case where a package includes several
buildlink3.mk files that each want a slightly different version of another
dependency, having BUILDLINK_DEPENDS.<pkg> be a list allows for the
strictest <pkg> dependency to be matched.
Fixed "Can't get dbh->{Statement}: unrecognised attribute" error
Fixed DBI->connect to carp instead of croak on 'old-style' usage.
Fixed connect(,,, { RootClass => $foo }) to not croak if module not found.
Fixed code generated by DBI::DBD::Metadata
Fixed DBI::PurePerl to not reset $@ during method dispatch.
Fixed Proxy disconnect
Fixed error in DBI::DBD docs
Changed t/40profile.t to not require Time::HiRes.
Changed execute_array() return value from row count to executed
tuple count, and now the ArrayTupleStatus attribute is mandatory.
NOTE: That is an API definition change that may affect your code.
Changed CompatMode attribute to also disable attribute 'quick FETCH'.
Changed attribute FETCH to be slightly faster
Added workaround for perl bug #17575 tied hash nested FETCH
Added Username and Password attributes to connect(..., \%attr) and so
also embedded in DSN like "dbi:Driver(Username=user,Password=pass):..."
Username and Password can't contain ")", ",", or "=" characters.
The predence is DSN first, then \%attr, then $user & $pass parameters,
and finally the DBI_USER & DBI_PASS environment variables.
The Username attribute is stored in the $dbh but the Password is not.
Added ProxyServer HOWTO configure restrictions docs
Added MaxRows attribute to selectcol_arrayref
Added dump_handle as a method not just a DBI:: utility function.
Added on-demand by-row data feed into execute_array() using code ref,
or statement handle. For example, to insert from a select:
$insert_sth->execute_array( { ArrayTupleFetch => $select_sth, ... } )
Added warning to trace log when $h->{foo}=... is ignored due to
invalid prefix (e.g., not 'private_').
Fixed memory leak in fetchrow_hashref introduced in DBI 1.33.
Fixed various DBD::Proxy errors introduced in DBI 1.33.
Fixed to ANSI C in dbd_dr_data_sources
Fixed $h->can($method_name) to return correct code ref.
Removed DBI::Format from distribution as it's now part of the
separate DBI::Shell distribution
Updated DBI::DBD docs with a note about the CLONE method.
Updated DBI::DBD docs
Updated DBI::DBD::Metadata for perl 5.5.3
Added note to install_method docs about setup_driver() method.
Fixed DBI::DBD docs to refer to DBI::DBD::Metadata
Fixed disconnect_all() to not be required by drivers.
Added $okay = $h->can($method_name) to check if a method exists.
Added DBD::*::*->install_method($method_name, \%attr) so driver private
methods can be 'installed' into the DBI dispatcher and no longer
need to be called using $h->func(..., $method_name).
Enhanced $dbh->clone() and documentation.
Removed old DBI::Shell from distribution and added Tom Lowery's improved
version to the Bundle::DBI file.
Updated minimum version numbers for modules in Bundle::DBI.
Added $dbh2 = $dbh1->clone to make a new connection to the database
that is identical to the original one. clone() can be called even after
the original handle has been disconnected. See the docs for more details.
Fixed unescaping of newlines in DBI::ProfileData
Fixed Taint bug with fetchrow_hashref
Fixed $dbh->{Active} for DBD::Proxy
Fixed STORE to not clear error during nested DBI call
Fixed DBI::PurePerl error clearing behaviour.
Fixed problem that meant ShowErrorStatement could show wrong statement
Changed Apache::DBI hook to check for $ENV{MOD_PERL} instead of
$ENV{GATEWAY_INTERFACE} thanks to Ask Bjoern Hansen.
No longer tries to dup trace logfp when an interpreter is being cloned.
Database handles no longer inherit shared $h->err/errstr/state storage
from their drivers, so each $dbh has it's own $h->err etc. values
and is no longer affected by calls made on other dbh's.
Now when a dbh is destroyed it's err/errstr/state values are copied
up to the driver so checking $DBI::errstr still works as expected.
Documentation changes:
Documented $high_resolution_time = dbi_time() function.
Documented that bind_col() can take an atribute hash.
Clarified documentation for ParamValues attribute hash keys.
Many good DBI documentation tweaks
including a major update to the DBI::DBD driver author guide.
Clarified that execute() should itself call finish() if it's
called on a statement handle that's still active.
Clarified $sth->{ParamValues}. Driver authors please note.
Removed "NEW" markers on some methods and attributes and
added text to each giving the DBI version it was added in,
if it was added after DBI 1.21 (Feb 2002).
Fixed to work with 5.005_03 (I've not tested it).
Reenabled taint tests (accidentally left disabled)
Improved docs for FetchHashKeyName attribute
Fixed core dump if fetchrow_hashref given bad argument (name of attribute
with a value that wasn't an array reference)
Fixed some compiler warnings
Updated Steven Hirsch's enhanced proxy work (seems I left out a bit).
The fetchall_arrayref method, when called with a $maxrows parameter,
no longer gives an error if called again after all rows have been
fetched. This simplifies application logic when fetching in batches.
Also added batch-fetch while() loop example to the docs.
The proxy now supports non-lazy (synchronous) prepare, positioned
updates (for selects containing 'for update'), PlRPC config set
via attributes, and accurate propagation of errors
The DBI_AUTOPROXY env var can now hold the full dsn of the proxy driver
plus attributes, like "dbi:Proxy(proxy_foo=>1):host=...".
Added TaintIn & TaintOut attributes to give finer control over
tainting
The RootClass attribute no longer ignores failure to load a module,
but also doesn't try to load a module if the class already exists
HandleError attribute works for connect failures
The connect() RaiseError/PrintError message now includes the username.
Changed "last handle unknown or destroyed" warning to be a trace message.
Removed undocumented $h->event() method.
Further enhancements to DBD::PurePerl accuracy.
The CursorName attribute now defaults to undef and not an error.
Most notable changes:
Fixed problems with selectrow_array, selectrow_arrayref, and
selectall_arrayref introduced in DBI 1.29.
The trace output can be sent to STDOUT instead of STDERR by using
"STDOUT" as the name of the file, i.e., $h->trace(..., "STDOUT")
Added $sth->{ParamValues} to return a hash of the most recent
values bound to placeholders via bind_param() or execute().
Enhanced ShowErrorStatement to include ParamValues if available:
"DBD::foo::st execute failed: errstr [for statement ``...'' with params: 1='foo']"
Fixed missing column in C implementation of fetchall_arrayref()
Added C implementations of selectrow_arrayref() and fetchall_arrayref()
in Driver.xst. All compiled drivers using Driver.xst will now be
faster making those calls.
Drivers just need to be recompiled and reinstalled to enable it.
Added $max_rows parameter to fetchall_arrayref() to optionally limit
the number of rows returned. Can now fetch batches of rows.
Added MaxRows attribute to selectall_arrayref()
which then passes it to fetchall_arrayref().
Documented that $h->func() does not trigger RaiseError etc
so applications must explicitly check for errors.
HandleError subroutine interface is now regarded as stable.
Fixed reference loop causing a handle/memory leak
that was introduced in DBI 1.16.
Fixed DBI::Format to work with 'filehandles' from IO::Scalar
and similar modules
Fixed $h->func for DBI::PurePerl
Fixed $dbh->{Name} for DBI::PurePerl
Added DBI method call profiling and benchmarking.
Added execute_array() and bind_param_array() documentation
Removed undocumented Handlers attribute (replaced by HandleError).
Greatly improved DBI::PurePerl in performance and accuracy.
Added DBI::PurePerl, a transparent DBI emulation for pure-perl drivers
See Perldoc DBI::PurePerl for details.
Added DBI::Const::GetInfo* modules
Added write_getinfo_pm utility to DBI::DBD
Added $allow_active==2 mode for prepare_cached()
Extend $h->{Warn} to commit/rollback ineffective warning
Fixed DBD::Proxy support for AutoCommit
Fixed DBI::ProxyServer bind_param(_inout) handling
Fixed DBI::ProxyServer fetch loop
Fixed install_driver do-the-right-thing with $@ on error. It, and connect(),
will leave $@ empty on success and holding the error message on error.
Fixed fetchrow_hashref to assign columns to the hash left-to-right
so later fields with the same name overwrite earlier ones
as per DBI < 1.15
Changed tables() to use quote_indentifier() if the driver returns a
true value for $dbh->get_info(29) # SQL_IDENTIFIER_QUOTE_CHAR
Changed ping() so it no longer triggers RaiseError/PrintError.
Changed connect() to not call $class->install_driver unless needed.
Changed DESTROY to catch fatal exceptions and append to $@.
Added ISO SQL/CLI & ODBCv3 data type definitions
Removed the definition of SQL_BIGINT data type constant as the value is
inconsistent between standards (ODBC=-5, SQL/CLI=25).
Added $dbh->column_info(...)
Added $dbh->foreign_key_info(...)
Added $dbh->quote_identifier(...)
Added $h->{HandleError} = sub { ... } addition and/or alternative
to RaiseError/PrintError.
Added Fowler/Noll/Vo hash type as an option to DBI::hash().
Added DBI::Changes so now you can "perldoc DBI::Changes", yeah!
Added selectrow_arrayref & selectrow_hashref docs
The automatic truncation in gensolpkg doesn't work for packages which
have the same package name for the first 5-6 chars.
e.g. amanda-server and amanda-client would be named amanda and amanda.
Now, we add a SVR4_PKGNAME and use amacl for amanda-client and amase for
amanda-server.
All svr4 packages also have a vendor tag, so we have to reserve some chars
for this tag, which is normaly 3 or 4 chars. Thats why we can only use 6
or 5 chars for SVR4_PKGNAME. I used 5 for all the packages, to give the
vendor tag enough room.
All p5-* packages and a few other packages have now a SVR4_PKGNAME.
Made fetchall_arrayref({ foo=>1, ...}) be more strict to the specification
in relation to wanting hash slice keys to be lowercase names.
Fixed $sth->execute() to update $dbh->{Statement} to $sth->{Statement}.
Added row number to trace output for fetch method calls.
Added $h->{FetchHashKeyName} = 'NAME_lc' or 'NAME_uc' to alter
behaviour of fetchrow_hashref() method. See docs.
Added type_info quote caching to quote() method
Makes using quote() with second data type param much much faster.
Added type_into_all() caching to type_info()
Added new API definition for table_info() and tables(),
Added primary_key_info() to DBI API
Added primary_key() to DBI API as simpler interface to primary_key_info().
Indent and other fixes for DBI::DBD doc
Added prepare_cached() insert_hash() example
Removed false docs for fetchall_hashref(), use fetchall_arrayref({}).
Fixed that altering ShowErrorStatement also altered AutoCommit!
Fixed DBD::Proxy to handle commit() and rollback(). Long overdue, sorry.
Fixed incompatibility with perl 5.004 (but no one's using that right? :)
Fixed connect_cached and prepare_cached to not be affected by the order
of elements in the attribute hash.
Fixed version number of DBI::Shell
Defined and documented table_info() attribute semantics (ODBC compatible)
Reimplemented fetchrow_hashref in C, now fetches about 25% faster!
Changed behaviour if both PrintError and RaiseError are enabled
to simply do both (in that order, obviously :)
Slight reduction in DBI handle creation overhead
Fixed $dbh->{Driver} & $sth->{Database} to return 'outer' handles.
Fixed execute param count check to honour RaiseError
Fixed build for perl5.6.1 with PERLIO
Fixed client sql restrictions in ProxyServer.pm
Fixed batch mode command parsing in Shell
Fixed typo in selectcol_arrayref docs
Fixed selectrow_hashref to be available to callers
Fixed core dump if statement handle didn't define Statement attribute
Added bind_param_inout docs to DBI::DBD
Added note to data_sources() method docs that some drivers may
require a connected database handle to be supplied as an attribute
Trace of install_driver method now shows path of driver file loaded
Changed many '||' to 'or' in the docs
Updated DBD::ADO again (improvements in error handling)
Updated Win32::DBIODBC (Win32::ODBC emulation)
Updated email and web addresses in DBI::FAQ
Added selectrow_arrayref, selectrow_hashref, selectall_hashref
Added DBI->connect(..., { dbi_connect_method => 'method' })
Added $h->{ShowErrorStatement}=1 to cause the appending of the
relevant Statement text to the RaiseError/PrintError text.
Trace method uses warn() if it can't open the new file.
Trace shows source line and filename during global destruction.
Documentation:
Documented $DBI::lasth (which has been there since day 1).
Documented SQL_* names.
Clarified and extended docs for $h->state
Clarified fetchall_arrayref({}) docs
Clarified type_info_all re lettercase and index values.
Updated DBI::FAQ to 0.38
Added cute bind_columns example
Extended docs on \%attr arg to data_sources method.
Proxy:
Removed debug messages from DBD::Proxy AUTOLOAD
Added fix for problem using table_info
Added better determination of where to put the pid file
Added KNOWN ISSUES section to DBD::Proxy docs
Known issues:
Perl 5.005 and 5.006 both leak memory doing local($handle->{Foo}).
Perl 5.004 doesn't. The leak is not a DBI or driver bug.
NOTE: This version is the one the DBI book is based on.
NOTE: This version requires at least Perl 5.004.
Perl 5.6 ithreads changes with thanks to Doug MacEachern.
Changed trace output to use PerlIO thanks to Paul Moore.
Fixed bug in RaiseError/PrintError handling.
(% chars in the error string could cause a core dump.)
Fixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt.
Major documentation polishing thanks to Linda Mui at O'Reilly.
Password parameter now shown as **** in trace output.
Added two fields to type_info and type_info_all.
Added $dsn to PrintError/RaiseError message from DBI->connect().
Changed prepare_cached() croak to carp if sth still Active.
Added prepare_cached() example to the docs.
Added further DBD::ADO enhancements from Thomas Lowery.
Apache perl modules, and each compiled and installed/de-installed apparently
correctly.
As a side effect of the dynamic PLIST, we no longer need to to have separate
-static and -shared PLISTs. It's now easier than ever to make a perl5
package for NetBSD :)
Changes in DBI 1.13, 11th July 1999
Fixed Win32 PerlEx IIS concurrency bugs thanks to ActiveState.
Fixed problems with DBD::ExampleP long_list test mode.
Added SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR and SQL_BIT
to list of known and exportable SQL types.
Improved data fetch performance of DBD::ADO.
Added GetTypeInfo to DBD::ADO thanks to Thomas Lowery.
Actually documented connect_cached thanks to Michael Schwern.
Fixed user/key/cipher bug in ProxyServer thanks to Joshua Pincus.
Changes in DBI 1.12, 29th June 1999
Fixed significant DBD::ADO bug (fetch skipped first row).
Fixed ProxyServer bug handling non-select statements.
Fixed VMS problem with t/examp.t thanks to Craig Berry.
Trace only shows calls to trace_msg and _set_fbav at high levels.
Modified t/examp.t to workaround Cygwin buffering bug.
Changes in DBI 1.11, 17th June 1999
Fixed bind_columns argument checking to allow a single arg.
Fixed problems with internal default_user method.
Fixed broken DBD::ADO.
Made default $DBI::rows more robust for some obscure cases.
Changes in DBI 1.10, 14th June 1999
Fixed trace_msg.al error when using Apache.
Fixed dbd_st_finish enhancement in Driver.xst (internals).
Enable drivers to define default username and password
and temporarily disabled warning added in 1.09.
Thread safety optimised for single thread case.
Changes in DBI 1.09, 9th June 1999
Added optional minimum trace level parameter to trace_msg().
Added warning in Makefile.PL that DBI will require 5.004 soon.
Added $dbh->selectcol_arrayref($statement) method.
Fixed fetchall_arrayref hash-slice mode undef NAME problem.
Fixed problem with tainted parameter checking and t/examp.t.
Fixed problem with thread safety code, including 64 bit machines.
Thread safety now enabled by default for threaded perls.
Enhanced code for MULTIPLICITY/PERL_OBJECT from ActiveState.
Enhanced prepare_cached() method.
Minor changes to trace levels (less internal info at level 2).
Trace log now shows "!! ERROR..." before the "<- method" line.
DBI->connect() now warn's if user / password is undefined and
DBI_USER / DBI_PASS environment variables are not defined.
The t/proxy.t test now ignores any /etc/dbiproxy.conf file.
Added portability fixes for MacOS from Chris Nandor.
Updated mailing list address from fugue.com to isc.org.