[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |