[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/site_perl/5.10.0/i586-linux-thread-multi/DBI/ -> Changes.pm (source)

   1  =head1 NAME
   2  
   3  DBI::Changes - List of significant changes to the DBI
   4  
   5  (As of $Date: 2008-07-22 14:45:45 -0700 (Tue, 22 Jul 2008) $ $Revision: 11571 $)
   6  
   7  =cut
   8  
   9  Assorted TODO notes:
  10  
  11  General:
  12      Protect trace_msg from SIGPIPE?
  13      prepare(...,{ Err=>\my $isolated_err, ...})
  14      Add trace modules that just records the last N trace messages into an array
  15      and prepends them to any error message.
  16      Document DBI_PROFILE_FLOCK and LockFile attrib in DBI::ProfileData and DBI::ProfileDumper
  17  Performance:
  18      Move _new_sth to DBI::db::_new_sth (leave alias) and implement in C
  19          Or call _new_child and move to DBI::common?
  20      Implement FETCH_many() in C
  21  
  22  Gofer TODOs:
  23  
  24  Add server-side caching.
  25      combine these:
  26          my $request = $transport->thaw_request( $frozen_request, $serializer );
  27          my $response = $executor->execute_request( $request );
  28          my $frozen_response = $transport->freeze_response($response, $serializer);
  29      into single method that first checks the cache and updates it if appropriate.
  30      Different serializations will have different caches
  31  
  32  Add DBI::Gofer::Serialiser::MIME / Base64
  33  Add DBI::Gofer::Serialiser::JSON
  34  
  35  Gofer - allow dbh attrib changes after connect?
  36      note them and pass in request as STORE method calls
  37      but then gofer server need to reset them to restore dbh to original state
  38      Or, change the attr in the connect() call, but that risks
  39      bloating the number of cache dbh in the server.
  40  Gofer request flags for:
  41      - return current executor stats as an attribute - handy for tests
  42      - will accept streamed resultsets
  43  Add attr-passthru to prepare()? ie for gofer cache control & ReadOnly
  44  Define and document terminology for client and server ends
  45  Document user/passwd issues at the various levels of the gofer stack
  46      Remove "Password" from connect attr if the same as $password arg
  47  Extract policy settings by parsing the pod
  48  Policy for dbh attr FETCH (ie example_driver_path)
  49      or piggyback on skip_connect_check
  50      could also remember which attr have been returned to us
  51      so not bother FETCHing them (unless pedantic)
  52  Call method on transport failure so transport can cleanup/reset if it wants
  53  Gofer: gearman - need to disable coallesing for non-idempotent requests
  54  
  55  Add high-res time for windows - via Time::HiRes glob replace dbi_time().
  56  
  57  =head2 Changes in DBI 1.607 (svn r11571) 22nd July 2008
  58  
  59    NOTE: Perl 5.8.1 is now the minimum supported version.
  60    If you need support for earlier versions send me a patch.
  61  
  62    Fixed missing import of carp in DBI::Gofer::Execute.
  63  
  64    Added note to docs about effect of execute(@empty_array).
  65    Clarified docs for ReadOnly thanks to Martin Evans.
  66  
  67  =head2 Changes in DBI 1.605 (svn r11434) 16th June 2008
  68  
  69    Fixed broken DBIS macro with threads on big-endian machines
  70      with 64bit ints but 32bit pointers. Ticket #32309.
  71    Fixed the selectall_arrayref, selectrow_arrayref, and selectrow_array
  72      methods that get embedded into compiled drivers to use the
  73      inner sth handle when passed a $sth instead of an sql string.
  74      Drivers will need to be recompiled to pick up this change.
  75    Fixed leak in neat() for some kinds of values thanks to Rudolf Lippan.
  76    Fixed DBI::PurePerl neat() to behave more like XS neat().
  77  
  78    Increased default $DBI::neat_maxlen from 400 to 1000.
  79    Increased timeout on tests to accomodate very slow systems.
  80    Changed behaviour of trace levels 1..4 to show less information
  81      at lower levels.
  82    Changed the format of the key used for $h->{CachedKids}
  83      (which is undocumented so you shouldn't depend on it anyway)
  84    Changed gofer error handling to avoid duplicate error text in errstr.
  85    Clarified docs re ":N" style placeholders.
  86    Improved gofer retry-on-error logic and refactored to aid subclassing.
  87    Improved gofer trace output in assorted ways.
  88  
  89    Removed the beeps "\a" from Makefile.PL warnings.
  90    Removed check for PlRPC-modules from Makefile.PL
  91  
  92    Added sorting of ParamValues reported by ShowErrorStatement
  93      thanks to to Rudolf Lippan.
  94    Added cache miss trace message to DBD::Gofer transport class.
  95    Added $drh->dbixs_revision method.
  96    Added explicit LICENSE specification (perl) to META.yaml
  97  
  98  =head2 Changes in DBI 1.604 (svn rev 10994) 24th March 2008
  99  
 100    Fixed fetchall_arrayref with $max_rows argument broken in 1.603,
 101      thanks to Greg Sabino Mullane.
 102    Fixed a few harmless compiler warnings on cygwin.
 103  
 104  =head2 Changes in DBI 1.603
 105  
 106    Fixed pure-perl fetchall_arrayref with $max_rows argument
 107      to not error when fetching after all rows already fetched.
 108      (Was fixed for compiled drivers back in DBI 1.31.)
 109      Thanks to Mark Overmeer.
 110    Fixed C sprintf formats and casts, fixing compiler warnings.
 111  
 112    Changed dbi_profile() to accept a hash of profiles and apply to all.
 113    Changed gofer stream transport to improve error reporting.
 114    Changed gofer test timeout to avoid spurious failures on slow systems.
 115  
 116    Added options to t/85gofer.t so it's more useful for manual testing.
 117  
 118  =head2 Changes in DBI 1.602 (svn rev 10706)  8th February 2008
 119  
 120    Fixed potential coredump if stack reallocated while calling back
 121      into perl from XS code. Thanks to John Gardiner Myers.
 122    Fixed DBI::Util::CacheMemory->new to not clear the cache.
 123    Fixed avg in DBI::Profile as_text() thanks to Abe Ingersoll.
 124    Fixed DBD::DBM bug in push_names thanks to J M Davitt.
 125    Fixed take_imp_data for some platforms thanks to Jeffrey Klein.
 126    Fixed docs tie'ing CacheKids (ie LRU cache) thanks to Peter John Edwards.
 127  
 128    Expanded DBI::DBD docs for driver authors thanks to Martin Evans.
 129    Enhanced t/80proxy.t test script.
 130    Enhanced t/85gofer.t test script thanks to Stig.
 131    Enhanced t/10examp.t test script thanks to David Cantrell.
 132    Documented $DBI::stderr as the default value of err for internal errors.
 133  
 134    Gofer changes:
 135      track_recent now also keeps track of N most recent errors.
 136      The connect method is now also counted in stats.
 137  
 138  =head2 Changes in DBI 1.601 (svn rev 10103),  21st October 2007
 139  
 140    Fixed t/05thrclone.t to work with Test::More >= 0.71
 141      thanks to Jerry D. Hedden and Michael G Schwern.
 142    Fixed DBI for VMS thanks to Peter (Stig) Edwards.
 143  
 144    Added client-side caching to DBD::Gofer. Can use any cache with
 145      get($k)/set($k,$v) methods, including all the Cache and Cache::Cache
 146      distribution modules plus Cache::Memcached, Cache::FastMmap etc.
 147      Works for all transports. Overridable per handle.
 148  
 149    Added DBI::Util::CacheMemory for use with DBD::Gofer caching.
 150      It's a very fast and small strict subset of Cache::Memory.
 151  
 152  =head2 Changes in DBI 1.59 (svn rev 9874),  23rd August 2007
 153  
 154    Fixed DBI::ProfileData to unescape headers lines read from data file.
 155    Fixed DBI::ProfileData to not clobber $_, thanks to Alexey Tourbin.
 156    Fixed DBI::SQL::Nano to not clobber $_, thanks to Alexey Tourbin.
 157    Fixed DBI::PurePerl to return undef for ChildHandles if weaken not available.
 158    Fixed DBD::Proxy disconnect error thanks to Philip Dye.
 159    Fixed DBD::Gofer::Transport::Base bug (typo) in timeout code.
 160    Fixed DBD::Proxy rows method thanks to Philip Dye.
 161    Fixed dbiprof compile errors, thanks to Alexey Tourbin.
 162    Fixed t/03handle.t to skip some tests if ChildHandles not available.
 163  
 164    Added check_response_sub to DBI::Gofer::Execute
 165  
 166  =head2 Changes in DBI 1.58 (svn rev 9678),  25th June 2007
 167  
 168    Fixed code triggering fatal error in bleadperl, thanks to Steve Hay.
 169    Fixed compiler warning thanks to Jerry D. Hedden.
 170    Fixed t/40profile.t to use int(dbi_time()) for systems like Cygwin where
 171      time() seems to be rounded not truncated from the high resolution time.
 172    Removed dump_results() test from t/80proxy.t.
 173  
 174  =head2 Changes in DBI 1.57 (svn rev 9639),  13th June 2007
 175  
 176    Note: this release includes a change to the DBI::hash() function which will
 177    now produce different values than before *if* your perl was built with 64-bit
 178    'int' type (i.e. "perl -V:intsize" says intsize='8').  It's relatively rare
 179    for perl to be configured that way, even on 64-bit systems.
 180  
 181    Fixed XS versions of select*_*() methods to call execute()
 182      fetch() etc., with inner handle instead of outer.
 183    Fixed execute_for_fetch() to not cache errstr values
 184      thanks to Bart Degryse.
 185    Fixed unused var compiler warning thanks to JDHEDDEN.
 186    Fixed t/86gofer_fail tests to be less likely to fail falsely.
 187  
 188    Changed DBI::hash to return 'I32' type instead of 'int' so results are
 189      portable/consistent regardless of size of the int type.
 190    Corrected timeout example in docs thanks to Egmont Koblinger.
 191    Changed t/01basic.t to warn instead of failing when it detects
 192      a problem with Math::BigInt (some recent versions had problems).
 193  
 194    Added support for !Time and !Time~N to DBI::Profile Path. See docs.
 195    Added extra trace info to connect_cached thanks to Walery Studennikov.
 196    Added non-random (deterministic) mode to DBI_GOFER_RANDOM mechanism.
 197    Added DBIXS_REVISION macro that drivers can use.
 198    Added more docs for private_attribute_info() method.
 199  
 200    DBI::Profile changes:
 201      dbi_profile() now returns ref to relevant leaf node.
 202      Don't profile DESTROY during global destruction.
 203      Added as_node_path_list() and as_text() methods.
 204    DBI::ProfileDumper changes:
 205      Don't write file if there's no profile data.
 206      Uses full natural precision when saving data (was using %.6f)
 207      Optimized flush_to_disk().
 208      Locks the data file while writing.
 209      Enabled filename to be a code ref for dynamic names.
 210    DBI::ProfileDumper::Apache changes:
 211      Added Quiet=>1 to avoid write to STDERR in flush_to_disk().
 212      Added Dir=>... to specify a writable destination directory.
 213      Enabled DBI_PROFILE_APACHE_LOG_DIR for mod_perl 1 as well as 2.
 214      Added parent pid to default data file name.
 215    DBI::ProfileData changes:
 216      Added DeleteFiles option to rename & delete files once read.
 217      Locks the data files while reading.
 218      Added ability to sort by Path elements.
 219    dbiprof changes:
 220      Added --dumpnodes and --delete options.
 221    Added/updated docs for both DBI::ProfileDumper && ::Apache.
 222  
 223  =head2 Changes in DBI 1.56 (svn rev 9660),  18th June 2007
 224  
 225    Fixed printf arg warnings thanks to JDHEDDEN.
 226    Fixed returning driver-private sth attributes via gofer.   
 227  
 228    Changed pod docs docs to use =head3 instead of =item
 229      so now in html you get links to individual methods etc.
 230    Changed default gofer retry_limit from 2 to 0.
 231    Changed tests to workaround Math::BigInt broken versions.
 232    Changed dbi_profile_merge() to dbi_profile_merge_nodes()
 233      old name still works as an alias for the new one.
 234    Removed old DBI internal sanity check that's no longer valid
 235      causing "panic: DESTROY (dbih_clearcom)" when tracing enabled
 236  
 237    Added DBI_GOFER_RANDOM env var that can be use to trigger random
 238      failures and delays when executing gofer requests. Designed to help
 239      test automatic retry on failures and timeout handling.
 240    Added lots more docs to all the DBD::Gofer and DBI::Gofer classes.
 241  
 242  =head2 Changes in DBI 1.55 (svn rev 9504),  4th May 2007
 243  
 244    Fixed set_err() so HandleSetErr hook is executed reliably, if set.
 245    Fixed accuracy of profiling when perl configured to use long doubles.
 246    Fixed 42prof_data.t on fast systems with poor timers thanks to Malcolm Nooning.
 247    Fixed potential corruption in selectall_arrayref and selectrow_arrayref
 248      for compiled drivers, thanks to Rob Davies.
 249      Rebuild your compiled drivers after installing DBI.
 250  
 251    Changed some handle creation code from perl to C code,
 252      to reduce handle creation cost by ~20%.
 253    Changed internal implementation of the CachedKids attribute
 254      so it's a normal handle attribute (and initially undef).
 255    Changed connect_cached and prepare_cached to avoid a FETCH method call,
 256      and thereby reduced cost by ~5% and ~30% respectively.
 257    Changed _set_fbav to not croak when given a wrongly sized array,
 258      it now warns and adjusts the row buffer to match.
 259    Changed some internals to improve performance with threaded perls.
 260    Changed DBD::NullP to be slightly more useful for testing.
 261    Changed File::Spec prerequisite to not require a minimum version.
 262    Changed tests to work with other DBMs thanks to ZMAN.
 263    Changed ex/perl_dbi_nulls_test.pl to be more descriptive.
 264  
 265    Added more functionality to the (undocumented) Callback mechanism.
 266      Callbacks can now elect to provide a value to be returned, in which case
 267      the method won't be called. A callback for "*" is applied to all methods
 268      that don't have their own callback.
 269    Added $h->{ReadOnly} attribute.
 270    Added support for DBI Profile Path to contain refs to scalars
 271      which will be de-ref'd for each profile sample.
 272    Added dbilogstrip utility to edit DBI logs for diff'ing (gets installed)
 273    Added details for SQLite 3.3 to NULL handling docs thanks to Alex Teslik.
 274    Added take_imp_data() to DBI::PurePerl.
 275  
 276    Gofer related changes:
 277      Fixed gofer pipeone & stream transports to avoid risk of hanging.
 278      Improved error handling and tracing significantly.
 279      Added way to generate random 1-in-N failures for methods.
 280      Added automatic retry-on-error mechanism to gofer transport base class.
 281      Added tests to show automatic retry mechanism works a treat!
 282      Added go_retry_hook callback hook so apps can fine-tune retry behaviour.
 283      Added header to request and response packets for sanity checking
 284        and to enable version skew between client and server.
 285      Added forced_single_resultset, max_cached_sth_per_dbh and max_cached_dbh_per_drh
 286        to gofer executor config.
 287      Driver-private methods installed with install_method are now proxied.
 288      No longer does a round-trip to the server for methods it knows
 289        have not been overridden by the remote driver.
 290      Most significant aspects of gofer behaviour are controlled by policy mechanism.
 291      Added policy-controlled caching of results for some methods, such as schema metadata.
 292      The connect_cached and prepare_cached methods cache on client and server.
 293      The bind_param_array and execute_array methods are now supported.
 294      Worked around a DBD::Sybase bind_param bug (which is fixed in DBD::Sybase 1.07)
 295      Added goferperf.pl utility (doesn't get installed).
 296      Many other assorted Gofer related bug fixes, enhancements and docs.
 297      The http and mod_perl transports have been remove to their own distribution.
 298      Client and server will need upgrading together for this release.
 299  
 300  =head2 Changes in DBI 1.54 (svn rev 9157),  23rd February 2007
 301  
 302    NOTE: This release includes the 'next big thing': DBD::Gofer.
 303    Take a look!
 304  
 305    WARNING: This version has some subtle changes in DBI internals.
 306    It's possible, though doubtful, that some may affect your code.
 307    I recommend some extra testing before using this release.
 308    Or perhaps I'm just being over cautious...
 309  
 310    Fixed type_info when called for multiple dbh thanks to Cosimo Streppone.
 311    Fixed compile warnings in bleadperl on freebsd-6.1-release
 312      and solaris 10g thanks to Philip M. Gollucci.
 313    Fixed to compile for perl built with -DNO_MATHOMS thanks to Jerry D. Hedden.
 314    Fixed to work for bleadperl (r29544) thanks to Nicholas Clark.
 315      Users of Perl >= 5.9.5 will require DBI >= 1.54.
 316    Fixed rare error when profiling access to $DBI::err etc tied variables.
 317    Fixed DBI::ProfileDumper to not be affected by changes to $/ and $,
 318      thanks to Michael Schwern.
 319  
 320    Changed t/40profile.t to skip tests for perl < 5.8.0.
 321    Changed setting trace file to no longer write "Trace file set" to new file.
 322    Changed 'handle cleared whilst still active' warning for dbh
 323      to only be given for dbh that have active sth or are not AutoCommit.
 324    Changed take_imp_data to call finish on all Active child sth.
 325    Changed DBI::PurePerl trace() method to be more consistent.
 326    Changed set_err method to effectively not append to errstr if the new errstr
 327      is the same as the current one.
 328    Changed handle factory methods, like connect, prepare, and table_info,
 329      to copy any error/warn/info state of the handle being returned
 330      up into the handle the method was called on.
 331    Changed row buffer handling to not alter NUM_OF_FIELDS if it's
 332      inconsistent with number of elements in row buffer array.
 333    Updated DBI::DBD docs re handling multiple result sets.
 334    Updated DBI::DBD docs for driver authors thanks to Ammon Riley
 335      and Dean Arnold.
 336    Updated column_info docs to note that if a table doesn't exist
 337      you get an sth for an empty result set and not an error.
 338  
 339    Added new DBD::Gofer 'stateless proxy' driver and framework,
 340      and the DBI test suite is now also executed via DBD::Gofer,
 341      and DBD::Gofer+DBI::PurePerl, in addition to DBI::PurePerl.
 342    Added ability for trace() to support filehandle argument,
 343      including tracing into a string, thanks to Dean Arnold.
 344    Added ability for drivers to implement func() method
 345      so proxy drivers can proxy the func method itself.
 346    Added SQL_BIGINT type code (resolved to the ODBC/JDBC value (-5))
 347    Added $h->private_attribute_info method.
 348  
 349  =head2 Changes in DBI 1.53 (svn rev 7995),   31st October 2006
 350  
 351    Fixed checks for weaken to work with early 5.8.x versions
 352    Fixed DBD::Proxy handling of some methods, including commit and rollback.
 353    Fixed t/40profile.t to be more insensitive to long double precision.
 354    Fixed t/40profile.t to be insensitive to small negative shifts in time
 355      thanks to Jamie McCarthy.
 356    Fixed t/40profile.t to skip tests for perl < 5.8.0.
 357    Fixed to work with current 'bleadperl' (~5.9.5) thanks to Steve Peters.
 358      Users of Perl >= 5.9.5 will require DBI >= 1.53.
 359    Fixed to be more robust against drivers not handling multiple result
 360      sets properly, thanks to Gisle Aas.
 361  
 362    Added array context support to execute_array and execute_for_fetch
 363      methods which returns executed tuples and rows affected.
 364    Added Tie::Cache::LRU example to docs thanks to Brandon Black.
 365  
 366  =head2 Changes in DBI 1.52 (svn rev 6840),   30th July 2006
 367  
 368    Fixed memory leak (per handle) thanks to Nicholas Clark and Ephraim Dan.
 369    Fixed memory leak (16 bytes per sth) thanks to Doru Theodor Petrescu.
 370    Fixed execute_for_fetch/execute_array to RaiseError thanks to Martin J. Evans.
 371    Fixed for perl 5.9.4. Users of Perl >= 5.9.4 will require DBI >= 1.52.
 372  
 373    Updated DBD::File to 0.35 to match the latest release on CPAN.
 374  
 375    Added $dbh->statistics_info specification thanks to Brandon Black.
 376  
 377    Many changes and additions to profiling:
 378      Profile Path can now uses sane strings instead of obscure numbers,
 379      can refer to attributes, assorted magical values, and even code refs!
 380      Parsing of non-numeric DBI_PROFILE env var values has changed.
 381      Changed DBI::Profile docs extensively - many new features.
 382      See DBI::Profile docs for more information.
 383  
 384  =head2 Changes in DBI 1.51 (svn rev 6475),   6th June 2006
 385  
 386    Fixed $dbh->clone method 'signature' thanks to Jeffrey Klein.
 387    Fixed default ping() method to return false if !$dbh->{Active}.
 388    Fixed t/40profile.t to be insensitive to long double precision.
 389    Fixed for perl 5.8.0's more limited weaken() function.
 390    Fixed DBD::Proxy to not alter $@ in disconnect or AUTOLOADd methods.
 391    Fixed bind_columns() to use return set_err(...) instead of die()
 392      to report incorrect number of parameters, thanks to Ben Thul.
 393    Fixed bind_col() to ignore undef as bind location, thanks to David Wheeler.
 394    Fixed for perl 5.9.x for non-threaded builds thanks to Nicholas Clark.
 395      Users of Perl >= 5.9.x will require DBI >= 1.51.
 396    Fixed fetching of rows as hash refs to preserve utf8 on field names
 397      from $sth->{NAME} thanks to Alexey Gaidukov.
 398    Fixed build on Win32 (dbd_postamble) thanks to David Golden.
 399  
 400    Improved performance for thread-enabled perls thanks to Gisle Aas.
 401    Drivers can now use PERL_NO_GET_CONTEXT thanks to Gisle Aas.
 402      Driver authors please read the notes in the DBI::DBD docs.
 403    Changed DBI::Profile format to always include a percentage,
 404      if not exiting then uses time between the first and last DBI call.
 405    Changed DBI::ProfileData to be more forgiving of systems with
 406      unstable clocks (where time may go backwards occasionally).
 407    Clarified the 'Subclassing the DBI' docs.
 408    Assorted minor changes to docs from comments on annocpan.org.
 409    Changed Makefile.PL to avoid incompatible options for old gcc.
 410  
 411    Added 'fetch array of hash refs' example to selectall_arrayref
 412      docs thanks to Tom Schindl.
 413    Added docs for $sth->{ParamArrays} thanks to Martin J. Evans.
 414    Added reference to $DBI::neat_maxlen in TRACING section of docs.
 415    Added ability for DBI::Profile Path to include attributes
 416      and a summary of where the code was called from.
 417  
 418  =head2 Changes in DBI 1.50 (svn rev 2307),   13 December 2005
 419  
 420    Fixed Makefile.PL options for gcc bug introduced in 1.49.
 421    Fixed handle magic order to keep DBD::Oracle happy.
 422    Fixed selectrow_array to return empty list on error.
 423  
 424    Changed dbi_profile_merge() to be able to recurse and merge
 425      sub-trees of profile data.
 426  
 427    Added documentation for dbi_profile_merge(), including how to
 428      measure the time spent inside the DBI for an http request.
 429  
 430  =head2 Changes in DBI 1.49 (svn rev 2287),   29th November 2005
 431  
 432    Fixed assorted attribute handling bugs in DBD::Proxy.
 433    Fixed croak() in DBD::NullP thanks to Sergey Skvortsov.
 434    Fixed handling of take_imp_data() and dbi_imp_data attribute.
 435    Fixed bugs in DBD::DBM thanks to Jeff Zucker.
 436    Fixed bug in DBI::ProfileDumper thanks to Sam Tregar.
 437    Fixed ping in DBD::Proxy thanks to George Campbell.
 438    Fixed dangling ref in $sth after parent $dbh destroyed
 439      with thanks to il@rol.ru for the bug report #13151
 440    Fixed prerequisites to include Storable thanks to Michael Schwern.
 441    Fixed take_imp_data to be more practical.
 442  
 443    Change to require perl 5.6.1 (as advertised in 2003) not 5.6.0.
 444    Changed internals to be more strictly coded thanks to Andy Lester.
 445    Changed warning about multiple copies of Driver.xst found in @INC
 446      to ignore duplicated directories thanks to Ed Avis.
 447    Changed Driver.xst to enable drivers to define an dbd_st_prepare_sv
 448      function where the statement parameter is an SV. That enables
 449      compiled drivers to support SQL strings that are UTF-8.
 450    Changed "use DBI" to only set $DBI::connect_via if not already set.
 451    Changed docs to clarify pre-method clearing of err values.
 452  
 453    Added ability for DBI::ProfileData to edit profile path on loading.
 454      This enables aggregation of different SQL statements into the same
 455      profile node - very handy when not using placeholders or when working
 456      multiple separate tables for the same thing (ie logtable_2005_11_28)
 457    Added $sth->{ParamTypes} specification thanks to Dean Arnold.
 458    Added $h->{Callbacks} attribute to enable code hooks to be invoked
 459      when certain methods are called. For example:
 460      $dbh->{Callbacks}->{prepare} = sub { ... };
 461      With thanks to David Wheeler for the kick start.
 462    Added $h->{ChildHandles} (using weakrefs) thanks to Sam Tregar
 463      I've recoded it in C so there's no significant performance impact.
 464    Added $h->{Type} docs (returns 'dr', 'db', or 'st')
 465    Adding trace message in DESTROY if InactiveDestroy enabled.
 466    Added %drhs = DBI->installed_drivers();
 467  
 468    Ported DBI::ProfileDumper::Apache to mod_perl2 RC5+
 469      thanks to Philip M. Golluci
 470  
 471  =head2 Changes in DBI 1.48 (svn rev 928),    14th March 2005
 472  
 473    Fixed DBI::DBD::Metadata generation of type_info_all thanks to Steffen Goeldner
 474      (driver authors who have used it should rerun it).
 475  
 476    Updated docs for NULL Value placeholders thanks to Brian Campbell.
 477    
 478    Added multi-keyfield nested hash fetching to fetchall_hashref()
 479      thanks to Zhuang (John) Li for polishing up my draft.
 480    Added registered driver prefixes: amzn_ for DBD::Amazon and yaswi_ for DBD::Yaswi.
 481  
 482  
 483  =head2 Changes in DBI 1.47 (svn rev 854),    2nd February 2005
 484  
 485    Fixed DBI::ProxyServer to not create pid files by default.
 486      References: Ubuntu Security Notice USN-70-1, CAN-2005-0077
 487      Thanks to Javier Fernández-Sanguino Peña from the
 488      Debian Security Audit Project, and Jonathan Leffler.
 489    Fixed some tests to work with older Test::More versions.
 490    Fixed setting $DBI::err/errstr in DBI::PurePerl.
 491    Fixed potential undef warning from connect_cached().
 492    Fixed $DBI::lasth handling for DESTROY so lasth points to
 493      parent even if DESTROY called other methods.
 494    Fixed DBD::Proxy method calls to not alter $@.
 495    Fixed DBD::File problem with encoding pragma thanks to Erik Rijkers.
 496  
 497    Changed error handling so undef errstr doesn't cause warning.
 498    Changed DBI::DBD docs to use =head3/=head4 pod thanks to
 499      Jonathan Leffler. This may generate warnings for perl 5.6.
 500    Changed DBI::PurePerl to set autoflush on trace filehandle.
 501    Changed DBD::Proxy to treat Username as a local attribute
 502      so recent DBI version can be used with old DBI::ProxyServer.
 503    Changed driver handle caching in DBD::File.
 504    Added $GetInfoType{SQL_DATABASE_NAME} thanks to Steffen Goeldner.
 505  
 506    Updated docs to recommend some common DSN string attributes.
 507    Updated connect_cached() docs with issues and suggestions.
 508    Updated docs for NULL Value placeholders thanks to Brian Campbell.
 509    Updated docs for primary_key_info and primary_keys.
 510    Updated docs to clarify that the default fetchrow_hashref behaviour,
 511      of returning a ref to a new hash for each row, will not change.
 512    Updated err/errstr/state docs for DBD authors thanks to Steffen Goeldner.
 513    Updated handle/attribute docs for DBD authors thanks to Steffen Goeldner.
 514    Corrected and updated LongReadLen docs thanks to Bart Lateur.
 515    Added DBD::JDBC as a registered driver.
 516  
 517  =head2 Changes in DBI 1.46 (svn rev 584),    16th November 2004
 518  
 519    Fixed parsing bugs in DBI::SQL::Nano thanks to Jeff Zucker.
 520    Fixed a couple of bad links in docs thanks to Graham Barr.
 521    Fixed test.pl Win32 undef warning thanks to H.Merijn Brand & David Repko.
 522    Fixed minor issues in DBI::DBD::Metadata thanks to Steffen Goeldner.
 523    Fixed DBI::PurePerl neat() to use double quotes for utf8.
 524  
 525    Changed execute_array() definition, and default implementation,
 526      to not consider scalar values for execute tuple count. See docs.
 527    Changed DBD::File to enable ShowErrorStatement by default,
 528      which affects DBD::File subclasses such as DBD::CSV and DBD::DBM.
 529    Changed use DBI qw(:utils) tag to include $neat_maxlen.
 530    Updated Roadmap and ToDo.
 531  
 532    Added data_string_diff() data_string_desc() and data_diff()
 533      utility functions to help diagnose Unicode issues.
 534      All can be imported via the use DBI qw(:utils) tag.
 535  
 536  =head2 Changes in DBI 1.45 (svn rev 480),    6th October 2004
 537  
 538    Fixed DBI::DBD code for drivers broken in 1.44.
 539    Fixed "Free to wrong pool"/"Attempt to free unreferenced scalar" in FETCH.
 540  
 541  =head2 Changes in DBI 1.44 (svn rev 478),    5th October 2004
 542  
 543    Fixed build issues on VMS thanks to Jakob Snoer.
 544    Fixed DBD::File finish() method to return 1 thanks to Jan Dubois.
 545    Fixed rare core dump during global destruction thanks to Mark Jason Dominus.
 546    Fixed risk of utf8 flag persisting from one row to the next.
 547  
 548    Changed bind_param_array() so it doesn't require all bind arrays
 549      to have the same number of elements.
 550    Changed bind_param_array() to error if placeholder number <= 0.
 551    Changed execute_array() definition, and default implementation,
 552      to effectively NULL-pad shorter bind arrays.
 553    Changed execute_array() to return "0E0" for 0 as per the docs.
 554    Changed execute_for_fetch() definition, and default implementation,
 555      to return "0E0" for 0 like execute() and execute_array().
 556    Changed Test::More prerequisite to Test::Simple (which is also the name
 557      of the distribution both are packaged in) to work around ppm behaviour.
 558  
 559    Corrected docs to say that get/set of unknown attribute generates
 560      a warning and is no longer fatal. Thanks to Vadim.
 561    Corrected fetchall_arrayref() docs example thanks to Drew Broadley.
 562  
 563    Added $h1->swap_inner_handle($h2) sponsored by BizRate.com
 564  
 565  
 566  =head2 Changes in DBI 1.43 (svn rev 377),    2nd July 2004
 567  
 568    Fixed connect() and connect_cached() RaiseError/PrintError
 569      which would sometimes show "(no error string)" as the error.
 570    Fixed compiler warning thanks to Paul Marquess.
 571    Fixed "trace level set to" trace message thanks to H.Merijn Brand.
 572    Fixed DBD::DBM $dbh->{dbm_tables}->{...} to be keyed by the
 573      table name not the file name thanks to Jeff Zucker.
 574    Fixed last_insert_id(...) thanks to Rudy Lippan.
 575    Fixed propagation of scalar/list context into proxied methods.
 576    Fixed DBI::Profile::DESTROY to not alter $@.
 577    Fixed DBI::ProfileDumper new() docs thanks to Michael Schwern.
 578    Fixed _load_class to propagate $@ thanks to Drew Taylor.
 579    Fixed compile warnings on Win32 thanks to Robert Baron.
 580    Fixed problem building with recent versions of MakeMaker.
 581    Fixed DBD::Sponge not to generate warning with threads.
 582    Fixed DBI_AUTOPROXY to work more than once thanks to Steven Hirsch.
 583  
 584    Changed TraceLevel 1 to not show recursive/nested calls.
 585    Changed getting or setting an invalid attribute to no longer be
 586      a fatal error but generate a warning instead.
 587    Changed selectall_arrayref() to call finish() if
 588      $attr->{MaxRows} is defined.
 589    Changed all tests to use Test::More and enhanced the tests thanks
 590      to Stevan Little and Andy Lester. See http://qa.perl.org/phalanx/
 591    Changed Test::More minimum prerequisite version to 0.40 (2001).
 592    Changed DBI::Profile header to include the date and time.
 593  
 594    Added DBI->parse_dsn($dsn) method.
 595    Added warning if build directory path contains white space.
 596    Added docs for parse_trace_flags() and parse_trace_flag().
 597    Removed "may change" warnings from the docs for table_info(),
 598      primary_key_info(), and foreign_key_info() methods.
 599  
 600  =head2 Changes in DBI 1.42 (svn rev 222),    12th March 2004
 601  
 602    Fixed $sth->{NUM_OF_FIELDS} of non-executed statement handle
 603      to be undef as per the docs (it was 0).
 604    Fixed t/41prof_dump.t to work with perl5.9.1.
 605    Fixed DBD_ATTRIB_DELETE macro thanks to Marco Paskamp.
 606    Fixed DBI::PurePerl looks_like_number() and $DBI::rows.
 607    Fixed ref($h)->can("foo") to not croak.
 608  
 609    Changed attributes (NAME, TYPE etc) of non-executed statement
 610      handle to be undef instead of triggering an error.
 611    Changed ShowErrorStatement to apply to more $dbh methods.
 612    Changed DBI_TRACE env var so just does this at load time:
 613      DBI->trace(split '=', $ENV{DBI_TRACE}, 2);
 614    Improved "invalid number of parameters" error message.
 615    Added DBI::common as base class for DBI::db, DBD::st etc.
 616    Moved methods common to all handles into DBI::common.
 617  
 618    Major tracing enhancement:
 619  
 620    Added $h->parse_trace_flags("foo|SQL|7") to map a group of
 621      trace flags into the corresponding trace flag bits.
 622    Added automatic calling of parse_trace_flags() if
 623      setting the trace level to a non-numeric value:
 624      $h->{TraceLevel}="foo|SQL|7"; $h->trace("foo|SQL|7");
 625      DBI->connect("dbi:Driver(TraceLevel=SQL|foo):...", ...);
 626      Currently no trace flags have been defined.
 627    Added to, and reworked, the trace documentation.
 628    Added dbivport.h for driver authors to use.
 629  
 630    Major driver additions that Jeff Zucker and I have been working on:
 631  
 632    Added DBI::SQL::Nano a 'smaller than micro' SQL parser
 633      with an SQL::Statement compatible API. If SQL::Statement
 634      is installed then DBI::SQL::Nano becomes an empty subclass
 635      of SQL::Statement, unless the DBI_SQL_NANO env var is true.
 636    Added DBD::File, modified to use DBI::SQL::Nano.
 637    Added DBD::DBM, an SQL interface to DBM files using DBD::File.
 638  
 639    Documentation changes:
 640  
 641    Corrected typos in docs thanks to Steffen Goeldner.
 642    Corrected execute_for_fetch example thanks to Dean Arnold.
 643  
 644  =head2 Changes in DBI 1.41 (svn rev 130),    22nd February 2004
 645  
 646    Fixed execute_for_array() so tuple_status parameter is optional
 647      as per docs, thanks to Ed Avis.
 648    Fixed execute_for_array() docs to say that it returns undef if
 649      any of the execute() calls fail.
 650    Fixed take_imp_data() test on m68k reported by Christian Hammers.
 651    Fixed write_typeinfo_pm inconsistencies in DBI::DBD::Metadata
 652      thanks to Andy Hassall.
 653    Fixed $h->{TraceLevel} to not return DBI->trace trace level
 654      which it used to if DBI->trace trace level was higher.
 655  
 656    Changed set_err() to append to errstr, with a leading "\n" if it's
 657      not empty, so that multiple error/warning messages are recorded.
 658    Changed trace to limit elements dumped when an array reference is
 659      returned from a method to the max(40, $DBI::neat_maxlen/10)
 660      so that fetchall_arrayref(), for example, doesn't flood the trace.
 661    Changed trace level to be a four bit integer (levels 0 thru 15)
 662      and a set of topic flags (no topics have been assigned yet).
 663    Changed column_info() to check argument count.
 664    Extended bind_param() TYPE attribute specification to imply
 665      standard formating of value, eg SQL_DATE implies 'YYYY-MM-DD'.
 666  
 667    Added way for drivers to indicate 'success with info' or 'warning'
 668      by setting err to "0" for warning and "" for information.
 669      Both values are false and so don't trigger RaiseError etc.
 670      Thanks to Steffen Goeldner for the original idea.
 671    Added $h->{HandleSetErr} = sub { ... } to be called at the
 672      point that an error, warn, or info state is recorded.
 673      The code can alter the err, errstr, and state values
 674      (e.g., to promote an error to a warning, or the reverse).
 675    Added $h->{PrintWarn} attribute to enable printing of warnings
 676      recorded by the driver. Defaults to same value as $^W (perl -w).
 677    Added $h->{ErrCount} attribute, incremented whenever an error is
 678      recorded by the driver via set_err().
 679    Added $h->{Executed} attribute, set if do()/execute() called.
 680    Added \%attr parameter to foreign_key_info() method.
 681    Added ref count of inner handle to "DESTROY ignored for outer" msg.
 682    Added Win32 build config checks to DBI::DBD thanks to Andy Hassall.
 683    Added bind_col to Driver.xst so drivers can define their own.
 684    Added TYPE attribute to bind_col and specified the expected
 685      driver behaviour.
 686  
 687    Major update to signal handling docs thanks to Lincoln Baxter.
 688    Corrected dbiproxy usage doc thanks to Christian Hammers.
 689    Corrected type_info_all index hash docs thanks to Steffen Goeldner.
 690    Corrected type_info COLUMN_SIZE to chars not bytes thanks to Dean Arnold.
 691    Corrected get_info() docs to include details of DBI::Const::GetInfoType.
 692    Clarified that $sth->{PRECISION} is OCTET_LENGTH for char types.
 693  
 694  =head2 Changes in DBI 1.40,    7th January 2004
 695  
 696    Fixed handling of CachedKids when DESTROYing threaded handles.
 697    Fixed sql_user_name() in DBI::DBD::Metadata (used by write_getinfo_pm)
 698      to use $dbh->{Username}. Driver authors please update your code.
 699  
 700    Changed connect_cached() when running under Apache::DBI
 701      to route calls to Apache::DBI::connect().
 702  
 703    Added CLONE() to DBD::Sponge and DBD::ExampleP.
 704    Added warning when starting a new thread about any loaded driver
 705      which does not have a CLONE() function.
 706    Added new prepare_cache($sql, \%attr, 3) option to manage Active handles.
 707    Added SCALE and NULLABLE support to DBD::Sponge.
 708    Added missing execute() in fetchall_hashref docs thanks to Iain Truskett.
 709    Added a CONTRIBUTING section to the docs with notes on creating patches.
 710  
 711  =head2 Changes in DBI 1.39,    27th November 2003
 712  
 713    Fixed STORE to not clear error during nested DBI call, again/better,
 714      thanks to Tony Bowden for the report and helpful test case.
 715    Fixed DBI dispatch to not try to use AUTOLOAD for driver methods unless
 716      the method has been declared (as methods should be when using AUTOLOAD).
 717      This fixes a problem when the Attribute::Handlers module is loaded.
 718    Fixed cwd check code to use $Config{path_sep} thanks to Steve Hay.
 719    Fixed unqualified croak() calls thanks to Steffen Goeldner.
 720    Fixed DBD::ExampleP TYPE and PRECISION attributes thanks to Tom Lowery.
 721    Fixed tracing of methods that only get traced at high trace levels.
 722  
 723    The level 1 trace no longer includes nested method calls so it generally
 724      just shows the methods the application explicitly calls.
 725    Added line to trace log (level>=4) when err/errstr is cleared.
 726    Updated docs for InactiveDestroy and point out where and when the
 727      trace includes the process id.
 728    Update DBI::DBD docs thanks to Steffen Goeldner.
 729    Removed docs saying that the DBI->data_sources method could be
 730      passed a $dbh. The $dbh->data_sources method should be used instead.
 731    Added link to 'DBI recipes' thanks to Giuseppe Maxia:
 732      http://gmax.oltrelinux.com/dbirecipes.html (note that this
 733      is not an endorsement that the recipies are 'optimal')
 734  
 735    Note: There is a bug in perl 5.8.2 when configured with threads
 736    and debugging enabled (bug #24463) which causes a DBI test to fail.
 737  
 738  =head2 Changes in DBI 1.38,    21th August 2003
 739  
 740    NOTE: The DBI now requires perl version 5.6.0 or later.
 741    (As per notice in DBI 1.33 released 27th February 2003)
 742  
 743    Fixed spurious t/03handles failure on 64bit perls reported by H.Merijn Brand.
 744    Fixed spurious t/15array failure on some perl versions thanks to Ed Avis.
 745    Fixed build using dmake on windows thanks to Steffen Goeldner.
 746    Fixed build on using some shells thanks to Gurusamy Sarathy.
 747    Fixed ParamValues to only be appended to ShowErrorStatement if not empty.
 748    Fixed $dbh->{Statement} not being writable by drivers in some cases.
 749    Fixed occasional undef warnings on connect failures thanks to Ed Avis.
 750    Fixed small memory leak when using $sth->{NAME..._hash}.
 751    Fixed 64bit warnings thanks to Marian Jancar.
 752    Fixed DBD::Proxy::db::DESTROY to not alter $@ thanks to Keith Chapman.
 753    Fixed Makefile.PL status from WriteMakefile() thanks to Leon Brocard.
 754  
 755    Changed "Can't set ...->{Foo}: unrecognised attribute" from an error to a
 756      warning when running with DBI::ProxyServer to simplify upgrades.
 757    Changed execute_array() to no longer require ArrayTupleStatus attribute.
 758    Changed DBI->available_drivers to not hide DBD::Sponge.
 759    Updated/moved placeholder docs to a better place thanks to Johan Vromans.
 760    Changed dbd_db_do4 api in Driver.xst to match dbd_st_execute (return int,
 761      not bool), relevant only to driver authors.
 762    Changed neat(), and thus trace(), so strings marked as utf8 are presented
 763      in double quotes instead of single quotes and are not sanitized.
 764  
 765    Added $dbh->data_sources method.
 766    Added $dbh->last_insert_id method.
 767    Added $sth->execute_for_fetch($fetch_tuple_sub, \@tuple_status) method.
 768    Added DBI->installed_versions thanks to Jeff Zucker.
 769    Added $DBI::Profile::ON_DESTROY_DUMP variable.
 770    Added docs for DBD::Sponge thanks to Mark Stosberg.
 771  
 772  =head2 Changes in DBI 1.37,    15th May 2003
 773  
 774    Fixed "Can't get dbh->{Statement}: unrecognised attribute" error in test
 775      caused by change to perl internals in 5.8.0
 776    Fixed to build with latest development perl (5.8.1@19525).
 777    Fixed C code to use all ANSI declarations thanks to Steven Lembark.
 778  
 779  =head2 Changes in DBI 1.36,    11th May 2003
 780  
 781    Fixed DBI->connect to carp instead of croak on 'old-style' usage.
 782    Fixed connect(,,, { RootClass => $foo }) to not croak if module not found.
 783    Fixed code generated by DBI::DBD::Metadata thanks to DARREN@cpan.org (#2270)
 784    Fixed DBI::PurePerl to not reset $@ during method dispatch.
 785    Fixed VMS build thanks to Michael Schwern.
 786    Fixed Proxy disconnect thanks to Steven Hirsch.
 787    Fixed error in DBI::DBD docs thanks to Andy Hassall.
 788  
 789    Changed t/40profile.t to not require Time::HiRes.
 790    Changed DBI::ProxyServer to load DBI only on first request, which
 791      helps threaded server mode, thanks to Bob Showalter.
 792    Changed execute_array() return value from row count to executed
 793      tuple count, and now the ArrayTupleStatus attribute is mandatory.
 794      NOTE: That is an API definition change that may affect your code.
 795    Changed CompatMode attribute to also disable attribute 'quick FETCH'.
 796    Changed attribute FETCH to be slightly faster thanks to Stas Bekman.
 797  
 798    Added workaround for perl bug #17575 tied hash nested FETCH
 799      thanks to Silvio Wanka.
 800    Added Username and Password attributes to connect(..., \%attr) and so
 801      also embedded in DSN like "dbi:Driver(Username=user,Password=pass):..."
 802      Username and Password can't contain ")", ",", or "=" characters.
 803      The predence is DSN first, then \%attr, then $user & $pass parameters,
 804      and finally the DBI_USER & DBI_PASS environment variables.
 805      The Username attribute is stored in the $dbh but the Password is not.
 806    Added ProxyServer HOWTO configure restrictions docs thanks to Jochen Wiedmann.
 807    Added MaxRows attribute to selectcol_arrayref prompted by Wojciech Pietron.
 808    Added dump_handle as a method not just a DBI:: utility function.
 809    Added on-demand by-row data feed into execute_array() using code ref,
 810      or statement handle. For example, to insert from a select:
 811      $insert_sth->execute_array( { ArrayTupleFetch => $select_sth, ... } )
 812    Added warning to trace log when $h->{foo}=... is ignored due to
 813      invalid prefix (e.g., not 'private_').
 814  
 815  =head2 Changes in DBI 1.35,    7th March 2003
 816  
 817    Fixed memory leak in fetchrow_hashref introduced in DBI 1.33.
 818    Fixed various DBD::Proxy errors introduced in DBI 1.33.
 819    Fixed to ANSI C in dbd_dr_data_sources thanks to Jonathan Leffler.
 820    Fixed $h->can($method_name) to return correct code ref.
 821    Removed DBI::Format from distribution as it's now part of the
 822      separate DBI::Shell distribution by Tom Lowery.
 823    Updated DBI::DBD docs with a note about the CLONE method.
 824    Updated DBI::DBD docs thanks to Jonathan Leffler.
 825    Updated DBI::DBD::Metadata for perl 5.5.3 thanks to Jonathan Leffler.
 826    Added note to install_method docs about setup_driver() method.
 827  
 828  =head2 Changes in DBI 1.34,    28th February 2003
 829  
 830    Fixed DBI::DBD docs to refer to DBI::DBD::Metadata thanks to Jonathan Leffler.
 831    Fixed dbi_time() compile using BorlandC on Windows thanks to Steffen Goeldner.
 832    Fixed profile tests to do enough work to measure on Windows.
 833    Fixed disconnect_all() to not be required by drivers.
 834  
 835    Added $okay = $h->can($method_name) to check if a method exists.
 836    Added DBD::*::*->install_method($method_name, \%attr) so driver private
 837      methods can be 'installed' into the DBI dispatcher and no longer
 838      need to be called using $h->func(..., $method_name).
 839  
 840    Enhanced $dbh->clone() and documentation.
 841    Enhanced docs to note that dbi_time(), and thus profiling, is limited
 842      to only millisecond (seconds/1000) resolution on Windows.
 843    Removed old DBI::Shell from distribution and added Tom Lowery's improved
 844      version to the Bundle::DBI file.
 845    Updated minimum version numbers for modules in Bundle::DBI.
 846  
 847  =head2 Changes in DBI 1.33,    27th February 2003
 848  
 849    NOTE: Future versions of the DBI *will not* support perl 5.6.0 or earlier.
 850    : Perl 5.6.1 will be the minimum supported version.
 851  
 852    NOTE: The "old-style" connect: DBI->connect($database, $user, $pass, $driver);
 853    : has been deprecated for several years and will now generate a warning.
 854    : It will be removed in a later release. Please change any old connect() calls.
 855  
 856    Added $dbh2 = $dbh1->clone to make a new connection to the database
 857      that is identical to the original one. clone() can be called even after
 858      the original handle has been disconnected. See the docs for more details.
 859  
 860    Fixed merging of profile data to not sum DBIprof_FIRST_TIME values.
 861    Fixed unescaping of newlines in DBI::ProfileData thanks to Sam Tregar.
 862    Fixed Taint bug with fetchrow_hashref with help from Bradley Baetz.
 863    Fixed $dbh->{Active} for DBD::Proxy, reported by Bob Showalter.
 864    Fixed STORE to not clear error during nested DBI call,
 865      thanks to Tony Bowden for the report and helpful test case.
 866    Fixed DBI::PurePerl error clearing behaviour.
 867    Fixed dbi_time() and thus DBI::Profile on Windows thanks to Smejkal Petr.
 868    Fixed problem that meant ShowErrorStatement could show wrong statement,
 869     thanks to Ron Savage for the report and test case.
 870    Changed Apache::DBI hook to check for $ENV{MOD_PERL} instead of
 871      $ENV{GATEWAY_INTERFACE} thanks to Ask Bjoern Hansen.
 872    No longer tries to dup trace logfp when an interpreter is being cloned.
 873    Database handles no longer inherit shared $h->err/errstr/state storage
 874      from their drivers, so each $dbh has it's own $h->err etc. values
 875      and is no longer affected by calls made on other dbh's.
 876      Now when a dbh is destroyed it's err/errstr/state values are copied
 877      up to the driver so checking $DBI::errstr still works as expected.
 878  
 879    Build / portability fixes:
 880      Fixed t/40profile.t to not use Time::HiRes.
 881      Fixed t/06attrs.t to not be locale sensitive, reported by Christian Hammers.
 882      Fixed sgi compiler warnings, reported by Paul Blake.
 883      Fixed build using make -j4, reported by Jonathan Leffler.
 884      Fixed build and tests under VMS thanks to Craig A. Berry.
 885  
 886    Documentation changes:
 887      Documented $high_resolution_time = dbi_time() function.
 888      Documented that bind_col() can take an atribute hash.
 889      Clarified documentation for ParamValues attribute hash keys.
 890      Many good DBI documentation tweaks from Jonathan Leffler,
 891        including a major update to the DBI::DBD driver author guide.
 892      Clarified that execute() should itself call finish() if it's
 893        called on a statement handle that's still active.
 894      Clarified $sth->{ParamValues}. Driver authors please note.
 895      Removed "NEW" markers on some methods and attributes and
 896        added text to each giving the DBI version it was added in,
 897        if it was added after DBI 1.21 (Feb 2002).
 898  
 899    Changes of note for authors of all drivers:
 900      Added SQL_DATA_TYPE, SQL_DATETIME_SUB, NUM_PREC_RADIX, and
 901        INTERVAL_PRECISION fields to docs for type_info_all. There were
 902        already in type_info(), but type_info_all() didn't specify the
 903        index values.  Please check and update your type_info_all() code.
 904      Added DBI::DBD::Metadata module that auto-generates your drivers
 905        get_info and type_info_all data and code, thanks mainly to
 906        Jonathan Leffler and Steffen Goeldner. If you've not implemented
 907        get_info and type_info_all methods and your database has an ODBC
 908        driver available then this will do all the hard work for you!
 909      Drivers should no longer pass Err, Errstr, or State to _new_drh
 910        or _new_dbh functions.
 911      Please check that you support the slightly modified behaviour of
 912        $sth->{ParamValues}, e.g., always return hash with keys if possible.
 913  
 914    Changes of note for authors of compiled drivers:
 915      Added dbd_db_login6 & dbd_st_finish3 prototypes thanks to Jonathan Leffler.
 916      All dbd_*_*() functions implemented by drivers must have a
 917        corresponding #define dbd_*_* <driver_prefix>_*_* otherwise
 918        the driver may not work with a future release of the DBI.
 919  
 920    Changes of note for authors of drivers which use Driver.xst:
 921      Some new method hooks have been added are are enabled by
 922        defining corresponding macros:
 923            $drh->data_sources()      - dbd_dr_data_sources
 924            $dbh->do()                - dbd_db_do4
 925      The following methods won't be compiled into the driver unless
 926        the corresponding macro has been #defined:
 927            $drh->disconnect_all()    - dbd_discon_all
 928  
 929  
 930  =head2 Changes in DBI 1.32,    1st December 2002
 931  
 932    Fixed to work with 5.005_03 thanks to Tatsuhiko Miyagawa (I've not tested it).
 933    Reenabled taint tests (accidentally left disabled) spotted by Bradley Baetz.
 934    Improved docs for FetchHashKeyName attribute thanks to Ian Barwick.
 935    Fixed core dump if fetchrow_hashref given bad argument (name of attribute
 936      with a value that wasn't an array reference), spotted by Ian Barwick.
 937    Fixed some compiler warnings thanks to David Wheeler.
 938    Updated Steven Hirsch's enhanced proxy work (seems I left out a bit).
 939    Made t/40profile.t tests more reliable, reported by Randy, who is part of
 940      the excellent CPAN testers team: http://testers.cpan.org/
 941      (Please visit, see the valuable work they do and, ideally, join in!)
 942  
 943  =head2 Changes in DBI 1.31,    29th November 2002
 944  
 945    The fetchall_arrayref method, when called with a $maxrows parameter,
 946      no longer gives an error if called again after all rows have been
 947      fetched. This simplifies application logic when fetching in batches.
 948      Also added batch-fetch while() loop example to the docs.
 949    The proxy now supports non-lazy (synchronous) prepare, positioned
 950      updates (for selects containing 'for update'), PlRPC config set
 951      via attributes, and accurate propagation of errors, all thanks
 952      to Steven Hirsch (plus a minor fix from Sean McMurray and doc
 953      tweaks from Michael A Chase).
 954    The DBI_AUTOPROXY env var can now hold the full dsn of the proxy driver
 955      plus attributes, like "dbi:Proxy(proxy_foo=>1):host=...".
 956    Added TaintIn & TaintOut attributes to give finer control over
 957      tainting thanks to Bradley Baetz.
 958    The RootClass attribute no longer ignores failure to load a module,
 959      but also doesn't try to load a module if the class already exists,
 960      with thanks to James FitzGibbon.
 961    HandleError attribute works for connect failures thanks to David Wheeler.
 962    The connect() RaiseError/PrintError message now includes the username.
 963    Changed "last handle unknown or destroyed" warning to be a trace message.
 964    Removed undocumented $h->event() method.
 965    Further enhancements to DBD::PurePerl accuracy.
 966    The CursorName attribute now defaults to undef and not an error.
 967  
 968    DBI::Profile changes:
 969      New DBI::ProfileDumper, DBI::ProfileDumper::Apache, and
 970      DBI::ProfileData modules (to manage the storage and processing
 971      of profile data), plus dbiprof program for analyzing profile
 972      data - with many thanks to Sam Tregar.
 973      Added $DBI::err (etc) tied variable lookup time to profile.
 974      Added time for DESTROY method into parent handles profile (used to be ignored).
 975  
 976    Documentation changes:
 977      Documented $dbh = $sth->{Database} attribute.
 978      Documented $dbh->connected(...) post-connection call when subclassing.
 979      Updated some minor doc issues thanks to H.Merijn Brand.
 980      Updated Makefile.PL example in DBI::DBD thanks to KAWAI,Takanori.
 981      Fixed execute_array() example thanks to Peter van Hardenberg.
 982  
 983    Changes for driver authors, not required but strongly recommended:
 984      Change DBIS to DBIc_DBISTATE(imp_xxh)   [or imp_dbh, imp_sth etc]
 985      Change DBILOGFP to DBIc_LOGPIO(imp_xxh) [or imp_dbh, imp_sth etc]
 986      Any function from which all instances of DBIS and DBILOGFP are
 987      removed can also have dPERLINTERP removed (a good thing).
 988      All use of the DBIh_EVENT* macros should be removed.
 989      Major update to DBI::DBD docs thanks largely to Jonathan Leffler.
 990      Add these key values: 'Err' => \my $err, 'Errstr' => \my $errstr,
 991      to the hash passed to DBI::_new_dbh() in your driver source code.
 992      That will make each $dbh have it's own $h->err and $h->errstr
 993      values separate from other $dbh belonging to the same driver.
 994      If you have a ::db or ::st DESTROY methods that do nothing
 995      you can now remove them - which speeds up handle destruction.
 996  
 997  
 998  =head2 Changes in DBI 1.30,    18th July 2002
 999  
1000    Fixed problems with selectrow_array, selectrow_arrayref, and
1001      selectall_arrayref introduced in DBI 1.29.
1002    Fixed FETCHing a handle attribute to not clear $DBI::err etc (broken in 1.29).
1003    Fixed core dump at trace level 9 or above.
1004    Fixed compilation with perl 5.6.1 + ithreads (i.e. Windows).
1005    Changed definition of behaviour of selectrow_array when called in a scalar
1006      context to match fetchrow_array.
1007    Corrected selectrow_arrayref docs which showed selectrow_array thanks to Paul DuBois.
1008  
1009  =head2 Changes in DBI 1.29,    15th July 2002
1010  
1011    NOTE: This release changes the specified behaviour for the
1012    : fetchrow_array method when called in a scalar context:
1013    : The DBI spec used to say that it would return the FIRST field.
1014    : Which field it returns (i.e., the first or the last) is now undefined.
1015    : This does not affect statements that only select one column, which is
1016    : usually the case when fetchrow_array is called in a scalar context.
1017    : FYI, this change was triggered by discovering that the fetchrow_array
1018    : implementation in Driver.xst (used by most compiled drivers) 
1019    : didn't match the DBI specification. Rather than change the code
1020    : to match, and risk breaking existing applications, I've changed the
1021    : specification (that part was always of dubious value anyway).
1022  
1023    NOTE: Future versions of the DBI may not support for perl 5.5 much longer.
1024    : If you are still using perl 5.005_03 you should be making plans to
1025    : upgrade to at least perl 5.6.1, or 5.8.0. Perl 5.8.0 is due to be
1026    : released in the next week or so.  (Although it's a "point 0" release,
1027    : it is the most throughly tested release ever.)
1028  
1029    Added XS/C implementations of selectrow_array, selectrow_arrayref, and
1030      selectall_arrayref to Driver.xst. See DBI 1.26 Changes for more info.
1031    Removed support for the old (fatally flawed) "5005" threading model.
1032    Added support for new perl 5.8 iThreads thanks to Gerald Richter.
1033      (Threading support and safety should still be regarded as beta
1034      quality until further notice. But it's much better than it was.)
1035    Updated the "Threads and Thread Safety" section of the docs.
1036    The trace output can be sent to STDOUT instead of STDERR by using
1037      "STDOUT" as the name of the file, i.e., $h->trace(..., "STDOUT")
1038    Added pointer to perlreftut, perldsc, perllol, and perlboot manuals
1039      into the intro section of the docs, suggested by Brian McCain.
1040    Fixed DBI::Const::GetInfo::* pod docs thanks to Zack Weinberg.
1041    Some changes to how $dbh method calls are treated by DBI::Profile:
1042      Meta-data methods now clear $dbh->{Statement} on entry.
1043      Some $dbh methods are now profiled as if $dbh->{Statement} was empty
1044      (because thet're unlikely to actually relate to its contents).
1045    Updated dbiport.h to ppport.h from perl 5.8.0.
1046    Tested with perl 5.5.3 (vanilla, Solaris), 5.6.1 (vanilla, Solaris), and
1047      perl 5.8.0 (RC3@17527 with iThreads & Multiplicity on Solaris and FreeBSD).
1048  
1049  =head2 Changes in DBI 1.28,    14th June 2002
1050  
1051    Added $sth->{ParamValues} to return a hash of the most recent
1052      values bound to placeholders via bind_param() or execute().
1053      Individual drivers need to be updated to support it.
1054    Enhanced ShowErrorStatement to include ParamValues if available:
1055      "DBD::foo::st execute failed: errstr [for statement ``...'' with params: 1='foo']"
1056    Further enhancements to DBD::PurePerl accuracy.
1057  
1058  =head2 Changes in DBI 1.27,    13th June 2002
1059  
1060    Fixed missing column in C implementation of fetchall_arrayref()
1061      thanks to Philip Molter for the prompt reporting of the problem.
1062  
1063  =head2 Changes in DBI 1.26,    13th June 2002
1064  
1065    Fixed t/40profile.t to work on Windows thanks to Smejkal Petr.
1066    Fixed $h->{Profile} to return undef, not error, if not set.
1067    Fixed DBI->available_drivers in scalar context thanks to Michael Schwern.
1068  
1069    Added C implementations of selectrow_arrayref() and fetchall_arrayref()
1070      in Driver.xst.  All compiled drivers using Driver.xst will now be
1071      faster making those calls. Most noticable with fetchall_arrayref for
1072      many rows or selectrow_arrayref with a fast query. For example, using
1073      DBD::mysql a selectrow_arrayref for a single row using a primary key
1074      is ~20% faster, and fetchall_arrayref for 20000 rows is twice as fast!
1075      Drivers just need to be recompiled and reinstalled to enable it.
1076      The fetchall_arrayref speed up only applies if $slice parameter is not used.
1077    Added $max_rows parameter to fetchall_arrayref() to optionally limit
1078      the number of rows returned. Can now fetch batches of rows.
1079    Added MaxRows attribute to selectall_arrayref()
1080      which then passes it to fetchall_arrayref().
1081    Changed selectrow_array to make use of selectrow_arrayref.
1082    Trace level 1 now shows first two parameters of all methods
1083      (used to only for that for some, like prepare,execute,do etc)
1084    Trace indicator for recursive calls (first char on trace lines)
1085      now starts at 1 not 2.
1086  
1087    Documented that $h->func() does not trigger RaiseError etc
1088      so applications must explicitly check for errors.
1089    DBI::Profile with DBI_PROFILE now shows percentage time inside DBI.
1090    HandleError docs updated to show that handler can edit error message.
1091    HandleError subroutine interface is now regarded as stable.
1092  
1093  =head2 Changes in DBI 1.25,    5th June 2002
1094  
1095    Fixed build problem on Windows and some compiler warnings.
1096    Fixed $dbh->{Driver} and $sth->{Statement} for driver internals
1097      These are 'inner' handles as per behaviour prior to DBI 1.16.
1098    Further minor improvements to DBI::PurePerl accuracy.
1099  
1100  =head2 Changes in DBI 1.24,    4th June 2002
1101  
1102    Fixed reference loop causing a handle/memory leak
1103      that was introduced in DBI 1.16.
1104    Fixed DBI::Format to work with 'filehandles' from IO::Scalar
1105      and similar modules thanks to report by Jeff Boes.
1106    Fixed $h->func for DBI::PurePerl thanks to Jeff Zucker.
1107    Fixed $dbh->{Name} for DBI::PurePerl thanks to Dean Arnold.
1108  
1109    Added DBI method call profiling and benchmarking.
1110      This is a major new addition to the DBI.
1111      See $h->{Profile} attribute and DBI::Profile module.
1112      For a quick trial, set the DBI_PROFILE environment variable and
1113      run your favourite DBI script. Try it with DBI_PROFILE set to 1,
1114      then try 2, 4, 8, 10, and -10. Have fun!
1115  
1116    Added execute_array() and bind_param_array() documentation
1117      with thanks to Dean Arnold.
1118    Added notes about the DBI having not yet been tested with iThreads
1119      (testing and patches for SvLOCK etc welcome).
1120    Removed undocumented Handlers attribute (replaced by HandleError).
1121    Tested with 5.5.3 and 5.8.0 RC1.
1122  
1123  =head2 Changes in DBI 1.23,    25th May 2002
1124  
1125    Greatly improved DBI::PurePerl in performance and accuracy.
1126    Added more detail to DBI::PurePerl docs about what's not supported.
1127    Fixed undef warnings from t/15array.t and DBD::Sponge.
1128  
1129  =head2 Changes in DBI 1.22,    22nd May 2002
1130  
1131    Added execute_array() and bind_param_array() with special thanks
1132      to Dean Arnold. Not yet documented. See t/15array.t for examples.
1133      All drivers now automatically support these methods.
1134    Added DBI::PurePerl, a transparent DBI emulation for pure-perl drivers
1135      with special thanks to Jeff Zucker. Perldoc DBI::PurePerl for details.
1136    Added DBI::Const::GetInfo* modules thanks to Steffen Goeldner.
1137    Added write_getinfo_pm utility to DBI::DBD thanks to Steffen Goeldner.
1138    Added $allow_active==2 mode for prepare_cached() thanks to Stephen Clouse.
1139  
1140    Updated DBI::Format to Revision 11.4 thanks to Tom Lowery.
1141    Use File::Spec in Makefile.PL (helps VMS etc) thanks to Craig Berry.
1142    Extend $h->{Warn} to commit/rollback ineffective warning thanks to Jeff Baker.
1143    Extended t/preparse.t and removed "use Devel::Peek" thanks to Scott Hildreth.
1144    Only copy Changes to blib/lib/Changes.pm once thanks to Jonathan Leffler.
1145    Updated internals for modern perls thanks to Jonathan Leffler and Jeff Urlwin.
1146    Tested with perl 5.7.3 (just using default perl config).
1147  
1148    Documentation changes:
1149  
1150    Added 'Catalog Methods' section to docs thanks to Steffen Goeldner.
1151    Updated README thanks to Michael Schwern.
1152    Clarified that driver may choose not to start new transaction until
1153      next use of $dbh after commit/rollback.
1154    Clarified docs for finish method.
1155    Clarified potentials problems with prepare_cached() thanks to Stephen Clouse.
1156  
1157  
1158  =head2 Changes in DBI 1.21,    7th February 2002
1159  
1160    The minimum supported perl version is now 5.005_03.
1161  
1162    Fixed DBD::Proxy support for AutoCommit thanks to Jochen Wiedmann.
1163    Fixed DBI::ProxyServer bind_param(_inout) handing thanks to Oleg Mechtcheriakov.
1164    Fixed DBI::ProxyServer fetch loop thanks to nobull@mail.com.
1165    Fixed install_driver do-the-right-thing with $@ on error. It, and connect(),
1166      will leave $@ empty on success and holding the error message on error.
1167      Thanks to Jay Lawrence, Gavin Sherlock and others for the bug report.
1168    Fixed fetchrow_hashref to assign columns to the hash left-to-right
1169      so later fields with the same name overwrite earlier ones
1170      as per DBI < 1.15, thanks to Kay Roepke.
1171  
1172    Changed tables() to use quote_indentifier() if the driver returns a
1173      true value for $dbh->get_info(29) # SQL_IDENTIFIER_QUOTE_CHAR
1174    Changed ping() so it no longer triggers RaiseError/PrintError.
1175    Changed connect() to not call $class->install_driver unless needed.
1176    Changed DESTROY to catch fatal exceptions and append to $@.
1177  
1178    Added ISO SQL/CLI & ODBCv3 data type definitions thanks to Steffen Goeldner.
1179    Removed the definition of SQL_BIGINT data type constant as the value is
1180      inconsistent between standards (ODBC=-5, SQL/CLI=25).
1181    Added $dbh->column_info(...) thanks to Steffen Goeldner.
1182    Added $dbh->foreign_key_info(...) thanks to Steffen Goeldner.
1183    Added $dbh->quote_identifier(...) insipred by Simon Oliver.
1184    Added $dbh->set_err(...) for DBD authors and DBI subclasses
1185      (actually been there for a while, now expanded and documented).
1186    Added $h->{HandleError} = sub { ... } addition and/or alternative
1187      to RaiseError/PrintError. See the docs for more info.
1188    Added $h->{TraceLevel} = N attribute to set/get trace level of handle
1189      thus can set trace level via an (eg externally specified) DSN
1190      using the embedded attribute syntax:
1191        $dsn = 'dbi:DB2(PrintError=1,TraceLevel=2):dbname';
1192      Plus, you can also now do: local($h->{TraceLevel}) = N;
1193      (but that leaks a little memory in some versions of perl).
1194    Added some call tree information to trace output if trace level >= 3
1195      With thanks to Graham Barr for the stack walking code.
1196    Added experimental undocumented $dbh->preparse(), see t/preparse.t
1197      With thanks to Scott T. Hildreth for much of the work.
1198    Added Fowler/Noll/Vo hash type as an option to DBI::hash().
1199  
1200    Documentation changes:
1201  
1202    Added DBI::Changes so now you can "perldoc DBI::Changes", yeah!
1203    Added selectrow_arrayref & selectrow_hashref docs thanks to Doug Wilson.
1204    Added 'Standards Reference Information' section to docs to gather
1205      together all references to relevant on-line standards.
1206    Added link to poop.sourceforge.net into the docs thanks to Dave Rolsky.
1207    Added link to hyperlinked BNF for SQL92 thanks to Jeff Zucker.
1208    Added 'Subclassing the DBI' docs thanks to Stephen Clouse, and
1209      then changed some of them to reflect the new approach to subclassing.
1210    Added stronger wording to description of $h->{private_*} attributes.
1211    Added docs for DBI::hash.
1212  
1213    Driver API changes:
1214  
1215    Now a COPY of the DBI->connect() attributes is passed to the driver
1216      connect() method, so it can process and delete any elements it wants.
1217      Deleting elements reduces/avoids the explicit
1218        $dbh->{$_} = $attr->{$_} foreach keys %$attr;
1219      that DBI->connect does after the driver connect() method returns.
1220  
1221  
1222  =head2 Changes in DBI 1.20,    24th August 2001
1223  
1224    WARNING: This release contains two changes that may affect your code.
1225    : Any code using selectall_hashref(), which was added in March 2001, WILL
1226    : need to be changed. Any code using fetchall_arrayref() with a non-empty
1227    : hash slice parameter may, in a few rare cases, need to be changed.
1228    : See the change list below for more information about the changes.
1229    : See the DBI documentation for a description of current behaviour.
1230  
1231    Fixed memory leak thanks to Toni Andjelkovic.
1232    Changed fetchall_arrayref({ foo=>1, ...}) specification again (sorry):
1233      The key names of the returned hashes is identical to the letter case of
1234      the names in the parameter hash, regardless of the L</FetchHashKeyName>
1235      attribute. The letter case is ignored for matching.
1236    Changed fetchall_arrayref([...]) array slice syntax specification to
1237      clarify that the numbers in the array slice are perl index numbers
1238      (which start at 0) and not column numbers (which start at 1).
1239    Added { Columns=>... } and { Slice =>... } attributes to selectall_arrayref()
1240      which is passed to fetchall_arrayref() so it can fetch hashes now.
1241    Added a { Columns => [...] } attribute to selectcol_arrayref() so that
1242      the list it returns can be built from more than one column per row.
1243      Why? Consider my %hash = @{$dbh->selectcol_arrayref($sql,{ Columns=>[1,2]})}
1244      to return id-value pairs which can be used directly to build a hash.
1245    Added $hash_ref = $sth->fetchall_hashref( $key_field )
1246      which returns a ref to a hash with, typically, one element per row.
1247      $key_field is the name of the field to get the key for each row from.
1248      The value of the hash for each row is a hash returned by fetchrow_hashref.
1249    Changed selectall_hashref to return a hash ref (from fetchall_hashref)
1250      and not an array of hashes as it has since DBI 1.15 (end March 2001).
1251      WARNING: THIS CHANGE WILL BREAK ANY CODE USING selectall_hashref()!
1252      Sorry, but I think this is an important regularization of the API.
1253      To get previous selectall_hashref() behaviour (an array of hash refs)
1254      change $ary_ref = $dbh->selectall_hashref( $statement, undef, @bind);
1255      to $ary_ref = $dbh->selectall_arrayref($statement, { Columns=>{} }, @bind);
1256    Added NAME_lc_hash, NAME_uc_hash, NAME_hash statement handle attributes.
1257      which return a ref to a hash of field_name => field_index (0..n-1) pairs.
1258    Fixed select_hash() example thanks to Doug Wilson.
1259    Removed (unbundled) DBD::ADO and DBD::Multiplex from the DBI distribution.
1260      The latest versions of those modules are available from CPAN sites.
1261    Added $dbh->begin_work. This method causes AutoCommit to be turned
1262      off just until the next commit() or rollback().
1263      Driver authors: if the DBIcf_BegunWork flag is set when your commit or
1264      rollback method is called then please turn AutoCommit on and clear the
1265      DBIcf_BegunWork flag. If you don't then the DBI will but it'll be much
1266      less efficient and won't handle error conditions very cleanly.
1267    Retested on perl 5.4.4, but the DBI won't support 5.4.x much longer.
1268    Added text to SUPPORT section of the docs:
1269      For direct DBI and DBD::Oracle support, enhancement, and related work
1270      I am available for consultancy on standard commercial terms.
1271    Added text to ACKNOWLEDGEMENTS section of the docs:
1272      Much of the DBI and DBD::Oracle was developed while I was Technical
1273      Director (CTO) of the Paul Ingram Group (www.ig.co.uk).  So I'd
1274      especially like to thank Paul for his generosity and vision in
1275      supporting this work for many years.
1276  
1277  =head2 Changes in DBI 1.19,    20th July 2001
1278  
1279    Made fetchall_arrayref({ foo=>1, ...}) be more strict to the specification
1280      in relation to wanting hash slice keys to be lowercase names.
1281      WARNING: If you've used fetchall_arrayref({...}) with a hash slice
1282      that contains keys with uppercase letters then your code will break.
1283      (As far as I recall the spec has always said don't do that.)
1284    Fixed $sth->execute() to update $dbh->{Statement} to $sth->{Statement}.
1285    Added row number to trace output for fetch method calls.
1286    Trace level 1 no longer shows fetches with row>1 (to reduce output volume).
1287    Added $h->{FetchHashKeyName} = 'NAME_lc' or 'NAME_uc' to alter
1288      behaviour of fetchrow_hashref() method. See docs.
1289    Added type_info quote caching to quote() method thanks to Dean Kopesky.
1290      Makes using quote() with second data type param much much faster.
1291    Added type_into_all() caching to type_info(), spotted by Dean Kopesky.
1292    Added new API definition for table_info() and tables(),
1293      driver authors please note!
1294    Added primary_key_info() to DBI API thanks to Steffen Goeldner.
1295    Added primary_key() to DBI API as simpler interface to primary_key_info().
1296    Indent and other fixes for DBI::DBD doc thanks to H.Merijn Brand.
1297    Added prepare_cached() insert_hash() example thanks to Doug Wilson.
1298    Removed false docs for fetchall_hashref(), use fetchall_arrayref({}).
1299  
1300  =head2 Changes in DBI 1.18,    4th June 2001
1301  
1302    Fixed that altering ShowErrorStatement also altered AutoCommit!
1303      Thanks to Jeff Boes for spotting that clanger.
1304    Fixed DBD::Proxy to handle commit() and rollback(). Long overdue, sorry.
1305    Fixed incompatibility with perl 5.004 (but no one's using that right? :)
1306    Fixed connect_cached and prepare_cached to not be affected by the order
1307      of elements in the attribute hash. Spotted by Mitch Helle-Morrissey.
1308    Fixed version number of DBI::Shell
1309      reported by Stuhlpfarrer Gerhard and others.
1310    Defined and documented table_info() attribute semantics (ODBC compatible)
1311      thanks to Olga Voronova, who also implemented then in DBD::Oracle.
1312    Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.
1313  
1314  =head2 Changes in DBI 1.16,    30th May 2001
1315  
1316    Reimplemented fetchrow_hashref in C, now fetches about 25% faster!
1317    Changed behaviour if both PrintError and RaiseError are enabled
1318      to simply do both (in that order, obviously :)
1319    Slight reduction in DBI handle creation overhead.
1320    Fixed $dbh->{Driver} & $sth->{Database} to return 'outer' handles.
1321    Fixed execute param count check to honour RaiseError spotted by Belinda Giardie.
1322    Fixed build for perl5.6.1 with PERLIO thanks to H.Merijn Brand.
1323    Fixed client sql restrictions in ProxyServer.pm thanks to Jochen Wiedmann.
1324    Fixed batch mode command parsing in Shell thanks to Christian Lemburg.
1325    Fixed typo in selectcol_arrayref docs thanks to Jonathan Leffler.
1326    Fixed selectrow_hashref to be available to callers thanks to T.J.Mather.
1327    Fixed core dump if statement handle didn't define Statement attribute.
1328    Added bind_param_inout docs to DBI::DBD thanks to Jonathan Leffler.
1329    Added note to data_sources() method docs that some drivers may
1330      require a connected database handle to be supplied as an attribute.
1331    Trace of install_driver method now shows path of driver file loaded.
1332    Changed many '||' to 'or' in the docs thanks to H.Merijn Brand.
1333    Updated DBD::ADO again (improvements in error handling) from Tom Lowery.
1334    Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.
1335    Updated email and web addresses in DBI::FAQ thanks to Michael A Chase.
1336  
1337  =head2 Changes in DBI 1.15,    28th March 2001
1338  
1339    Added selectrow_arrayref
1340    Added selectrow_hashref
1341    Added selectall_hashref thanks to Leon Brocard.
1342    Added DBI->connect(..., { dbi_connect_method => 'method' })
1343    Added $dbh->{Statement} aliased to most recent child $sth->{Statement}.
1344    Added $h->{ShowErrorStatement}=1 to cause the appending of the
1345      relevant Statement text to the RaiseError/PrintError text.
1346    Modified type_info to always return hash keys in uppercase and
1347      to not require uppercase 'DATA_TYPE' key from type_info_all.
1348      Thanks to Jennifer Tong and Rob Douglas.
1349    Added \%attr param to tables() and table_info() methods.
1350    Trace method uses warn() if it can't open the new file.
1351    Trace shows source line and filename during global destruction.
1352    Updated packages:
1353      Updated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.
1354      Updated DBD::ADO to much improved version 0.4 from Tom Lowery.
1355      Updated DBD::Sponge to include $sth->{PRECISION} thanks to Tom Lowery.
1356      Changed DBD::ExampleP to use lstat() instead of stat().
1357    Documentation:
1358      Documented $DBI::lasth (which has been there since day 1).
1359      Documented SQL_* names.
1360      Clarified and extended docs for $h->state thanks to Masaaki Hirose.
1361      Clarified fetchall_arrayref({}) docs (thanks to, er, someone!).
1362      Clarified type_info_all re lettercase and index values.
1363      Updated DBI::FAQ to 0.38 thanks to Alligator Descartes.
1364      Added cute bind_columns example thanks to H.Merijn Brand.
1365      Extended docs on \%attr arg to data_sources method.
1366    Makefile.PL
1367      Removed obscure potential 'rm -rf /' (thanks to Ulrich Pfeifer).
1368      Removed use of glob and find (thanks to Michael A. Chase).
1369    Proxy:
1370      Removed debug messages from DBD::Proxy AUTOLOAD thanks to Brian McCauley.
1371      Added fix for problem using table_info thanks to Tom Lowery.
1372      Added better determination of where to put the pid file, and...
1373      Added KNOWN ISSUES section to DBD::Proxy docs thanks to Jochen Wiedmann.
1374    Shell:
1375      Updated DBI::Format to include DBI::Format::String thanks to Tom Lowery.
1376      Added describe command thanks to Tom Lowery.
1377      Added columnseparator option thanks to Tom Lowery (I think).
1378      Added 'raw' format thanks to, er, someone, maybe Tom again.
1379    Known issues:
1380      Perl 5.005 and 5.006 both leak memory doing local($handle->{Foo}).
1381      Perl 5.004 doesn't. The leak is not a DBI or driver bug.
1382  
1383  =head2 Changes in DBI 1.14,    14th June 2000
1384  
1385    NOTE: This version is the one the DBI book is based on.
1386    NOTE: This version requires at least Perl 5.004.
1387    Perl 5.6 ithreads changes with thanks to Doug MacEachern.
1388    Changed trace output to use PerlIO thanks to Paul Moore.
1389    Fixed bug in RaiseError/PrintError handling.
1390      (% chars in the error string could cause a core dump.)
1391    Fixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt.
1392    Major documentation polishing thanks to Linda Mui at O'Reilly.
1393    Password parameter now shown as **** in trace output.
1394    Added two fields to type_info and type_info_all.
1395    Added $dsn to PrintError/RaiseError message from DBI->connect().
1396    Changed prepare_cached() croak to carp if sth still Active.
1397    Added prepare_cached() example to the docs.
1398    Added further DBD::ADO enhancements from Thomas Lowery.
1399  
1400  =head2 Changes in DBI 1.13,    11th July 1999
1401  
1402    Fixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt.
1403    Fixed problems with DBD::ExampleP long_list test mode.
1404    Added SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR and SQL_BIT
1405      to list of known and exportable SQL types.
1406    Improved data fetch performance of DBD::ADO.
1407    Added GetTypeInfo to DBD::ADO thanks to Thomas Lowery.
1408    Actually documented connect_cached thanks to Michael Schwern.
1409    Fixed user/key/cipher bug in ProxyServer thanks to Joshua Pincus.
1410  
1411  =head2 Changes in DBI 1.12,    29th June 1999
1412  
1413    Fixed significant DBD::ADO bug (fetch skipped first row).
1414    Fixed ProxyServer bug handling non-select statements.
1415    Fixed VMS problem with t/examp.t thanks to Craig Berry.
1416    Trace only shows calls to trace_msg and _set_fbav at high levels.
1417    Modified t/examp.t to workaround Cygwin buffering bug.
1418  
1419  =head2 Changes in DBI 1.11,    17th June 1999
1420  
1421    Fixed bind_columns argument checking to allow a single arg.
1422    Fixed problems with internal default_user method.
1423    Fixed broken DBD::ADO.
1424    Made default $DBI::rows more robust for some obscure cases.
1425  
1426  =head2 Changes in DBI 1.10,    14th June 1999
1427  
1428    Fixed trace_msg.al error when using Apache.
1429    Fixed dbd_st_finish enhancement in Driver.xst (internals).
1430    Enable drivers to define default username and password
1431      and temporarily disabled warning added in 1.09.
1432    Thread safety optimised for single thread case.
1433  
1434  =head2 Changes in DBI 1.09,    9th June 1999
1435  
1436    Added optional minimum trace level parameter to trace_msg().
1437    Added warning in Makefile.PL that DBI will require 5.004 soon.
1438    Added $dbh->selectcol_arrayref($statement) method.
1439    Fixed fetchall_arrayref hash-slice mode undef NAME problem.
1440    Fixed problem with tainted parameter checking and t/examp.t.
1441    Fixed problem with thread safety code, including 64 bit machines.
1442    Thread safety now enabled by default for threaded perls.
1443    Enhanced code for MULTIPLICITY/PERL_OBJECT from ActiveState.
1444    Enhanced prepare_cached() method.
1445    Minor changes to trace levels (less internal info at level 2).
1446    Trace log now shows "!! ERROR..." before the "<- method" line.
1447    DBI->connect() now warn's if user / password is undefined and
1448      DBI_USER / DBI_PASS environment variables are not defined.
1449    The t/proxy.t test now ignores any /etc/dbiproxy.conf file.
1450    Added portability fixes for MacOS from Chris Nandor.
1451    Updated mailing list address from fugue.com to isc.org.
1452  
1453  =head2 Changes in DBI 1.08,    12th May 1999
1454  
1455    Much improved DBD::ADO driver thanks to Phlip Plumlee and others.
1456    Connect now allows you to specify attribute settings within the DSN
1457      E.g., "dbi:Driver(RaiseError=>1,Taint=>1,AutoCommit=>0):dbname"
1458    The $h->{Taint} attribute now also enables taint checking of
1459      arguments to almost all DBI methods.
1460    Improved trace output in various ways.
1461    Fixed bug where $sth->{NAME_xx} was undef in some situations.
1462    Fixed code for MULTIPLICITY/PERL_OBJECT thanks to Alex Smishlajev.
1463    Fixed and documented DBI->connect_cached.
1464    Workaround for Cygwin32 build problem with help from Jong-Pork Park.
1465    bind_columns no longer needs undef or hash ref as first parameter.
1466  
1467  =head2 Changes in DBI 1.07,    6th May 1999
1468  
1469    Trace output now shows contents of array refs returned by DBI.
1470    Changed names of some result columns from type_info, type_info_all,
1471      tables and table_info to match ODBC 3.5 / ISO/IEC standards.
1472    Many fixes for DBD::Proxy and ProxyServer.
1473    Fixed error reporting in install_driver.
1474    Major enhancement to DBI::W32ODBC from Patrick Hollins.
1475    Added $h->{Taint} to taint fetched data if tainting (perl -T).
1476    Added code for MULTIPLICITY/PERL_OBJECT contributed by ActiveState.
1477    Added $sth->more_results (undocumented for now).
1478  
1479  =head2 Changes in DBI 1.06,    6th January 1999
1480  
1481    Fixed Win32 Makefile.PL problem in 1.04 and 1.05.
1482    Significant DBD::Proxy enhancements and fixes
1483      including support for bind_param_inout (Jochen and I)
1484    Added experimental DBI->connect_cached method.
1485    Added $sth->{NAME_uc} and $sth->{NAME_lc} attributes.
1486    Enhanced fetchrow_hashref to take an attribute name arg.
1487  
1488  =head2 Changes in DBI 1.05,    4th January 1999
1489  
1490    Improved DBD::ADO connect (thanks to Phlip Plumlee).
1491    Improved thread safety (thanks to Jochen Wiedmann).
1492    [Quick release prompted by truncation of copies on CPAN]
1493  
1494  =head2 Changes in DBI 1.04,    3rd January 1999
1495  
1496    Fixed error in Driver.xst. DBI build now tests Driver.xst.
1497    Removed unused variable compiler warnings in Driver.xst.
1498    DBI::DBD module now tested during DBI build.
1499    Further clarification in the DBI::DBD driver writers manual.
1500    Added optional name parameter to $sth->fetchrow_hashref.
1501  
1502  =head2 Changes in DBI 1.03,    1st January 1999
1503  
1504    Now builds with Perl>=5.005_54 (PERL_POLLUTE in DBIXS.h)
1505    DBI trace trims path from "at yourfile.pl line nnn".
1506    Trace level 1 now shows statement passed to prepare.
1507    Assorted improvements to the DBI manual.
1508    Assorted improvements to the DBI::DBD driver writers manual.
1509    Fixed $dbh->quote prototype to include optional $data_type.
1510    Fixed $dbh->prepare_cached problems.
1511    $dbh->selectrow_array behaves better in scalar context.
1512    Added a (very) experimental DBD::ADO driver for Win32 ADO.
1513    Added experimental thread support (perl Makefile.PL -thread).
1514    Updated the DBI::FAQ - thanks to Alligator Descartes.
1515    The following changes were implemented and/or packaged
1516      by Jochen Wiedmann - thanks Jochen:
1517    Added a Bundle for CPAN installation of DBI, the DBI proxy
1518      server and prerequisites (lib/Bundle/DBI.pm).
1519    DBI->available_drivers uses File::Spec, if available.
1520      This makes it work on MacOS. (DBI.pm)
1521    Modified type_info to work with read-only values returned
1522      by type_info_all. (DBI.pm)
1523    Added handling of magic values in $sth->execute,
1524      $sth->bind_param and other methods (Driver.xst)
1525    Added Perl's CORE directory to the linkers path on Win32,
1526      required by recent versions of ActiveState Perl.
1527    Fixed DBD::Sponge to work with empty result sets.
1528    Complete rewrite of DBI::ProxyServer and DBD::Proxy.
1529  
1530  =head2 Changes in DBI 1.02,    2nd September 1998
1531  
1532    Fixed DBI::Shell including @ARGV and /current.
1533    Added basic DBI::Shell test.
1534    Renamed DBI::Shell /display to /format.
1535  
1536  =head2 Changes in DBI 1.01,    2nd September 1998
1537  
1538    Many enhancements to Shell (with many contributions from
1539    Jochen Wiedmann, Tom Lowery and Adam Marks).
1540    Assorted fixes to DBD::Proxy and DBI::ProxyServer.
1541    Tidied up trace messages - trace(2) much cleaner now.
1542    Added $dbh->{RowCacheSize} and $sth->{RowsInCache}.
1543    Added experimental DBI::Format (mainly for DBI::Shell).
1544    Fixed fetchall_arrayref($slice_hash).
1545    DBI->connect now honours PrintError=1 if connect fails.
1546    Assorted clarifications to the docs.
1547  
1548  =head2 Changes in DBI 1.00,    14th August 1998
1549  
1550    The DBI is no longer 'alpha' software!
1551    Added $dbh->tables and $dbh->table_info.
1552    Documented \%attr arg to data_sources method.
1553    Added $sth->{TYPE}, $sth->{PRECISION} and $sth->{SCALE}.
1554    Added $sth->{Statement}.
1555    DBI::Shell now uses neat_list to print results
1556    It also escapes "'" chars and converts newlines to spaces.
1557  
1558  =head2 Changes in DBI 0.95,    10th August 1998
1559  
1560    WARNING: THIS IS AN EXPERIMENTAL RELEASE!
1561  
1562    Fixed 0.94 slip so it will build on pre-5.005 again.
1563    Added DBI_AUTOPROXY environment variable.
1564    Array ref returned from fetch/fetchrow_arrayref now readonly.
1565    Improved connect error reporting by DBD::Proxy.
1566    All trace/debug messages from DBI now go to trace file.
1567  
1568  =head2 Changes in DBI 0.94,    9th August 1998
1569  
1570    WARNING: THIS IS AN EXPERIMENTAL RELEASE!
1571  
1572    Added DBD::Shell and dbish interactive DBI shell. Try it!
1573    Any database attribs can be set via DBI->connect(,,, \%attr).
1574    Added _get_fbav and _set_fbav methods for Perl driver developers
1575      (see ExampleP driver for perl usage). Drivers which don't use
1576      one of these methods (either via XS or Perl) are not compliant.
1577    DBI trace now shows adds " at yourfile.pl line nnn"!
1578    PrintError and RaiseError now prepend driver and method name.
1579    The available_drivers method no longer returns NullP or Sponge.
1580    Added $dbh->{Name}.
1581    Added $dbh->quote($value, $data_type).
1582    Added more hints to install_driver failure message.
1583    Added DBD::Proxy and DBI::ProxyServer (from Jochen Wiedmann).
1584    Added $DBI::neat_maxlen to control truncation of trace output.
1585    Added $dbh->selectall_arrayref and $dbh->selectrow_array methods.
1586    Added $dbh->tables.
1587    Added $dbh->type_info and $dbh->type_info_all.
1588    Added $h->trace_msg($msg) to write to trace log.
1589    Added @bool = DBI::looks_like_number(@ary).
1590    Many assorted improvements to the DBI docs.
1591  
1592  =head2 Changes in DBI 0.93,    13th February 1998
1593  
1594    Fixed DBI::DBD::dbd_postamble bug causing 'Driver.xsi not found' errors.
1595    Changes to handling of 'magic' values in neatsvpv (used by trace).
1596    execute (in Driver.xst) stops binding after first bind error.
1597    This release requires drivers to be rebuilt.
1598  
1599  =head2 Changes in DBI 0.92,    3rd February 1998
1600  
1601    Fixed per-handle memory leak (with many thanks to Irving Reid).
1602    Added $dbh->prepare_cached() caching variant of $dbh->prepare.
1603    Added some attributes:
1604      $h->{Active}       is the handle 'Active' (vague concept) (boolean)
1605      $h->{Kids}         e.g. number of sth's associated with a dbh
1606      $h->{ActiveKids}   number of the above which are 'Active'
1607      $dbh->{CachedKids} ref to prepare_cached sth cache
1608    Added support for general-purpose 'private_' attributes.
1609    Added experimental support for subclassing the DBI: see t/subclass.t
1610    Added SQL_ALL_TYPES to exported :sql_types.
1611    Added dbd_dbi_dir() and dbd_dbi_arch_dir() to DBI::DBD module so that
1612    DBD Makefile.PLs can work with the DBI installed in non-standard locations.
1613    Fixed 'Undefined value' warning and &sv_no output from neatsvpv/trace.
1614    Fixed small 'once per interpreter' leak.
1615    Assorted minor documentation fixes.
1616  
1617  =head2 Changes in DBI 0.91,    10th December 1997
1618  
1619    NOTE: This fix may break some existing scripts:
1620    DBI->connect("dbi:...",$user,$pass) was not setting AutoCommit and PrintError!
1621    DBI->connect(..., { ... }) no longer sets AutoCommit or PrintError twice.
1622    DBI->connect(..., { RaiseError=>1 }) now croaks if connect fails.
1623    Fixed $fh parameter of $sth->dump_results;
1624    Added default statement DESTROY method which carps.
1625    Added default driver DESTROY method to silence AUTOLOAD/__DIE__/CGI::Carp
1626    Added more SQL_* types to %EXPORT_TAGS and @EXPORT_OK.
1627    Assorted documentation updates (mainly clarifications).
1628    Added workaround for perl's 'sticky lvalue' bug.
1629    Added better warning for bind_col(umns) where fields==0.
1630    Fixed to build okay with 5.004_54 with or without USE_THREADS.
1631    Note that the DBI has not been tested for thread safety yet.
1632  
1633  =head2 Changes in DBI 0.90,    6th September 1997
1634  
1635    Can once again be built with Perl 5.003.
1636    The DBI class can be subclassed more easily now.
1637    InactiveDestroy fixed for drivers using the *.xst template.
1638    Slightly faster handle creation.
1639    Changed prototype for dbd_*_*_attrib() to add extra param.
1640    Note: 0.90, 0.89 and possibly some other recent versions have
1641    a small memory leak. This will be fixed in the next release.
1642  
1643  =head2 Changes in DBI 0.89,    25th July 1997
1644  
1645    Minor fix to neatsvpv (mainly used for debug trace) to workaround
1646    bug in perl where SvPV removes IOK flag from an SV.
1647    Minor updates to the docs.
1648  
1649  =head2 Changes in DBI 0.88,    22nd July 1997
1650  
1651    Fixed build for perl5.003 and Win32 with Borland.
1652    Fixed documentation formatting.
1653    Fixed DBI_DSN ignored for old-style connect (with explicit driver).
1654    Fixed AutoCommit in DBD::ExampleP
1655    Fixed $h->trace.
1656    The DBI can now export SQL type values: use DBI ':sql_types';
1657    Modified Driver.xst and renamed DBDI.h to dbd_xsh.h
1658  
1659  =head2 Changes in DBI 0.87,    18th July 1997
1660  
1661    Fixed minor type clashes.
1662    Added more docs about placeholders and bind values.
1663  
1664  =head2 Changes in DBI 0.86,    16th July 1997
1665  
1666    Fixed failed connect causing 'unblessed ref' and other errors.
1667    Drivers must handle AutoCommit FETCH and STORE else DBI croaks.
1668    Added $h->{LongReadLen} and $h->{LongTruncOk} attributes for BLOBS.
1669    Added DBI_USER and DBI_PASS env vars. See connect docs for usage.
1670    Added DBI->trace() to set global trace level (like per-handle $h->trace).
1671    PERL_DBI_DEBUG env var renamed DBI_DEBUG (old name still works for now).
1672    Updated docs, including commit, rollback, AutoCommit and Transactions sections.
1673    Added bind_param method and execute(@bind_values) to docs.
1674    Fixed fetchall_arrayref.
1675  
1676    Since the DBIS structure has change the internal version numbers have also
1677    changed (DBIXS_VERSION == 9 and DBISTATE_VERSION == 9) so drivers will have
1678    to be recompiled. The test is also now more sensitive and the version
1679    mismatch error message now more clear about what to do. Old drivers are
1680    likely to core dump (this time) until recompiled for this DBI. In future
1681    DBI/DBD version mismatch will always produce a clear error message.
1682  
1683    Note that this DBI release contains and documents many new features
1684    that won't appear in drivers for some time. Driver writers might like
1685    to read perldoc DBI::DBD and comment on or apply the information given.
1686  
1687  =head2 Changes in DBI 0.85,    25th June 1997
1688  
1689    NOTE: New-style connect now defaults to AutoCommit mode unless
1690    { AutoCommit => 0 } specified in connect attributes. See the docs.
1691    AutoCommit attribute now defined and tracked by DBI core.
1692    Drivers should use/honour this and not implement their own.
1693    Added pod doc changes from Andreas and Jonathan.
1694    New DBI_DSN env var default for connect method. See docs.
1695    Documented the func method.
1696    Fixed "Usage: DBD::_::common::DESTROY" error.
1697    Fixed bug which set some attributes true when there value was fetched.
1698    Added new internal DBIc_set() macro for drivers to use.
1699  
1700  =head2 Changes in DBI 0.84,    20th June 1997
1701  
1702    Added $h->{PrintError} attribute which, if set true, causes all errors to
1703    trigger a warn().
1704    New-style DBI->connect call now automatically sets PrintError=1 unless
1705    { PrintError => 0 } specified in the connect attributes. See the docs.
1706    The old-style connect with a separate driver parameter is deprecated.
1707    Fixed fetchrow_hashref.
1708    Renamed $h->debug to $h->trace() and added a trace filename arg.
1709    Assorted other minor tidy-ups.
1710  
1711  =head2 Changes in DBI 0.83,    11th June 1997
1712  
1713    Added driver specification syntax to DBI->connect data_source
1714    parameter: DBI->connect('dbi:driver:...', $user, $passwd);
1715    The DBI->data_sources method should return data_source
1716    names with the appropriate 'dbi:driver:' prefix.
1717    DBI->connect will warn if \%attr is true but not a hash ref.
1718    Added the new fetchrow methods:
1719      @row_ary  = $sth->fetchrow_array;
1720      $ary_ref  = $sth->fetchrow_arrayref;
1721      $hash_ref = $sth->fetchrow_hashref;
1722    The old fetch and fetchrow methods still work.
1723    Driver implementors should implement the new names for
1724    fetchrow_array and fetchrow_arrayref ASAP (use the xs ALIAS:
1725    directive to define aliases for fetch and fetchrow).
1726    Fixed occasional problems with t/examp.t test.
1727    Added automatic errstr reporting to the debug trace output.
1728    Added the DBI FAQ from Alligator Descartes in module form for
1729    easy reading via "perldoc DBI::FAQ". Needs reformatting.
1730    Unknown driver specific attribute names no longer croak.
1731    Fixed problem with internal neatsvpv macro.
1732  
1733  =head2 Changes in DBI 0.82,    23rd May 1997
1734  
1735    Added $h->{RaiseError} attribute which, if set true, causes all errors to
1736    trigger a die(). This makes it much easier to implement robust applications
1737    in terms of higher level eval { ... } blocks and rollbacks.
1738    Added DBI->data_sources($driver) method for implementation by drivers.
1739    The quote method now returns the string NULL (without quotes) for undef.
1740    Added VMS support thanks to Dan Sugalski.
1741    Added a 'quick start guide' to the README.
1742    Added neatsvpv function pointer to DBIS structure to make it available for
1743    use by drivers. A macro defines neatsvpv(sv,len) as (DBIS->neatsvpv(sv,len)).
1744    Old XS macro SV_YES_NO changes to standard boolSV.
1745    Since the DBIS structure has change the internal version numbers have also
1746    changed (DBIXS_VERSION == 8 and DBISTATE_VERSION == 8) so drivers will have
1747    to be recompiled.
1748  
1749  =head2 Changes in DBI 0.81,    7th May 1997
1750  
1751    Minor fix to let DBI build using less modern perls.
1752    Fixed a suprious typo warning.
1753  
1754  =head2 Changes in DBI 0.80,    6th May 1997
1755  
1756    Builds with no changes on NT using perl5.003_99 (with thanks to Jeffrey Urlwin).
1757    Automatically supports Apache::DBI (with thanks to Edmund Mergl).
1758      DBI scripts no longer need to be modified to make use of Apache::DBI.
1759    Added a ping method and an experimental connect_test_perf method.
1760    Added a fetchhash and fetch_all methods.
1761    The func method no longer pre-clears err and errstr. 
1762    Added ChopBlanks attribute (currently defaults to off, that may change).
1763      Support for the attribute needs to be implemented by individual drivers.
1764    Reworked tests into standard t/*.t form.
1765    Added more pod text.  Fixed assorted bugs.
1766    
1767  
1768  =head2 Changes in DBI 0.79,    7th Apr 1997
1769  
1770    Minor release. Tidied up pod text and added some more descriptions
1771    (especially disconnect). Minor changes to DBI.xs to remove compiler
1772    warnings.
1773  
1774  =head2 Changes in DBI 0.78,    28th Mar 1997
1775  
1776    Greatly extended the pod documentation in DBI.pm, including the under
1777    used bind_columns method. Use 'perldoc DBI' to read after installing.
1778    Fixed $h->err. Fetching an attribute value no longer resets err.
1779    Added $h->{InactiveDestroy}, see documentation for details.
1780    Improved debugging of cached ('quick') attribute fetches.
1781    errstr will return err code value if there is no string value.
1782    Added DBI/W32ODBC to the distribution. This is a pure-perl experimental
1783    DBI emulation layer for Win32::ODBC. Note that it's unsupported, your
1784    mileage will vary, and bug reports without fixes will probably be ignored.
1785  
1786  =head2 Changes in DBI 0.77,    21st Feb 1997
1787  
1788    Removed erroneous $h->errstate and $h->errmsg methods from DBI.pm.
1789    Added $h->err, $h->errstr and $h->state default methods in DBI.xs.
1790    Updated informal DBI API notes in DBI.pm. Updated README slightly.
1791    DBIXS.h now correctly installed into INST_ARCHAUTODIR.
1792    (DBD authors will need to edit their Makefile.PL's to use
1793    -I$(INSTALLSITEARCH)/auto/DBI -I$(INSTALLSITEARCH)/DBI)
1794  
1795  
1796  =head2 Changes in DBI 0.76,    3rd Feb 1997
1797  
1798    Fixed a compiler type warnings (pedantic IRIX again).
1799  
1800  =head2 Changes in DBI 0.75,    27th Jan 1997
1801  
1802    Fix problem introduced by a change in Perl5.003_XX.
1803    Updated README and DBI.pm docs.
1804  
1805  =head2 Changes in DBI 0.74,    14th Jan 1997
1806  
1807    Dispatch now sets dbi_debug to the level of the current handle
1808    (this makes tracing/debugging individual handles much easier).
1809    The '>> DISPATCH' log line now only logged at debug >= 3 (was 2).
1810    The $csr->NUM_OF_FIELDS attribute can be set if not >0 already.
1811    You can log to a file using the env var PERL_DBI_DEBUG=/tmp/dbi.log.
1812    Added a type cast needed by IRIX.
1813    No longer sets perl_destruct_level unless debug set >= 4.
1814    Make compatible with PerlIO and sfio.
1815  
1816  =head2 Changes in DBI 0.73,    10th Oct 1996
1817  
1818    Fixed some compiler type warnings (IRIX).
1819    Fixed DBI->internal->{DebugLog} = $filename.
1820    Made debug log file unbuffered.
1821    Added experimental bind_param_inout method to interface.
1822    Usage: $dbh->bind_param_inout($param, \$value, $maxlen [, \%attribs ])
1823    (only currently used by DBD::Oracle at this time.)
1824  
1825  =head2 Changes in DBI 0.72,    23 Sep 1996
1826  
1827    Using an undefined value as a handle now gives a better
1828    error message (mainly useful for emulators like Oraperl).
1829    $dbh->do($sql, @params) now works for binding placeholders.
1830  
1831  =head2 Changes in DBI 0.71,    10 July 1996
1832  
1833    Removed spurious abort() from invalid handle check.
1834    Added quote method to DBI interface and added test.
1835  
1836  =head2 Changes in DBI 0.70,    16 June 1996
1837  
1838    Added extra invalid handle check (dbih_getcom)
1839    Fixed broken $dbh->quote method.
1840    Added check for old GCC in Makefile.PL
1841  
1842  =head2 Changes in DBI 0.69
1843  
1844    Fixed small memory leak.
1845    Clarified the behaviour of DBI->connect.
1846    $dbh->do now returns '0E0' instead of 'OK'.
1847    Fixed "Can't read $DBI::errstr, lost last handle" problem.
1848  
1849  
1850  =head2 Changes in DBI 0.68,    2 Mar 1996
1851  
1852    Changes to suit perl5.002 and site_lib directories.
1853    Detects old versions ahead of new in @INC.
1854  
1855  
1856  =head2 Changes in DBI 0.67,    15 Feb 1996
1857  
1858    Trivial change to test suite to fix a problem shown up by the
1859    Perl5.002gamma release Test::Harness.
1860  
1861  
1862  =head2 Changes in DBI 0.66,    29 Jan 1996
1863  
1864    Minor changes to bring the DBI into line with 5.002 mechanisms,
1865    specifically the xs/pm VERSION checking mechanism.
1866    No functionality changes. One no-last-handle bug fix (rare problem).
1867    Requires 5.002 (beta2 or later).
1868  
1869  
1870  =head2 Changes in DBI 0.65,    23 Oct 1995
1871  
1872    Added $DBI::state to hold SQL CLI / ODBC SQLSTATE value.
1873    SQLSTATE "00000" (success) is returned as "" (false), all else is true.
1874    If a driver does not explicitly initialise it (via $h->{State} or
1875    DBIc_STATE(imp_xxh) then $DBI::state will automatically return "" if
1876    $DBI::err is false otherwise "S1000" (general error).
1877    As always, this is a new feature and liable to change.
1878  
1879    The is *no longer* a default error handler!
1880    You can add your own using push(@{$h->{Handlers}}, sub { ... })
1881    but be aware that this interface may change (or go away).
1882  
1883    The DBI now automatically clears $DBI::err, errstr and state before
1884    calling most DBI methods. Previously error conditions would persist.
1885    Added DBIh_CLEAR_ERROR(imp_xxh) macro.
1886  
1887    DBI now EXPORT_OK's some utility functions, neat($value),
1888    neat_list(@values) and dump_results($sth).
1889  
1890    Slightly enhanced t/min.t minimal test script in an effort to help
1891    narrow down the few stray core dumps that some porters still report.
1892  
1893    Renamed readblob to blob_read (old name still works but warns).
1894    Added default blob_copy_to_file method.
1895  
1896    Added $sth = $dbh->tables method. This returns an $sth for a query
1897    which has these columns: TABLE_CATALOGUE, TABLE_OWNER, TABLE_NAME,
1898    TABLE_TYPE, REMARKS in that order. The TABLE_CATALOGUE column
1899    should be ignored for now.
1900  
1901  
1902  =head2 Changes in DBI 0.64,    23 Oct 1995
1903  
1904    Fixed 'disconnect invalidates 1 associated cursor(s)' problem.
1905    Drivers using DBIc_ACTIVE_on/off() macros should not need any changes
1906    other than to test for DBIc_ACTIVE_KIDS() instead of DBIc_KIDS().
1907    Fixed possible core dump in dbih_clearcom during global destruction.
1908  
1909  
1910  =head2 Changes in DBI 0.63,    1 Sep 1995
1911  
1912    Minor update. Fixed uninitialised memory bug in method
1913    attribute handling and streamlined processing and debugging.
1914    Revised usage definitions for bind_* methods and readblob.
1915  
1916  
1917  =head2 Changes in DBI 0.62,    26 Aug 1995
1918  
1919    Added method redirection method $h->func(..., $method_name).
1920    This is now the official way to call private driver methods
1921    that are not part of the DBI standard.  E.g.:
1922        @ary = $sth->func('ora_types');
1923    It can also be used to call existing methods. Has very low cost.
1924  
1925    $sth->bind_col columns now start from 1 (not 0) to match SQL.
1926    $sth->bind_columns now takes a leading attribute parameter (or undef),
1927    e.g., $sth->bind_columns($attribs, \$col1 [, \$col2 , ...]);
1928  
1929    Added handy DBD_ATTRIBS_CHECK macro to vet attribs in XS.
1930    Added handy DBD_ATTRIB_GET_SVP, DBD_ATTRIB_GET_BOOL and
1931    DBD_ATTRIB_GET_IV macros for handling attributes.
1932  
1933    Fixed STORE for NUM_OF_FIELDS and NUM_OF_PARAMS.
1934    Added FETCH for NUM_OF_FIELDS and NUM_OF_PARAMS.
1935  
1936    Dispatch no longer bothers to call _untie().
1937    Faster startup via install_method/_add_dispatch changes.
1938  
1939  
1940  =head2 Changes in DBI 0.61,    22 Aug 1995
1941  
1942    Added $sth->bind_col($column, \$var [, \%attribs ]);
1943  
1944    This method enables perl variable to be directly and automatically
1945    updated when a row is fetched. It requires no driver support
1946    (if the driver has been written to use DBIS->get_fbav).
1947    Currently \%attribs is unused.
1948  
1949    Added $sth->bind_columns(\$var [, \$var , ...]);
1950  
1951    This method is a short-cut for bind_col which binds all the
1952    columns of a query in one go (with no attributes). It also
1953    requires no driver support.
1954  
1955    Added $sth->bind_param($parameter, $var [, \%attribs ]);
1956  
1957    This method enables attributes to be specified when values are
1958    bound to placeholders. It also enables binding to occur away
1959    from the execute method to improve execute efficiency.
1960    The DBI does not provide a default implementation of this.
1961    See the DBD::Oracle module for a detailed example.
1962  
1963    The DBI now provides default implementations of both fetch and
1964    fetchrow.  Each is written in terms of the other. A driver is
1965    expected to implement at least one of them.
1966  
1967    More macro and assorted structure changes in DBDXS.h. Sorry!
1968    The old dbihcom definitions have gone. All fields have macros.
1969    The imp_xxh_t type is now used within the DBI as well as drivers.
1970    Drivers must set DBIc_NUM_FIELDS(imp_sth) and DBIc_NUM_PARAMS(imp_sth).
1971  
1972    test.pl includes a trivial test of bind_param and bind_columns.
1973  
1974  
1975  =head2 Changes in DBI 0.60,    17 Aug 1995
1976  
1977    This release has significant code changes but much less
1978    dramatic than the previous release. The new implementors data
1979    handling mechanism has matured significantly (don't be put off
1980    by all the struct typedefs in DBIXS.h, there's just to make it
1981    easier for drivers while keeping things type-safe).
1982  
1983    The DBI now includes two new methods:
1984  
1985    do        $dbh->do($statement)
1986  
1987    This method prepares, executes and finishes a statement. It is
1988    designed to be used for executing one-off non-select statements
1989    where there is no benefit in reusing a prepared statement handle.
1990  
1991    fetch        $array_ref = $sth->fetch;
1992  
1993    This method is the new 'lowest-level' row fetching method. The
1994    previous @row = $sth->fetchrow method now defaults to calling
1995    the fetch method and expanding the returned array reference.
1996  
1997    The DBI now provides fallback attribute FETCH and STORE functions
1998    which drivers should call if they don't recognise an attribute.
1999  
2000    THIS RELEASE IS A GOOD STARTING POINT FOR DRIVER DEVELOPERS!
2001    Study DBIXS.h from the DBI and Oracle.xs etc from DBD::Oracle.
2002    There will be further changes in the interface but nothing
2003    as dramatic as these last two releases! (I hope :-)
2004  
2005  
2006  =head2 Changes in DBI 0.59    15 Aug 1995
2007  
2008    NOTE: THIS IS AN UNSTABLE RELEASE!
2009  
2010    Major reworking of internal data management!
2011    Performance improvements and memory leaks fixed.
2012    Added a new NullP (empty) driver and a -m flag
2013    to test.pl to help check for memory leaks.
2014    Study DBD::Oracle version 0.21 for more details.
2015    (Comparing parts of v0.21 with v0.20 may be useful.)
2016  
2017  
2018  =head2 Changes in DBI 0.58    21 June 1995
2019  
2020    Added DBI->internal->{DebugLog} = $filename;
2021    Reworked internal logging.
2022    Added $VERSION.
2023    Made disconnect_all a compulsary method for drivers.
2024  
2025  
2026  =head1 ANCIENT HISTORY
2027  
2028  12th Oct 1994: First public release of the DBI module.
2029                 (for Perl 5.000-beta-3h)
2030  
2031  19th Sep 1994: DBperl project renamed to DBI.
2032  
2033  29th Sep 1992: DBperl project started.
2034  
2035  =cut


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1