{
    "mode": "perldoc",
    "parameter": "DBI::Changes",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/DBI%3A%3AChanges/json",
    "generated": "2026-06-14T08:05:54Z",
    "sections": {
        "NAME": {
            "content": "DBI::Changes - List of significant changes to the DBI\n",
            "subsections": [
                {
                    "name": "Changes in DBI 1.643 - ...",
                    "content": "Fix memory corruption in XS functions when Perl stack is reallocated\nthanks to Pali\nFix calling dbddbdo6 API function\nthanks to Pali\nFix potentially calling newSV(0) in mallocusingsv()\nthanks to Pali\nFix order of XS preparse() psaccept and psreturn argument names\nthanks to Petr Písař\nFix a potential NULL profile dereference in dbiprofile()\nthanks to Petr Písař\nFix a buffer overflow on an overlong DBD class name\nthanks to Petr Písař\n\nRemove remnants of support for perl <= v5.8.0\nthanks to Pali and H.Merijn Brand\nUpdate Devel::PPPort and remove redundant compatibility macros\nthanks to Pali and H.Merijn Brand\n\nCorrect minor typo in documentation\nthanks to Mohammad Anwar\nCorrect documentation introducing $dbh->selectallarray()\nthanks to Pali\nIntroduce select and do wrappers earlier in the documentation\nthanks to Dan Book\nMark as deprecated old API functions which overflow or are affected by\nUnicode issues, thanks to Pali\n\nAdd new attribute RaiseWarn, similar to RaiseError,\nthanks to Pali\n"
                },
                {
                    "name": "Changes in DBI 1.642 - 28th October 2018",
                    "content": "Fix '.' in @INC for proxy test under parallel load\nthanks to H.Merijn Brand.\nFix driver-related croak() in DBI->connect to report the original DSN\nthanks to maxatome #67\n\nIntroduce a new statement DBI method $sth->lastinsertid()\nthanks to pali #64\nAllow to call $dbh->lastinsertid() method without arguments\nthanks to pali #64\nAdded a new XS API function variant dbddbdo6()\nthanks to Pali #61\n\nFix misprints in doc of selectallhashref\nthanks to Perlover #69\nRemove outdated links to DBI related training resources. RT#125999\n"
                },
                {
                    "name": "Changes in DBI 1.641 - 19th March 2018",
                    "content": "Remove dependency on Storable 2.16 introduced in DBI 1.639\nthanks to Ribasushi #60\nAvoid compiler warnings in Driver.xst #59\nthanks to pali #59\n"
                },
                {
                    "name": "Changes in DBI 1.640 - 28th January 2018",
                    "content": "Fix test t/91storewarning.t for perl 5.10.0\nthanks to pali #57\n\nAdd Perl 5.10.0 and 5.8.1 specific versions to Travis testing\nthanks to pali #57\nAdd registration of mariadb prefix for new DBD::MariaDB driver\nthanks to pali #56\n"
                },
                {
                    "name": "Changes in DBI 1.639 - 28th December 2017",
                    "content": "Fix UTF-8 support for warn/croak calls within DBI internals,\nthanks to pali #53\nFix dependency on Storable for perl older than 5.8.9,\nthanks to H.Merijn Brand.\n\nAdd DBD::Mem driver, a pure-perl in-memory driver using DBI::DBD::SqlEngine,\nthanks to Jens Rehsack #42\n\nCorrected missing semicolon in example in documentation,\nthanks to pali #55\n"
                },
                {
                    "name": "Changes in DBI 1.637 - 16th August 2017",
                    "content": "Fix use of externally controlled format string (CWE-134) thanks to pali #44\nThis could cause a crash if, for example, a db error contained a %.\nhttps://cwe.mitre.org/data/definitions/134.html\nFix extension detection for DBD::File related drivers\nFix tests for perl without dot in @INC RT#120443\nFix loss of error message on parent handle, thanks to charsbar #34\nFix disappearing $ inside callbacks, thanks to robschaber #47\nFix dependency on Storable for perl older than 5.8.9\n\nAllow objects to be used as passwords without throwing an error, thanks to demerphq #40\nAllow $sth NAME* attributes to be set from Perl code, re #45\nAdded support for DBD::XMLSimple thanks to nigelhorne #38\n\nDocumentation updates:\nImprove examples using eval to be more correct, thanks to pali #39\nAdd cautionary note to preparecached docs re refs in %attr #46\nSmall POD changes (Getting Help -> Online) thanks to openstrike #33\nAdds links to more module names and fix typo, thanks to oalders #43\nTypo fix thanks to bor #37\n"
                },
                {
                    "name": "Changes in DBI 1.636 - 24th April 2016",
                    "content": "Fix compilation for threaded perl <= 5.12 broken in 1.635 RT#113955\nRevert change to DBI::PurePerl DESTROY in 1.635\nChange t/16destroy.t to avoid race hazard RT#113951\nOutput perl version and archname in t/01basics.t\nAdd perl 5.22 and 5.22-extras to travis-ci config\n"
                },
                {
                    "name": "Changes in DBI 1.635 - 24th April 2016",
                    "content": "Fixed RaiseError/PrintError for UTF-8 errors/warnings. RT#102404\nFixed cases where ShowErrorStatement might show incorrect Statement RT#97434\nFixed DBD::Gofer for UTF-8-enabled STDIN/STDOUT\nthanks to mauke PR#32\nFixed fetchallarrayref({}) behavior with no columns\nthanks to Dan McGee PR#31\nFixed tied CachedKids ref leak in attribute cache by weakening\nthanks to Michael Conrad RT#113852\nFixed \"panic: attempt to copy freed scalar\" upon commit() or rollback()\nthanks to fbriere for detailed bug report RT#102791\nCeased to ignore DESTROY of outer handle in DBI::PurePerl\nTreat undef in DBI::Profile Path as string \"undef\"\nthanks to fREW Schmidt RT#113298\nFix SQL::Nano parser to ignore trailing semicolon\nthanks to H.Merijn Brand.\n\nAdded @ary = $dbh->selectallarray(...) method\nthanks to Ed Avis RT#106411\nAdded appveyor support (Travis like CI for windows)\nthanks to mbeijen PR#30\n\nCorrected spelling errors in pod\nthanks to Gregor Herrmann RT#107838\nCorrected and/or removed broken links to SQL standards\nthanks to David Pottage RT#111437\nCorrected doc example to use dbi: instead of DBI: in DSN\nthanks to Michael R. Davis RT#101181\nRemoved/updated broken links in docs\nthanks to mbeijen PR#29\nClarified docs for DBI::hash($string)\nRemoved the ancient DBI::FAQ module RT#102714\nFixed t/pod.t to require Test::Pod >= 1.41 RT#101769\n\nThis release was developed at the Perl QA Hackathon 2016 <http://act.qa-hackathon.org/qa2016/>\nwhich was made possible by the generosity of many sponsors:\n\n<https://www.fastmail.com> FastMail, <https://www.ziprecruiter.com> ZipRecruiter,\n<http://www.activestate.com> ActiveState, <http://www.opusvl.com> OpusVL,\n<https://www.strato.com> Strato, <http://www.surevoip.co.uk> SureVoIP,\n<http://www.cv-library.co.uk> CV-Library, <https://www.iinteractive.com/> Infinity,\n<https://opensource.careers/perl-careers/> Perl Careers, <https://www.mongodb.com> MongoDB,\n<https://www.thinkproject.com> thinkproject!, <https://www.dreamhost.com/> Dreamhost,\n<http://www.perl6.org/> Perl 6, <http://www.perl-services.de/> Perl Services,\n<https://www.evozon.com/> Evozon, <http://www.booking.com> Booking, <http://eligo.co.uk> Eligo,\n<http://www.oetiker.ch/> Oetiker+Partner, <http://capside.com/en/> CAPSiDE,\n<https://www.procura.nl/> Procura, <https://constructor.io/> Constructor.io,\n<https://metacpan.org/author/BABF> Robbie Bow, <https://metacpan.org/author/RSAVAGE> Ron Savage,\n<https://metacpan.org/author/ITCHARLIE> Charlie Gonzalez, <https://twitter.com/jscook2345>\nJustin Cook.\n"
                },
                {
                    "name": "Changes in DBI 1.634 - 3rd August 2015",
                    "content": "Enabled strictures on all modules (Jose Luis Perez Diez) #22\nNote that this might cause new exceptions in existing code.\nPlease take time for extra testing before deploying to production.\nImproved handling of row counts for compiled drivers and enable them to\nreturn larger row counts (IV type) by defining new *iv macros.\nFixed quoteidentifier that was adding a trailing separator when there\nwas only a catalog (Martin J. Evans)\n\nRemoved redundant keys() call in fetchallarrayref with hash slice (ilmari) #24\nCorrected pod xref to Placeholders section (Matthew D. Fuller)\nCorrected pod grammar (Nick Tonkin) #25\n\nAdded support for tables('', '', '', '%') special case (Martin J. Evans)\nAdded support for DBD prefixes with numbers (Jens Rehsack) #19\nAdded extra initializer for DBI::DBD::SqlEngine based DBD's (Jens Rehsack)\nAdded Memory Leaks section to the DBI docs (Tim)\nAdded Artistic v1 & GPL v1 LICENSE file (Jose Luis Perez Diez) #21\n"
                },
                {
                    "name": "Changes in DBI 1.633 - 11th Jan 2015",
                    "content": "Fixed selectrow*ref to return undef on error in list context\ninstead if an empty list.\nChanged t/42profdata.t more informative\nChanged $sth->{TYPE} to be NUMERIC in DBD::File drivers as per the\nDBI docs. Note TYPENAME is now also available. [H.Merijn Brand]\nFixed compilation error on bleadperl due DEFSV no longer being an lvalue\n[Dagfinn Ilmari Mannsåker]\n\nAdded docs for escaping placeholders using a backslash.\nAdded docs for getinfo(9000) indicating ability to escape placeholders.\nAdded multi prefix for DBD::Multi (Dan Wright) and ad2 prefix for\nDBD::AnyData2\n"
                },
                {
                    "name": "Changes in DBI 1.632 - 9th Nov 2014",
                    "content": "Fixed risk of memory corruption with many arguments to methods\noriginally reported by OSCHWALD for Callbacks but may apply\nto other functionality in DBI method dispatch RT#86744.\nFixed DBD::PurePerl to not set $sth->{Active} true by default\ndrivers are expected to set it true as needed.\nFixed DBI::DBD::SqlEngine to complain loudly when prerequite\ndriverprefix is not fulfilled (RT#93204) [Jens Rehsack]\nFixed redundant sprintf argument warning RT#97062 [Reini Urban]\nFixed security issue where DBD::File drivers would open files\nfrom folders other than specifically passed using the\nfdir attribute RT#99508 [H.Merijn Brand]\n\nChanged delete $h->{$key} to work for keys with 'private' prefix\nper request in RT#83156. local $h->{$key} works as before.\n\nAdded security notice to DBD::Proxy and DBI::ProxyServer because they\nuse Storable which is insecure. Thanks to ppisar@redhat.com RT#90475\nAdded note to AutoInactiveDestroy docs strongly recommending that it\nis enabled in all new code.\n"
                },
                {
                    "name": "Changes in DBI 1.631 - 20th Jan 2014",
                    "content": "NOTE: This release changes the handle passed to Callbacks from being an 'inner' handle to being\nan 'outer' handle. If you have code that makes use of Callbacks, ensure that you understand what\nthis change means and review your callback code.\n\nFixed errhash handling of integer err RT#92172 [Dagfinn Ilmari]\nFixed use of \\Q vs \\E in t/70callbacks.t\n\nChanged the handle passed to Callbacks from being an 'inner'\nhandle to being an 'outer' handle.\n\nImproved reliability of concurrent testing\nPR#8 [Peter Rabbitson]\nChanged optional dependencies to \"suggest\"\nPR#9 [Karen Etheridge]\nChanged to avoid mgget in neatsvpv during global destruction\nPR#10 [Matt Phillips]\n"
                },
                {
                    "name": "Changes in DBI 1.630 - 28th Oct 2013",
                    "content": "NOTE: This release enables PrintWarn by default regardless of $^W. Your applications may\ngenerate more log messages than before.\n\nFixed err for new drh to be undef not to 0 [Martin J. Evans]\nFixed RT#83132 - moved DBIstcf* constants to util\nexport tag [Martin J. Evans]\nPrintWarn is now triggered by warnings recorded in methods like STORE\nthat don't clear err RT#89015 [Tim Bunce]\n\nChanged tracing to no longer show quote and quoteidentifier calls\nat trace level 1.\nChanged DBD::Gofer ping while disconnected seterr from warn to info.\nClarified wording of log message when err is cleared.\nChanged bootstrap to use $XSVERSION RT#89618 [Andreas Koenig]\n\nAdded connectcached.connected Callback PR#3 [David E. Wheeler]\n\nClarified effect of refs in connectcached attributes [David E. Wheeler]\nExtended ReadOnly attribute docs for when the driver cannot\nensure read only [Martin J. Evans]\nCorrected SQLBIGINT docs to say ODBC value is used PR#5 [ilmari]\n\nThere was no DBI 1.629 release.\n"
                },
                {
                    "name": "Changes in DBI 1.628 - 22nd July 2013",
                    "content": "Fixed missing fields on partial insert via DBI::DBD::SqlEngine\nengines (DBD::CSV, DBD::DBM etc.) [H.Merijn Brand, Jens Rehsack]\nFixed stack corruption on callbacks RT#85562 RT#84974 [Aaron Schweiger]\nFixed DBI::SQL::Nano::Statement handling of \"0\" [Jens Rehsack]\nFixed exit op precedence in test RT#87029 [Reni Urban]\n\nAdded support for finding tables in multiple directories\nvia new DBD::File fdirsearch attribute [H.Merijn Brand]\nEnable compiling by C++ RT#84285 [Kurt Jaeger]\n\nTypo fixes in pod and comment [David Steinbrunner]\nChange DBI's docs to refer to git not svn [H.Merijn Brand]\nClarify bindcol TYPE attribute is sticky [Martin J. Evans]\nFixed reference to $sth in selectallarrayref docs RT#84873\nSpelling fixes [Ville Skyttä]\nChanged $VERSIONs to hardcoded strings [H.Merijn Brand]\n"
                },
                {
                    "name": "Changes in DBI 1.627 - 16th May 2013",
                    "content": "Fixed VERSION regression in DBI::SQL::Nano [Tim Bunce]\n"
                },
                {
                    "name": "Changes in DBI 1.626 - 15th May 2013",
                    "content": "Fixed pod text/link was reversed in a few cases RT#85168\n[H.Merijn Brand]\n\nHandle aliasing of STORE'd attributes in DBI::DBD::SqlEngine\n[Jens Rehsack]\n\nUpdated repository URI to git [Jens Rehsack]\n\nFixed skip() count arg in t/48dbidbdsqlengine.t [Tim Bunce]\n\nChanges in DBI 1.625 (svn r15595) 28th March 2013\nFixed heap-use-after-free during global destruction RT#75614\nthanks to Reini Urban.\nFixed ignoring RootClass attribute during connect() by\nDBI::DBD::SqlEngine reported in RT#84260 by Michael Schout\n\nChanges in DBI 1.624 (svn r15576) 22nd March 2013\nFixed Gofer for hash randomization in perl 5.17.10+ RT#84146\n\nClarify docs for can() re RT#83207\n\nChanges in DBI 1.623 (svn r15547) 2nd Jan 2013\nFixed RT#64330 - ping wipes out errstr (Martin J. Evans).\nFixed RT#75868 - DBD::Proxy shouldn't call connected() on the server.\nFixed RT#80474 - segfault in DESTROY with threads.\nFixed RT#81516 - Test failures due to hash randomisation in perl 5.17.6\nthanks to Jens Rehsack and H.Merijn Brand and feedback on IRC\nFixed RT#81724 - Handle copy-on-write scalars (sprout)\nFixed unused variable / self-assignment compiler warnings.\nFixed default tableinfo in DBI::DBD::SqlEngine which passed NAMES\nattribute instead of NAME to DBD::Sponge RT72343 (Martin J. Evans)\n\nCorrected a spelling error thanks to Chris Sanders.\nCorrected typo in DBI->installedversions docs RT#78825\nthanks to Jan Dubois.\n\nRefactored table meta information management from DBD::File into\nDBI::DBD::SqlEngine (H.Merijn Brand, Jens Rehsack)\nPrevent undefined fdir being used in opendir (H.Merijn Brand)\n\nAdded logic to force destruction of children before parents\nduring global destruction. See RT#75614.\nAdded DBD::File Plugin-Support for table names and data sources\n(Jens Rehsack, #dbi Team)\nAdded new tests to 08keeperr for RT#64330\nthanks to Kenichi Ishigaki.\nAdded extra internal handle type check, RT#79952\nthanks to Reini Urban.\nAdded cubrid registered prefix for DBD::cubrid, RT#78453\n\nRemoved internal notimpl method (Martin J. Evans).\n\nNOTE: The \"old-style\" DBD::DBM attributes 'dbmext' and 'dbmlockfile'\nhave been deprecated for several years and their use will now generate\na warning.\n\nChanges in DBI 1.622 (svn r15327) 6th June 2012\nFixed lack of =encoding in non-ASCII pod docs. RT#77588\n\nCorrected typo in DBI::ProfileDumper thanks to Finn Hakansson.\n\nChanges in DBI 1.621 (svn r15315) 21st May 2012\nFixed segmentation fault when a thread is created from\nwithin another thread RT#77137, thanks to Dave Mitchell.\nUpdated previous Changes to credit Booking.com for sponsoring\nDave Mitchell's recent DBI optimization work.\n\nChanges in DBI 1.620 (svn r15300) 25th April 2012\nModified column renaming in fetchallarrayref, added in 1.619,\nto work on column index numbers not names (an incompatible change).\nReworked the fetchallarrayref documentation.\nHash slices in fetchallarrayref now detect invalid column names.\n\nChanges in DBI 1.619 (svn r15294) 23rd April 2012\nFixed the connected method to stop showing the password in\ntrace file (Martin J. Evans).\nFixed installmethod to set CvFILE correctly\nthanks to sprout RT#76296\nFixed SqlEngine \"listtables\" thanks to David McMath\nand Norbert Gruener. RT#67223 RT#69260\n\nOptimized DBI method dispatch thanks to Dave Mitchell.\nOptimized driver access to DBI internal state thanks to Dave Mitchell.\nOptimized driver access to handle data thanks to Dave Mitchell.\nDave's work on these optimizations was sponsored by Booking.com.\nOptimized fetchallarrayref with hash slice thanks\nto Dagfinn Ilmari Mannsåker. RT#76520\nAllow renaming columns in fetchallarrayref hash slices\nthanks to Dagfinn Ilmari Mannsåker. RT#76572\nReserved snmp and tree for DBD::SNMP and DBD::TreeData\n\nChanges in DBI 1.618 (svn r15170) 25rd February 2012\nFixed compiler warnings in Driverxst.h (Martin J. Evans)\nFixed compiler warning in DBI.xs (H.Merijn Brand)\nFixed Gofer tests failing on Windows RT74975 (Manoj Kumar)\nFixed myctx compile errors on Windows (Dave Mitchell)\n\nSignificantly optimized method dispatch via cache (Dave Mitchell)\nSignificantly optimized DBI internals for threads (Dave Mitchell)\nDave's work on these optimizations was sponsored by Booking.com.\nXsub to xsub calling optimization now enabled for threaded perls.\nCorrected typo in example in docs (David Precious)\nAdded note that calling clone() without an arg may warn in future.\nMinor changes to the installmethod() docs in DBI::DBD.\nUpdated dbipport.h from Devel::PPPort 3.20\n\nChanges in DBI 1.617 (svn r15107) 30th January 2012\nNOTE: The officially supported minimum perl version will change\nfrom perl 5.8.1 (2003) to perl 5.8.3 (2004) in a future release.\n(The last change, from perl 5.6 to 5.8.1, was announced\nin July 2008 and implemented in DBI 1.611 in April 2010.)\n\nFixed ParamTypes example in the pod (Martin J. Evans)\nFixed the definition of ArrayTupleStatus and remove confusion over\nrows affected in list context of executearray (Martin J. Evans)\nFixed sqltypecast example and typo in errors (Martin J. Evans)\nFixed Gofer error handling for keeperr methods like ping (Tim Bunce)\nFixed $dbh->clone({}) RT73250 (Tim Bunce)\nFixed isnestedcall logic error RT73118 (Reini Urban)\n\nEnhanced performance for threaded perls (Dave Mitchell, Tim Bunce)\nDave's work on this optimization was sponsored by Booking.com.\nEnhanced and standardized driver trace level mechanism (Tim Bunce)\nRemoved old code that was an inneffective attempt to detect\npeople doing DBI->{Attrib}.\nClear ParamValues on bindparam param count error RT66127 (Tim Bunce)\nChanged DBI::ProxyServer to require DBI at compile-time RT62672 (Tim Bunce)\n\nAdded pod for defaultuser to DBI::DBD (Martin J. Evans)\nAdded CON, ENC and DBD trace flags and extended 09trace.t (Martin J. Evans)\nAdded TXN trace flags and applied CON and TXN to relevant methods (Tim Bunce)\nAdded some more fetchallarrayref(..., $maxrows) tests (Tim Bunce)\nClarified docs for fetchallarrayref called on an inactive handle.\nClarified docs for clone method (Tim Bunce)\nAdded note to DBI::Profile about async queries (Marcel Grünauer).\nReserved spatialite as a driver prefix for DBD::Spatialite\nReserved mo as a driver prefix for DBD::MO\nUpdated link to the SQL Reunion 95 docs, RT69577 (Ash Daminato)\nChanged links for DBI recipes. RT73286 (Martin J. Evans)\n\nChanges in DBI 1.616 (svn r14616) 30th December 2010\nFixed spurious dbiprofile lines written to the log when\nprofiling is enabled and a trace flag, like SQL, is used.\nFixed to recognize SQL::Statement errors even if instantiated\nwith RaiseError=0 (Jens Rehsack)\nFixed RT#61513 by catching attribute assignment to tied table access\ninterface (Jens Rehsack)\nFixing some misbehavior of DBD::File when running within the Gofer\nserver.\nFixed compiler warnings RT#62640\n\nOptimized connect() to remove redundant FETCH of \\%attrib values.\nImproved initialization phases in DBI::DBD::SqlEngine (Jens Rehsack)\n\nAdded DBD::Gofer::Transport::corostream. An experimental proof-of-concept\ntransport that enables asynchronous database calls with few code changes.\nIt enables asynchronous use of DBI frameworks like DBIx::Class.\n\nAdded additional notes on DBDs which avoid creating a statement in\nthe do() method and the effects on error handlers (Martin J. Evans)\nAdding new attribute \"sqldialect\" to DBI::DBD::SqlEngine to allow\nusers control used SQL dialect (ANSI, CSV or AnyData), defaults to\nCSV (Jens Rehsack)\nAdd documentation for DBI::DBD::SqlEngine attributes (Jens Rehsack)\nDocumented dbdstexecute return (Martin J. Evans)\nFixed typo in InactiveDestroy thanks to Emmanuel Rodriguez.\n\nChanges in DBI 1.615 (svn r14438) 21st September 2010\nFixed t/51dbmfile for file/directory names with whitespaces in them\nRT#61445 (Jens Rehsack)\nFixed compiler warnings from ignored hvstore result (Martin J. Evans)\nFixed portability to VMS (Craig A. Berry)\n\nChanges in DBI 1.614 (svn r14408) 17th September 2010\nFixed bindparam () in DBI::DBD::SqlEngine (rt#61281)\nFixed internals to not refer to old perl symbols that\nwill no longer be visible in perl >5.13.3 (Andreas Koenig)\nMany compiled drivers are likely to need updating.\nFixed issue in DBD::File when absolute filename is used as table name\n(Jens Rehsack)\nCroak manually when file after tie doesn't exists in DBD::DBM\nwhen it have to exists (Jens Rehsack)\nFixed issue in DBD::File when users set individual file name for tables\nvia fmeta compatibility interface - reported by H.Merijn Brand while\nworking on RT#61168 (Jens Rehsack)\n\nChanged 50dbmsimple to simplify and fix problems (Martin J. Evans)\nChanged 50dbmsimple to skip aggregation tests when not using\nSQL::Statement (Jens Rehsack)\nMinor speed improvements in DBD::File (Jens Rehsack)\n\nAdded $h->{AutoInactiveDestroy} as simpler safer form of\n$h->{InactiveDestroy} (David E. Wheeler)\nAdded ability for parallel testing \"prove -j4 ...\" (Jens Rehsack)\nAdded tests for delete in DBM (H.Merijn Brand)\nAdded test for absolute filename as table to 51dbmfile (Jens Rehsack)\nAdded two initialization phases to DBI::DBD::SqlEngine (Jens Rehsack)\nAdded improved developers documentation for DBI::DBD::SqlEngine\n(Jens Rehsack)\nAdded guides how to write DBI drivers using DBI::DBD::SqlEngine\nor DBD::File (Jens Rehsack)\nAdded registercompatmap() and tablemetaattrchanged() to\nDBD::File::Table to support clean fix of RT#61168 (Jens Rehsack)\n\nChanges in DBI 1.613 (svn r14271) 22nd July 2010\nFixed Win32 prerequisite module from PathTools to File::Spec.\n\nChanged attribute headings and fixed references in DBI pod (Martin J. Evans)\nCorrected typos in DBI::FAQ and DBI::ProxyServer (Ansgar Burchardt)\n\nChanges in DBI 1.612 (svn r14254) 16th July 2010\nNOTE: This is a minor release for the DBI core but a major release for DBD::File and drivers\nthat depend on it, like DBD::DBM and DBD::CSV.\n\nThis is also the first release where the bulk of the development work has been done by other\npeople. I'd like to thank (in no particular order) Jens Rehsack, Martin J. Evans, and H.Merijn\nBrand for all their contributions.\n\nFixed DBD::File's {ChopBlank} handling (it stripped \\s instead of space\nonly as documented in DBI) (H.Merijn Brand)\nFixed DBD::DBM breakage with SQL::Statement (Jens Rehsack, fixes RT#56561)\nFixed DBD::File file handle leak (Jens Rehsack)\nFixed problems in 50dbm.t when running tests with multiple\ndbms (Martin J. Evans)\nFixed DBD::DBM bugs found during tests (Jens Rehsack)\nFixed DBD::File doesn't find files without extensions under some\ncircumstances (Jens Rehsack, H.Merijn Brand, fixes RT#59038)\n\nChanged Makefile.PL to modernize with CONFLICTS, recommended dependencies\nand resources (Jens Rehsack)\nChanged DBI::ProfileDumper to rename any existing profile file by\nappending .prev, instead of overwriting it.\nChanged DBI::ProfileDumper::Apache to work in more configurations\nincluding vhosts using PerlOptions +Parent.\nAdd driverprefix method to DBI (Jens Rehsack)\n\nAdded more tests to 50dbmsimple.t to prove optimizations in\nDBI::SQL::Nano and SQL::Statement (Jens Rehsack)\nUpdated tests to cover optional installed SQL::Statement (Jens Rehsack)\nSynchronize API between SQL::Statement and DBI::SQL::Nano (Jens Rehsack)\nMerged some optimizations from SQL::Statement into DBI::SQL::Nano\n(Jens Rehsack)\nAdded basic test for DBD::File (H.Merijn Brand, Jens Rehsack)\nExtract dealing with Perl SQL engines from DBD::File into\nDBI::DBD::SqlEngine for better subclassing of 3rd party non-db DBDs\n(Jens Rehsack)\n\nUpdated and clarified documentation for finish method (Tim Bunce).\nChanges to DBD::File for better English and hopefully better\nexplanation (Martin J. Evans)\nUpdate documentation of DBD::DBM to cover current implementation,\ntried to explain some things better and changes most examples to\npreferred style of Merijn and myself (Jens Rehsack)\nAdded developer documentation (including a roadmap of future plans)\nfor DBD::File\n\nChanges in DBI 1.611 (svn r13935) 29th April 2010\nNOTE: minimum perl version is now 5.8.1 (as announced in DBI 1.607)\n\nFixed selectcolarrayref MaxRows attribute to count rows not values\nthanks to Vernon Lyon.\nFixed DBI->trace(0, *STDERR); (H.Merijn Brand)\nwhich tried to open a file named \"*main::STDERR\" in perl-5.10.x\nFixes in DBD::DBM for use under threads (Jens Rehsack)\n\nChanged \"Issuing rollback() due to DESTROY without explicit disconnect\"\nwarning to not be issued if ReadOnly set for that dbh.\n\nAdded flock and fencoding support to DBD::File (H.Merijn Brand)\nAdded ChildCallbacks => { ... } to Callbacks as a way to\nspecify Callbacks for child handles.\nWith tests added by David E. Wheeler.\nAdded DBI::sqltypecast($value, $type, $flags) to cast a string value\nto an SQL type. e.g. SQLINTEGER effectively does $value += 0;\nHas other options plus an internal interface for drivers.\n\nDocumentation changes:\nSmall fixes in the documentation of DBD::DBM (H.Merijn Brand)\nDocumented specification of type casting behaviour for bindcol()\nbased on DBI::sqltypecast() and two new bindcol attributes\nStrictlyTyped and DiscardString. Thanks to Martin Evans.\nDocument fetchrowhashref() behaviour for functions,\naliases and duplicate names (H.Merijn Brand)\nUpdated DBI::Profile and DBD::File docs to fix pod nits\nthanks to Frank Wiegand.\nCorrected typos in Gopher documentation reported by Jan Krynicky.\nDocumented the Callbacks attribute thanks to David E. Wheeler.\nCorrected the Timeout examples as per rt 50621 (Martin J. Evans).\nRemoved some internal broken links in the pod (Martin J. Evans)\nAdded Note to columninfo for drivers which do not\nsupport it (Martin J. Evans)\nUpdated dbipport.h to Devel::PPPort 3.19 (H.Merijn Brand)\n\nChanges in DBI 1.609 (svn r12816) 8th June 2009\nFixes to DBD::File (H.Merijn Brand)\nadded fschema attribute\ntable names case sensitive when quoted, insensitive when unquoted\nworkaround a bug in SQL::Statement (temporary fix) related\nto the \"You passed x parameters where y required\" error\n\nAdded ImplementorClass and Name info to the \"Issuing rollback() due to\nDESTROY without explicit disconnect\" warning to identify the handle.\nApplies to compiled drivers when they are recompiled.\nAdded DBI->visithandles($coderef) method.\nAdded $h->visitchildhandles($coderef) method.\nAdded docs for columninfo()'s COLUMNDEF value.\nClarified docs on stickyness of data type via bindparam().\nClarified docs on stickyness of data type via bindcol().\n\nChanges in DBI 1.608 (svn r12742) 5th May 2009\nFixes to DBD::File (H.Merijn Brand)\nbindparam () now honors the attribute argument\nadded fext attribute\nFile::Spec is always required. (CORE since 5.00405)\nFail and set errstr on parameter count mismatch in execute ()\nFixed two small memory leaks when running in modperl\none in DBI->connect and one in DBI::Gofer::Execute.\nBoth due to \"local $ENV{...};\" leaking memory.\nFixed DBDATTRIBDELETE macro for driver authors\nand updated DBI::DBD docs thanks to Martin J. Evans.\nFixed 64bit issues in trace messages thanks to Charles Jardine.\nFixed FETCHmany() method to work with drivers that incorrectly return\nan empty list from $h->FETCH. Affected gofer.\n\nAdded 'sqlite' as registered prefix for DBD::SQLite.\nCorrected many typos in DBI docs thanks to Martin J. Evans.\nImproved DBI::DBD docs thanks to H.Merijn Brand.\n\nChanges in DBI 1.607 (svn r11571) 22nd July 2008\nNOTE: Perl 5.8.1 is now the minimum supported version.\nIf you need support for earlier versions send me a patch.\n\nFixed missing import of carp in DBI::Gofer::Execute.\n\nAdded note to docs about effect of execute(@emptyarray).\nClarified docs for ReadOnly thanks to Martin Evans.\n\nChanges in DBI 1.605 (svn r11434) 16th June 2008\nFixed broken DBIS macro with threads on big-endian machines\nwith 64bit ints but 32bit pointers. Ticket #32309.\nFixed the selectallarrayref, selectrowarrayref, and selectrowarray\nmethods that get embedded into compiled drivers to use the\ninner sth handle when passed a $sth instead of an sql string.\nDrivers will need to be recompiled to pick up this change.\nFixed leak in neat() for some kinds of values thanks to Rudolf Lippan.\nFixed DBI::PurePerl neat() to behave more like XS neat().\n\nIncreased default $DBI::neatmaxlen from 400 to 1000.\nIncreased timeout on tests to accommodate very slow systems.\nChanged behaviour of trace levels 1..4 to show less information\nat lower levels.\nChanged the format of the key used for $h->{CachedKids}\n(which is undocumented so you shouldn't depend on it anyway)\nChanged gofer error handling to avoid duplicate error text in errstr.\nClarified docs re \":N\" style placeholders.\nImproved gofer retry-on-error logic and refactored to aid subclassing.\nImproved gofer trace output in assorted ways.\n\nRemoved the beeps \"\\a\" from Makefile.PL warnings.\nRemoved check for PlRPC-modules from Makefile.PL\n\nAdded sorting of ParamValues reported by ShowErrorStatement\nthanks to to Rudolf Lippan.\nAdded cache miss trace message to DBD::Gofer transport class.\nAdded $drh->dbixsrevision method.\nAdded explicit LICENSE specification (perl) to META.yaml\n\nChanges in DBI 1.604 (svn rev 10994) 24th March 2008\nFixed fetchallarrayref with $maxrows argument broken in 1.603,\nthanks to Greg Sabino Mullane.\nFixed a few harmless compiler warnings on cygwin.\n"
                },
                {
                    "name": "Changes in DBI 1.603",
                    "content": "Fixed pure-perl fetchallarrayref with $maxrows argument\nto not error when fetching after all rows already fetched.\n(Was fixed for compiled drivers back in DBI 1.31.)\nThanks to Mark Overmeer.\nFixed C sprintf formats and casts, fixing compiler warnings.\n\nChanged dbiprofile() to accept a hash of profiles and apply to all.\nChanged gofer stream transport to improve error reporting.\nChanged gofer test timeout to avoid spurious failures on slow systems.\n\nAdded options to t/85gofer.t so it's more useful for manual testing.\n\nChanges in DBI 1.602 (svn rev 10706)  8th February 2008\nFixed potential coredump if stack reallocated while calling back\ninto perl from XS code. Thanks to John Gardiner Myers.\nFixed DBI::Util::CacheMemory->new to not clear the cache.\nFixed avg in DBI::Profile astext() thanks to Abe Ingersoll.\nFixed DBD::DBM bug in pushnames thanks to J M Davitt.\nFixed takeimpdata for some platforms thanks to Jeffrey Klein.\nFixed docs tie'ing CacheKids (ie LRU cache) thanks to Peter John Edwards.\n\nExpanded DBI::DBD docs for driver authors thanks to Martin Evans.\nEnhanced t/80proxy.t test script.\nEnhanced t/85gofer.t test script thanks to Stig.\nEnhanced t/10examp.t test script thanks to David Cantrell.\nDocumented $DBI::stderr as the default value of err for internal errors.\n\nGofer changes:\ntrackrecent now also keeps track of N most recent errors.\nThe connect method is now also counted in stats.\n\nChanges in DBI 1.601 (svn rev 10103),  21st October 2007\nFixed t/05thrclone.t to work with Test::More >= 0.71\nthanks to Jerry D. Hedden and Michael G Schwern.\nFixed DBI for VMS thanks to Peter (Stig) Edwards.\n\nAdded client-side caching to DBD::Gofer. Can use any cache with\nget($k)/set($k,$v) methods, including all the Cache and Cache::Cache\ndistribution modules plus Cache::Memcached, Cache::FastMmap etc.\nWorks for all transports. Overridable per handle.\n\nAdded DBI::Util::CacheMemory for use with DBD::Gofer caching.\nIt's a very fast and small strict subset of Cache::Memory.\n\nChanges in DBI 1.59 (svn rev 9874),  23rd August 2007\nFixed DBI::ProfileData to unescape headers lines read from data file.\nFixed DBI::ProfileData to not clobber $, thanks to Alexey Tourbin.\nFixed DBI::SQL::Nano to not clobber $, thanks to Alexey Tourbin.\nFixed DBI::PurePerl to return undef for ChildHandles if weaken not available.\nFixed DBD::Proxy disconnect error thanks to Philip Dye.\nFixed DBD::Gofer::Transport::Base bug (typo) in timeout code.\nFixed DBD::Proxy rows method thanks to Philip Dye.\nFixed dbiprof compile errors, thanks to Alexey Tourbin.\nFixed t/03handle.t to skip some tests if ChildHandles not available.\n\nAdded checkresponsesub to DBI::Gofer::Execute\n\nChanges in DBI 1.58 (svn rev 9678),  25th June 2007\nFixed code triggering fatal error in bleadperl, thanks to Steve Hay.\nFixed compiler warning thanks to Jerry D. Hedden.\nFixed t/40profile.t to use int(dbitime()) for systems like Cygwin where\ntime() seems to be rounded not truncated from the high resolution time.\nRemoved dumpresults() test from t/80proxy.t.\n\nChanges in DBI 1.57 (svn rev 9639),  13th June 2007\nNote: this release includes a change to the DBI::hash() function which will\nnow produce different values than before *if* your perl was built with 64-bit\n'int' type (i.e. \"perl -V:intsize\" says intsize='8').  It's relatively rare\nfor perl to be configured that way, even on 64-bit systems.\n\nFixed XS versions of select**() methods to call execute()\nfetch() etc., with inner handle instead of outer.\nFixed executeforfetch() to not cache errstr values\nthanks to Bart Degryse.\nFixed unused var compiler warning thanks to JDHEDDEN.\nFixed t/86goferfail tests to be less likely to fail falsely.\n\nChanged DBI::hash to return 'I32' type instead of 'int' so results are\nportable/consistent regardless of size of the int type.\nCorrected timeout example in docs thanks to Egmont Koblinger.\nChanged t/01basic.t to warn instead of failing when it detects\na problem with Math::BigInt (some recent versions had problems).\n\nAdded support for !Time and !Time~N to DBI::Profile Path. See docs.\nAdded extra trace info to connectcached thanks to Walery Studennikov.\nAdded non-random (deterministic) mode to DBIGOFERRANDOM mechanism.\nAdded DBIXSREVISION macro that drivers can use.\nAdded more docs for privateattributeinfo() method.\n\nDBI::Profile changes:\ndbiprofile() now returns ref to relevant leaf node.\nDon't profile DESTROY during global destruction.\nAdded asnodepathlist() and astext() methods.\nDBI::ProfileDumper changes:\nDon't write file if there's no profile data.\nUses full natural precision when saving data (was using %.6f)\nOptimized flushtodisk().\nLocks the data file while writing.\nEnabled filename to be a code ref for dynamic names.\nDBI::ProfileDumper::Apache changes:\nAdded Quiet=>1 to avoid write to STDERR in flushtodisk().\nAdded Dir=>... to specify a writable destination directory.\nEnabled DBIPROFILEAPACHELOGDIR for modperl 1 as well as 2.\nAdded parent pid to default data file name.\nDBI::ProfileData changes:\nAdded DeleteFiles option to rename & delete files once read.\nLocks the data files while reading.\nAdded ability to sort by Path elements.\ndbiprof changes:\nAdded --dumpnodes and --delete options.\nAdded/updated docs for both DBI::ProfileDumper && ::Apache.\n\nChanges in DBI 1.56 (svn rev 9660),  18th June 2007\nFixed printf arg warnings thanks to JDHEDDEN.\nFixed returning driver-private sth attributes via gofer.\n\nChanged pod docs docs to use =head3 instead of =item\nso now in html you get links to individual methods etc.\nChanged default gofer retrylimit from 2 to 0.\nChanged tests to workaround Math::BigInt broken versions.\nChanged dbiprofilemerge() to dbiprofilemergenodes()\nold name still works as an alias for the new one.\nRemoved old DBI internal sanity check that's no longer valid\ncausing \"panic: DESTROY (dbihclearcom)\" when tracing enabled\n\nAdded DBIGOFERRANDOM env var that can be use to trigger random\nfailures and delays when executing gofer requests. Designed to help\ntest automatic retry on failures and timeout handling.\nAdded lots more docs to all the DBD::Gofer and DBI::Gofer classes.\n\nChanges in DBI 1.55 (svn rev 9504),  4th May 2007\nFixed seterr() so HandleSetErr hook is executed reliably, if set.\nFixed accuracy of profiling when perl configured to use long doubles.\nFixed 42profdata.t on fast systems with poor timers thanks to Malcolm Nooning.\nFixed potential corruption in selectallarrayref and selectrowarrayref\nfor compiled drivers, thanks to Rob Davies.\nRebuild your compiled drivers after installing DBI.\n\nChanged some handle creation code from perl to C code,\nto reduce handle creation cost by ~20%.\nChanged internal implementation of the CachedKids attribute\nso it's a normal handle attribute (and initially undef).\nChanged connectcached and preparecached to avoid a FETCH method call,\nand thereby reduced cost by ~5% and ~30% respectively.\nChanged setfbav to not croak when given a wrongly sized array,\nit now warns and adjusts the row buffer to match.\nChanged some internals to improve performance with threaded perls.\nChanged DBD::NullP to be slightly more useful for testing.\nChanged File::Spec prerequisite to not require a minimum version.\nChanged tests to work with other DBMs thanks to ZMAN.\nChanged ex/perldbinullstest.pl to be more descriptive.\n\nAdded more functionality to the (undocumented) Callback mechanism.\nCallbacks can now elect to provide a value to be returned, in which case\nthe method won't be called. A callback for \"*\" is applied to all methods\nthat don't have their own callback.\nAdded $h->{ReadOnly} attribute.\nAdded support for DBI Profile Path to contain refs to scalars\nwhich will be de-ref'd for each profile sample.\nAdded dbilogstrip utility to edit DBI logs for diff'ing (gets installed)\nAdded details for SQLite 3.3 to NULL handling docs thanks to Alex Teslik.\nAdded takeimpdata() to DBI::PurePerl.\n\nGofer related changes:\nFixed gofer pipeone & stream transports to avoid risk of hanging.\nImproved error handling and tracing significantly.\nAdded way to generate random 1-in-N failures for methods.\nAdded automatic retry-on-error mechanism to gofer transport base class.\nAdded tests to show automatic retry mechanism works a treat!\nAdded goretryhook callback hook so apps can fine-tune retry behaviour.\nAdded header to request and response packets for sanity checking\nand to enable version skew between client and server.\nAdded forcedsingleresultset, maxcachedsthperdbh and maxcacheddbhperdrh\nto gofer executor config.\nDriver-private methods installed with installmethod are now proxied.\nNo longer does a round-trip to the server for methods it knows\nhave not been overridden by the remote driver.\nMost significant aspects of gofer behaviour are controlled by policy mechanism.\nAdded policy-controlled caching of results for some methods, such as schema metadata.\nThe connectcached and preparecached methods cache on client and server.\nThe bindparamarray and executearray methods are now supported.\nWorked around a DBD::Sybase bindparam bug (which is fixed in DBD::Sybase 1.07)\nAdded goferperf.pl utility (doesn't get installed).\nMany other assorted Gofer related bug fixes, enhancements and docs.\nThe http and modperl transports have been remove to their own distribution.\nClient and server will need upgrading together for this release.\n\nChanges in DBI 1.54 (svn rev 9157),  23rd February 2007\nNOTE: This release includes the 'next big thing': DBD::Gofer.\nTake a look!\n\nWARNING: This version has some subtle changes in DBI internals.\nIt's possible, though doubtful, that some may affect your code.\nI recommend some extra testing before using this release.\nOr perhaps I'm just being over cautious...\n\nFixed typeinfo when called for multiple dbh thanks to Cosimo Streppone.\nFixed compile warnings in bleadperl on freebsd-6.1-release\nand solaris 10g thanks to Philip M. Gollucci.\nFixed to compile for perl built with -DNOMATHOMS thanks to Jerry D. Hedden.\nFixed to work for bleadperl (r29544) thanks to Nicholas Clark.\nUsers of Perl >= 5.9.5 will require DBI >= 1.54.\nFixed rare error when profiling access to $DBI::err etc tied variables.\nFixed DBI::ProfileDumper to not be affected by changes to $/ and $,\nthanks to Michael Schwern.\n\nChanged t/40profile.t to skip tests for perl < 5.8.0.\nChanged setting trace file to no longer write \"Trace file set\" to new file.\nChanged 'handle cleared whilst still active' warning for dbh\nto only be given for dbh that have active sth or are not AutoCommit.\nChanged takeimpdata to call finish on all Active child sth.\nChanged DBI::PurePerl trace() method to be more consistent.\nChanged seterr method to effectively not append to errstr if the new errstr\nis the same as the current one.\nChanged handle factory methods, like connect, prepare, and tableinfo,\nto copy any error/warn/info state of the handle being returned\nup into the handle the method was called on.\nChanged row buffer handling to not alter NUMOFFIELDS if it's\ninconsistent with number of elements in row buffer array.\nUpdated DBI::DBD docs re handling multiple result sets.\nUpdated DBI::DBD docs for driver authors thanks to Ammon Riley\nand Dean Arnold.\nUpdated columninfo docs to note that if a table doesn't exist\nyou get an sth for an empty result set and not an error.\n\nAdded new DBD::Gofer 'stateless proxy' driver and framework,\nand the DBI test suite is now also executed via DBD::Gofer,\nand DBD::Gofer+DBI::PurePerl, in addition to DBI::PurePerl.\nAdded ability for trace() to support filehandle argument,\nincluding tracing into a string, thanks to Dean Arnold.\nAdded ability for drivers to implement func() method\nso proxy drivers can proxy the func method itself.\nAdded SQLBIGINT type code (resolved to the ODBC/JDBC value (-5))\nAdded $h->privateattributeinfo method.\n\nChanges in DBI 1.53 (svn rev 7995),   31st October 2006\nFixed checks for weaken to work with early 5.8.x versions\nFixed DBD::Proxy handling of some methods, including commit and rollback.\nFixed t/40profile.t to be more insensitive to long double precision.\nFixed t/40profile.t to be insensitive to small negative shifts in time\nthanks to Jamie McCarthy.\nFixed t/40profile.t to skip tests for perl < 5.8.0.\nFixed to work with current 'bleadperl' (~5.9.5) thanks to Steve Peters.\nUsers of Perl >= 5.9.5 will require DBI >= 1.53.\nFixed to be more robust against drivers not handling multiple result\nsets properly, thanks to Gisle Aas.\n\nAdded array context support to executearray and executeforfetch\nmethods which returns executed tuples and rows affected.\nAdded Tie::Cache::LRU example to docs thanks to Brandon Black.\n\nChanges in DBI 1.52 (svn rev 6840),   30th July 2006\nFixed memory leak (per handle) thanks to Nicholas Clark and Ephraim Dan.\nFixed memory leak (16 bytes per sth) thanks to Doru Theodor Petrescu.\nFixed executeforfetch/executearray to RaiseError thanks to Martin J. Evans.\nFixed for perl 5.9.4. Users of Perl >= 5.9.4 will require DBI >= 1.52.\n\nUpdated DBD::File to 0.35 to match the latest release on CPAN.\n\nAdded $dbh->statisticsinfo specification thanks to Brandon Black.\n\nMany changes and additions to profiling:\nProfile Path can now uses sane strings instead of obscure numbers,\ncan refer to attributes, assorted magical values, and even code refs!\nParsing of non-numeric DBIPROFILE env var values has changed.\nChanged DBI::Profile docs extensively - many new features.\nSee DBI::Profile docs for more information.\n\nChanges in DBI 1.51 (svn rev 6475),   6th June 2006\nFixed $dbh->clone method 'signature' thanks to Jeffrey Klein.\nFixed default ping() method to return false if !$dbh->{Active}.\nFixed t/40profile.t to be insensitive to long double precision.\nFixed for perl 5.8.0's more limited weaken() function.\nFixed DBD::Proxy to not alter $@ in disconnect or AUTOLOADd methods.\nFixed bindcolumns() to use return seterr(...) instead of die()\nto report incorrect number of parameters, thanks to Ben Thul.\nFixed bindcol() to ignore undef as bind location, thanks to David Wheeler.\nFixed for perl 5.9.x for non-threaded builds thanks to Nicholas Clark.\nUsers of Perl >= 5.9.x will require DBI >= 1.51.\nFixed fetching of rows as hash refs to preserve utf8 on field names\nfrom $sth->{NAME} thanks to Alexey Gaidukov.\nFixed build on Win32 (dbdpostamble) thanks to David Golden.\n\nImproved performance for thread-enabled perls thanks to Gisle Aas.\nDrivers can now use PERLNOGETCONTEXT thanks to Gisle Aas.\nDriver authors please read the notes in the DBI::DBD docs.\nChanged DBI::Profile format to always include a percentage,\nif not exiting then uses time between the first and last DBI call.\nChanged DBI::ProfileData to be more forgiving of systems with\nunstable clocks (where time may go backwards occasionally).\nClarified the 'Subclassing the DBI' docs.\nAssorted minor changes to docs from comments on annocpan.org.\nChanged Makefile.PL to avoid incompatible options for old gcc.\n\nAdded 'fetch array of hash refs' example to selectallarrayref\ndocs thanks to Tom Schindl.\nAdded docs for $sth->{ParamArrays} thanks to Martin J. Evans.\nAdded reference to $DBI::neatmaxlen in TRACING section of docs.\nAdded ability for DBI::Profile Path to include attributes\nand a summary of where the code was called from.\n\nChanges in DBI 1.50 (svn rev 2307),   13 December 2005\nFixed Makefile.PL options for gcc bug introduced in 1.49.\nFixed handle magic order to keep DBD::Oracle happy.\nFixed selectrowarray to return empty list on error.\n\nChanged dbiprofilemerge() to be able to recurse and merge\nsub-trees of profile data.\n\nAdded documentation for dbiprofilemerge(), including how to\nmeasure the time spent inside the DBI for an http request.\n\nChanges in DBI 1.49 (svn rev 2287),   29th November 2005\nFixed assorted attribute handling bugs in DBD::Proxy.\nFixed croak() in DBD::NullP thanks to Sergey Skvortsov.\nFixed handling of takeimpdata() and dbiimpdata attribute.\nFixed bugs in DBD::DBM thanks to Jeff Zucker.\nFixed bug in DBI::ProfileDumper thanks to Sam Tregar.\nFixed ping in DBD::Proxy thanks to George Campbell.\nFixed dangling ref in $sth after parent $dbh destroyed\nwith thanks to il@rol.ru for the bug report #13151\nFixed prerequisites to include Storable thanks to Michael Schwern.\nFixed takeimpdata to be more practical.\n\nChange to require perl 5.6.1 (as advertised in 2003) not 5.6.0.\nChanged internals to be more strictly coded thanks to Andy Lester.\nChanged warning about multiple copies of Driver.xst found in @INC\nto ignore duplicated directories thanks to Ed Avis.\nChanged Driver.xst to enable drivers to define an dbdstpreparesv\nfunction where the statement parameter is an SV. That enables\ncompiled drivers to support SQL strings that are UTF-8.\nChanged \"use DBI\" to only set $DBI::connectvia if not already set.\nChanged docs to clarify pre-method clearing of err values.\n\nAdded ability for DBI::ProfileData to edit profile path on loading.\nThis enables aggregation of different SQL statements into the same\nprofile node - very handy when not using placeholders or when working\nmultiple separate tables for the same thing (ie logtable20051128)\nAdded $sth->{ParamTypes} specification thanks to Dean Arnold.\nAdded $h->{Callbacks} attribute to enable code hooks to be invoked\nwhen certain methods are called. For example:\n$dbh->{Callbacks}->{prepare} = sub { ... };\nWith thanks to David Wheeler for the kick start.\nAdded $h->{ChildHandles} (using weakrefs) thanks to Sam Tregar\nI've recoded it in C so there's no significant performance impact.\nAdded $h->{Type} docs (returns 'dr', 'db', or 'st')\nAdding trace message in DESTROY if InactiveDestroy enabled.\nAdded %drhs = DBI->installeddrivers();\n\nPorted DBI::ProfileDumper::Apache to modperl2 RC5+\nthanks to Philip M. Golluci\n\nChanges in DBI 1.48 (svn rev 928),    14th March 2005\nFixed DBI::DBD::Metadata generation of typeinfoall thanks to Steffen Goeldner\n(driver authors who have used it should rerun it).\n\nUpdated docs for NULL Value placeholders thanks to Brian Campbell.\n\nAdded multi-keyfield nested hash fetching to fetchallhashref()\nthanks to Zhuang (John) Li for polishing up my draft.\nAdded registered driver prefixes: amzn for DBD::Amazon and yaswi for DBD::Yaswi.\n\nChanges in DBI 1.47 (svn rev 854),    2nd February 2005\nFixed DBI::ProxyServer to not create pid files by default.\nReferences: Ubuntu Security Notice USN-70-1, CAN-2005-0077\nThanks to Javier Fernández-Sanguino Peña from the\nDebian Security Audit Project, and Jonathan Leffler.\nFixed some tests to work with older Test::More versions.\nFixed setting $DBI::err/errstr in DBI::PurePerl.\nFixed potential undef warning from connectcached().\nFixed $DBI::lasth handling for DESTROY so lasth points to\nparent even if DESTROY called other methods.\nFixed DBD::Proxy method calls to not alter $@.\nFixed DBD::File problem with encoding pragma thanks to Erik Rijkers.\n\nChanged error handling so undef errstr doesn't cause warning.\nChanged DBI::DBD docs to use =head3/=head4 pod thanks to\nJonathan Leffler. This may generate warnings for perl 5.6.\nChanged DBI::PurePerl to set autoflush on trace filehandle.\nChanged DBD::Proxy to treat Username as a local attribute\nso recent DBI version can be used with old DBI::ProxyServer.\nChanged driver handle caching in DBD::File.\nAdded $GetInfoType{SQLDATABASENAME} thanks to Steffen Goeldner.\n\nUpdated docs to recommend some common DSN string attributes.\nUpdated connectcached() docs with issues and suggestions.\nUpdated docs for NULL Value placeholders thanks to Brian Campbell.\nUpdated docs for primarykeyinfo and primarykeys.\nUpdated docs to clarify that the default fetchrowhashref behaviour,\nof returning a ref to a new hash for each row, will not change.\nUpdated err/errstr/state docs for DBD authors thanks to Steffen Goeldner.\nUpdated handle/attribute docs for DBD authors thanks to Steffen Goeldner.\nCorrected and updated LongReadLen docs thanks to Bart Lateur.\nAdded DBD::JDBC as a registered driver.\n\nChanges in DBI 1.46 (svn rev 584),    16th November 2004\nFixed parsing bugs in DBI::SQL::Nano thanks to Jeff Zucker.\nFixed a couple of bad links in docs thanks to Graham Barr.\nFixed test.pl Win32 undef warning thanks to H.Merijn Brand & David Repko.\nFixed minor issues in DBI::DBD::Metadata thanks to Steffen Goeldner.\nFixed DBI::PurePerl neat() to use double quotes for utf8.\n\nChanged executearray() definition, and default implementation,\nto not consider scalar values for execute tuple count. See docs.\nChanged DBD::File to enable ShowErrorStatement by default,\nwhich affects DBD::File subclasses such as DBD::CSV and DBD::DBM.\nChanged use DBI qw(:utils) tag to include $neatmaxlen.\nUpdated Roadmap and ToDo.\n\nAdded datastringdiff() datastringdesc() and datadiff()\nutility functions to help diagnose Unicode issues.\nAll can be imported via the use DBI qw(:utils) tag.\n\nChanges in DBI 1.45 (svn rev 480),    6th October 2004\nFixed DBI::DBD code for drivers broken in 1.44.\nFixed \"Free to wrong pool\"/\"Attempt to free unreferenced scalar\" in FETCH.\n\nChanges in DBI 1.44 (svn rev 478),    5th October 2004\nFixed build issues on VMS thanks to Jakob Snoer.\nFixed DBD::File finish() method to return 1 thanks to Jan Dubois.\nFixed rare core dump during global destruction thanks to Mark Jason Dominus.\nFixed risk of utf8 flag persisting from one row to the next.\n\nChanged bindparamarray() so it doesn't require all bind arrays\nto have the same number of elements.\nChanged bindparamarray() to error if placeholder number <= 0.\nChanged executearray() definition, and default implementation,\nto effectively NULL-pad shorter bind arrays.\nChanged executearray() to return \"0E0\" for 0 as per the docs.\nChanged executeforfetch() definition, and default implementation,\nto return \"0E0\" for 0 like execute() and executearray().\nChanged Test::More prerequisite to Test::Simple (which is also the name\nof the distribution both are packaged in) to work around ppm behaviour.\n\nCorrected docs to say that get/set of unknown attribute generates\na warning and is no longer fatal. Thanks to Vadim.\nCorrected fetchallarrayref() docs example thanks to Drew Broadley.\n\nAdded $h1->swapinnerhandle($h2) sponsored by BizRate.com\n\nChanges in DBI 1.43 (svn rev 377),    2nd July 2004\nFixed connect() and connectcached() RaiseError/PrintError\nwhich would sometimes show \"(no error string)\" as the error.\nFixed compiler warning thanks to Paul Marquess.\nFixed \"trace level set to\" trace message thanks to H.Merijn Brand.\nFixed DBD::DBM $dbh->{dbmtables}->{...} to be keyed by the\ntable name not the file name thanks to Jeff Zucker.\nFixed lastinsertid(...) thanks to Rudy Lippan.\nFixed propagation of scalar/list context into proxied methods.\nFixed DBI::Profile::DESTROY to not alter $@.\nFixed DBI::ProfileDumper new() docs thanks to Michael Schwern.\nFixed loadclass to propagate $@ thanks to Drew Taylor.\nFixed compile warnings on Win32 thanks to Robert Baron.\nFixed problem building with recent versions of MakeMaker.\nFixed DBD::Sponge not to generate warning with threads.\nFixed DBIAUTOPROXY to work more than once thanks to Steven Hirsch.\n\nChanged TraceLevel 1 to not show recursive/nested calls.\nChanged getting or setting an invalid attribute to no longer be\na fatal error but generate a warning instead.\nChanged selectallarrayref() to call finish() if\n$attr->{MaxRows} is defined.\nChanged all tests to use Test::More and enhanced the tests thanks\nto Stevan Little and Andy Lester. See http://qa.perl.org/phalanx/\nChanged Test::More minimum prerequisite version to 0.40 (2001).\nChanged DBI::Profile header to include the date and time.\n\nAdded DBI->parsedsn($dsn) method.\nAdded warning if build directory path contains white space.\nAdded docs for parsetraceflags() and parsetraceflag().\nRemoved \"may change\" warnings from the docs for tableinfo(),\nprimarykeyinfo(), and foreignkeyinfo() methods.\n\nChanges in DBI 1.42 (svn rev 222),    12th March 2004\nFixed $sth->{NUMOFFIELDS} of non-executed statement handle\nto be undef as per the docs (it was 0).\nFixed t/41profdump.t to work with perl5.9.1.\nFixed DBDATTRIBDELETE macro thanks to Marco Paskamp.\nFixed DBI::PurePerl lookslikenumber() and $DBI::rows.\nFixed ref($h)->can(\"foo\") to not croak.\n\nChanged attributes (NAME, TYPE etc) of non-executed statement\nhandle to be undef instead of triggering an error.\nChanged ShowErrorStatement to apply to more $dbh methods.\nChanged DBITRACE env var so just does this at load time:\nDBI->trace(split '=', $ENV{DBITRACE}, 2);\nImproved \"invalid number of parameters\" error message.\nAdded DBI::common as base class for DBI::db, DBD::st etc.\nMoved methods common to all handles into DBI::common.\n\nMajor tracing enhancement:\n\nAdded $h->parsetraceflags(\"foo|SQL|7\") to map a group of\ntrace flags into the corresponding trace flag bits.\nAdded automatic calling of parsetraceflags() if\nsetting the trace level to a non-numeric value:\n$h->{TraceLevel}=\"foo|SQL|7\"; $h->trace(\"foo|SQL|7\");\nDBI->connect(\"dbi:Driver(TraceLevel=SQL|foo):...\", ...);\nCurrently no trace flags have been defined.\nAdded to, and reworked, the trace documentation.\nAdded dbivport.h for driver authors to use.\n\nMajor driver additions that Jeff Zucker and I have been working on:\n\nAdded DBI::SQL::Nano a 'smaller than micro' SQL parser\nwith an SQL::Statement compatible API. If SQL::Statement\nis installed then DBI::SQL::Nano becomes an empty subclass\nof SQL::Statement, unless the DBISQLNANO env var is true.\nAdded DBD::File, modified to use DBI::SQL::Nano.\nAdded DBD::DBM, an SQL interface to DBM files using DBD::File.\n\nDocumentation changes:\n\nCorrected typos in docs thanks to Steffen Goeldner.\nCorrected executeforfetch example thanks to Dean Arnold.\n\nChanges in DBI 1.41 (svn rev 130),    22nd February 2004\nFixed executeforarray() so tuplestatus parameter is optional\nas per docs, thanks to Ed Avis.\nFixed executeforarray() docs to say that it returns undef if\nany of the execute() calls fail.\nFixed takeimpdata() test on m68k reported by Christian Hammers.\nFixed writetypeinfopm inconsistencies in DBI::DBD::Metadata\nthanks to Andy Hassall.\nFixed $h->{TraceLevel} to not return DBI->trace trace level\nwhich it used to if DBI->trace trace level was higher.\n\nChanged seterr() to append to errstr, with a leading \"\\n\" if it's\nnot empty, so that multiple error/warning messages are recorded.\nChanged trace to limit elements dumped when an array reference is\nreturned from a method to the max(40, $DBI::neatmaxlen/10)\nso that fetchallarrayref(), for example, doesn't flood the trace.\nChanged trace level to be a four bit integer (levels 0 thru 15)\nand a set of topic flags (no topics have been assigned yet).\nChanged columninfo() to check argument count.\nExtended bindparam() TYPE attribute specification to imply\nstandard formating of value, eg SQLDATE implies 'YYYY-MM-DD'.\n\nAdded way for drivers to indicate 'success with info' or 'warning'\nby setting err to \"0\" for warning and \"\" for information.\nBoth values are false and so don't trigger RaiseError etc.\nThanks to Steffen Goeldner for the original idea.\nAdded $h->{HandleSetErr} = sub { ... } to be called at the\npoint that an error, warn, or info state is recorded.\nThe code can alter the err, errstr, and state values\n(e.g., to promote an error to a warning, or the reverse).\nAdded $h->{PrintWarn} attribute to enable printing of warnings\nrecorded by the driver. Defaults to same value as $^W (perl -w).\nAdded $h->{ErrCount} attribute, incremented whenever an error is\nrecorded by the driver via seterr().\nAdded $h->{Executed} attribute, set if do()/execute() called.\nAdded \\%attr parameter to foreignkeyinfo() method.\nAdded ref count of inner handle to \"DESTROY ignored for outer\" msg.\nAdded Win32 build config checks to DBI::DBD thanks to Andy Hassall.\nAdded bindcol to Driver.xst so drivers can define their own.\nAdded TYPE attribute to bindcol and specified the expected\ndriver behaviour.\n\nMajor update to signal handling docs thanks to Lincoln Baxter.\nCorrected dbiproxy usage doc thanks to Christian Hammers.\nCorrected typeinfoall index hash docs thanks to Steffen Goeldner.\nCorrected typeinfo COLUMNSIZE to chars not bytes thanks to Dean Arnold.\nCorrected getinfo() docs to include details of DBI::Const::GetInfoType.\nClarified that $sth->{PRECISION} is OCTETLENGTH for char types.\n"
                },
                {
                    "name": "Changes in DBI 1.40,    7th January 2004",
                    "content": "Fixed handling of CachedKids when DESTROYing threaded handles.\nFixed sqlusername() in DBI::DBD::Metadata (used by writegetinfopm)\nto use $dbh->{Username}. Driver authors please update your code.\n\nChanged connectcached() when running under Apache::DBI\nto route calls to Apache::DBI::connect().\n\nAdded CLONE() to DBD::Sponge and DBD::ExampleP.\nAdded warning when starting a new thread about any loaded driver\nwhich does not have a CLONE() function.\nAdded new preparecache($sql, \\%attr, 3) option to manage Active handles.\nAdded SCALE and NULLABLE support to DBD::Sponge.\nAdded missing execute() in fetchallhashref docs thanks to Iain Truskett.\nAdded a CONTRIBUTING section to the docs with notes on creating patches.\n"
                },
                {
                    "name": "Changes in DBI 1.39,    27th November 2003",
                    "content": "Fixed STORE to not clear error during nested DBI call, again/better,\nthanks to Tony Bowden for the report and helpful test case.\nFixed DBI dispatch to not try to use AUTOLOAD for driver methods unless\nthe method has been declared (as methods should be when using AUTOLOAD).\nThis fixes a problem when the Attribute::Handlers module is loaded.\nFixed cwd check code to use $Config{pathsep} thanks to Steve Hay.\nFixed unqualified croak() calls thanks to Steffen Goeldner.\nFixed DBD::ExampleP TYPE and PRECISION attributes thanks to Tom Lowery.\nFixed tracing of methods that only get traced at high trace levels.\n\nThe level 1 trace no longer includes nested method calls so it generally\njust shows the methods the application explicitly calls.\nAdded line to trace log (level>=4) when err/errstr is cleared.\nUpdated docs for InactiveDestroy and point out where and when the\ntrace includes the process id.\nUpdate DBI::DBD docs thanks to Steffen Goeldner.\nRemoved docs saying that the DBI->datasources method could be\npassed a $dbh. The $dbh->datasources method should be used instead.\nAdded link to 'DBI recipes' thanks to Giuseppe Maxia:\nhttp://gmax.oltrelinux.com/dbirecipes.html (note that this\nis not an endorsement that the recipies are 'optimal')\n\nNote: There is a bug in perl 5.8.2 when configured with threads\nand debugging enabled (bug #24463) which causes a DBI test to fail.\n"
                },
                {
                    "name": "Changes in DBI 1.38,    21th August 2003",
                    "content": "NOTE: The DBI now requires perl version 5.6.0 or later.\n(As per notice in DBI 1.33 released 27th February 2003)\n\nFixed spurious t/03handles failure on 64bit perls reported by H.Merijn Brand.\nFixed spurious t/15array failure on some perl versions thanks to Ed Avis.\nFixed build using dmake on windows thanks to Steffen Goeldner.\nFixed build on using some shells thanks to Gurusamy Sarathy.\nFixed ParamValues to only be appended to ShowErrorStatement if not empty.\nFixed $dbh->{Statement} not being writable by drivers in some cases.\nFixed occasional undef warnings on connect failures thanks to Ed Avis.\nFixed small memory leak when using $sth->{NAME...hash}.\nFixed 64bit warnings thanks to Marian Jancar.\nFixed DBD::Proxy::db::DESTROY to not alter $@ thanks to Keith Chapman.\nFixed Makefile.PL status from WriteMakefile() thanks to Leon Brocard.\n\nChanged \"Can't set ...->{Foo}: unrecognised attribute\" from an error to a\nwarning when running with DBI::ProxyServer to simplify upgrades.\nChanged executearray() to no longer require ArrayTupleStatus attribute.\nChanged DBI->availabledrivers to not hide DBD::Sponge.\nUpdated/moved placeholder docs to a better place thanks to Johan Vromans.\nChanged dbddbdo4 api in Driver.xst to match dbdstexecute (return int,\nnot bool), relevant only to driver authors.\nChanged neat(), and thus trace(), so strings marked as utf8 are presented\nin double quotes instead of single quotes and are not sanitized.\n\nAdded $dbh->datasources method.\nAdded $dbh->lastinsertid method.\nAdded $sth->executeforfetch($fetchtuplesub, \\@tuplestatus) method.\nAdded DBI->installedversions thanks to Jeff Zucker.\nAdded $DBI::Profile::ONDESTROYDUMP variable.\nAdded docs for DBD::Sponge thanks to Mark Stosberg.\n"
                },
                {
                    "name": "Changes in DBI 1.37,    15th May 2003",
                    "content": "Fixed \"Can't get dbh->{Statement}: unrecognised attribute\" error in test\ncaused by change to perl internals in 5.8.0\nFixed to build with latest development perl (5.8.1@19525).\nFixed C code to use all ANSI declarations thanks to Steven Lembark.\n"
                },
                {
                    "name": "Changes in DBI 1.36,    11th May 2003",
                    "content": "Fixed DBI->connect to carp instead of croak on 'old-style' usage.\nFixed connect(,,, { RootClass => $foo }) to not croak if module not found.\nFixed code generated by DBI::DBD::Metadata thanks to DARREN@cpan.org (#2270)\nFixed DBI::PurePerl to not reset $@ during method dispatch.\nFixed VMS build thanks to Michael Schwern.\nFixed Proxy disconnect thanks to Steven Hirsch.\nFixed error in DBI::DBD docs thanks to Andy Hassall.\n\nChanged t/40profile.t to not require Time::HiRes.\nChanged DBI::ProxyServer to load DBI only on first request, which\nhelps threaded server mode, thanks to Bob Showalter.\nChanged executearray() return value from row count to executed\ntuple count, and now the ArrayTupleStatus attribute is mandatory.\nNOTE: That is an API definition change that may affect your code.\nChanged CompatMode attribute to also disable attribute 'quick FETCH'.\nChanged attribute FETCH to be slightly faster thanks to Stas Bekman.\n\nAdded workaround for perl bug #17575 tied hash nested FETCH\nthanks to Silvio Wanka.\nAdded Username and Password attributes to connect(..., \\%attr) and so\nalso embedded in DSN like \"dbi:Driver(Username=user,Password=pass):...\"\nUsername and Password can't contain \")\", \",\", or \"=\" characters.\nThe predence is DSN first, then \\%attr, then $user & $pass parameters,\nand finally the DBIUSER & DBIPASS environment variables.\nThe Username attribute is stored in the $dbh but the Password is not.\nAdded ProxyServer HOWTO configure restrictions docs thanks to Jochen Wiedmann.\nAdded MaxRows attribute to selectcolarrayref prompted by Wojciech Pietron.\nAdded dumphandle as a method not just a DBI:: utility function.\nAdded on-demand by-row data feed into executearray() using code ref,\nor statement handle. For example, to insert from a select:\n$insertsth->executearray( { ArrayTupleFetch => $selectsth, ... } )\nAdded warning to trace log when $h->{foo}=... is ignored due to\ninvalid prefix (e.g., not 'private').\n"
                },
                {
                    "name": "Changes in DBI 1.35,    7th March 2003",
                    "content": "Fixed memory leak in fetchrowhashref introduced in DBI 1.33.\nFixed various DBD::Proxy errors introduced in DBI 1.33.\nFixed to ANSI C in dbddrdatasources thanks to Jonathan Leffler.\nFixed $h->can($methodname) to return correct code ref.\nRemoved DBI::Format from distribution as it's now part of the\nseparate DBI::Shell distribution by Tom Lowery.\nUpdated DBI::DBD docs with a note about the CLONE method.\nUpdated DBI::DBD docs thanks to Jonathan Leffler.\nUpdated DBI::DBD::Metadata for perl 5.5.3 thanks to Jonathan Leffler.\nAdded note to installmethod docs about setupdriver() method.\n"
                },
                {
                    "name": "Changes in DBI 1.34,    28th February 2003",
                    "content": "Fixed DBI::DBD docs to refer to DBI::DBD::Metadata thanks to Jonathan Leffler.\nFixed dbitime() compile using BorlandC on Windows thanks to Steffen Goeldner.\nFixed profile tests to do enough work to measure on Windows.\nFixed disconnectall() to not be required by drivers.\n\nAdded $okay = $h->can($methodname) to check if a method exists.\nAdded DBD::*::*->installmethod($methodname, \\%attr) so driver private\nmethods can be 'installed' into the DBI dispatcher and no longer\nneed to be called using $h->func(..., $methodname).\n\nEnhanced $dbh->clone() and documentation.\nEnhanced docs to note that dbitime(), and thus profiling, is limited\nto only millisecond (seconds/1000) resolution on Windows.\nRemoved old DBI::Shell from distribution and added Tom Lowery's improved\nversion to the Bundle::DBI file.\nUpdated minimum version numbers for modules in Bundle::DBI.\n"
                },
                {
                    "name": "Changes in DBI 1.33,    27th February 2003",
                    "content": "NOTE: Future versions of the DBI *will not* support perl 5.6.0 or earlier.\n: Perl 5.6.1 will be the minimum supported version.\n\nNOTE: The \"old-style\" connect: DBI->connect($database, $user, $pass, $driver);\n: has been deprecated for several years and will now generate a warning.\n: It will be removed in a later release. Please change any old connect() calls.\n\nAdded $dbh2 = $dbh1->clone to make a new connection to the database\nthat is identical to the original one. clone() can be called even after\nthe original handle has been disconnected. See the docs for more details.\n\nFixed merging of profile data to not sum DBIprofFIRSTTIME values.\nFixed unescaping of newlines in DBI::ProfileData thanks to Sam Tregar.\nFixed Taint bug with fetchrowhashref with help from Bradley Baetz.\nFixed $dbh->{Active} for DBD::Proxy, reported by Bob Showalter.\nFixed STORE to not clear error during nested DBI call,\nthanks to Tony Bowden for the report and helpful test case.\nFixed DBI::PurePerl error clearing behaviour.\nFixed dbitime() and thus DBI::Profile on Windows thanks to Smejkal Petr.\nFixed problem that meant ShowErrorStatement could show wrong statement,\nthanks to Ron Savage for the report and test case.\nChanged Apache::DBI hook to check for $ENV{MODPERL} instead of\n$ENV{GATEWAYINTERFACE} thanks to Ask Bjoern Hansen.\nNo longer tries to dup trace logfp when an interpreter is being cloned.\nDatabase handles no longer inherit shared $h->err/errstr/state storage\nfrom their drivers, so each $dbh has it's own $h->err etc. values\nand is no longer affected by calls made on other dbh's.\nNow when a dbh is destroyed it's err/errstr/state values are copied\nup to the driver so checking $DBI::errstr still works as expected.\n\nBuild / portability fixes:\nFixed t/40profile.t to not use Time::HiRes.\nFixed t/06attrs.t to not be locale sensitive, reported by Christian Hammers.\nFixed sgi compiler warnings, reported by Paul Blake.\nFixed build using make -j4, reported by Jonathan Leffler.\nFixed build and tests under VMS thanks to Craig A. Berry.\n\nDocumentation changes:\nDocumented $highresolutiontime = dbitime() function.\nDocumented that bindcol() can take an attribute hash.\nClarified documentation for ParamValues attribute hash keys.\nMany good DBI documentation tweaks from Jonathan Leffler,\nincluding a major update to the DBI::DBD driver author guide.\nClarified that execute() should itself call finish() if it's\ncalled on a statement handle that's still active.\nClarified $sth->{ParamValues}. Driver authors please note.\nRemoved \"NEW\" markers on some methods and attributes and\nadded text to each giving the DBI version it was added in,\nif it was added after DBI 1.21 (Feb 2002).\n\nChanges of note for authors of all drivers:\nAdded SQLDATATYPE, SQLDATETIMESUB, NUMPRECRADIX, and\nINTERVALPRECISION fields to docs for typeinfoall. There were\nalready in typeinfo(), but typeinfoall() didn't specify the\nindex values.  Please check and update your typeinfoall() code.\nAdded DBI::DBD::Metadata module that auto-generates your drivers\ngetinfo and typeinfoall data and code, thanks mainly to\nJonathan Leffler and Steffen Goeldner. If you've not implemented\ngetinfo and typeinfoall methods and your database has an ODBC\ndriver available then this will do all the hard work for you!\nDrivers should no longer pass Err, Errstr, or State to newdrh\nor newdbh functions.\nPlease check that you support the slightly modified behaviour of\n$sth->{ParamValues}, e.g., always return hash with keys if possible.\n\nChanges of note for authors of compiled drivers:\nAdded dbddblogin6 & dbdstfinish3 prototypes thanks to Jonathan Leffler.\nAll dbd**() functions implemented by drivers must have a\ncorresponding #define dbd** <driverprefix>** otherwise\nthe driver may not work with a future release of the DBI.\n\nChanges of note for authors of drivers which use Driver.xst:\nSome new method hooks have been added are are enabled by\ndefining corresponding macros:\n$drh->datasources()      - dbddrdatasources\n$dbh->do()                - dbddbdo4\nThe following methods won't be compiled into the driver unless\nthe corresponding macro has been #defined:\n$drh->disconnectall()    - dbddisconall\n"
                },
                {
                    "name": "Changes in DBI 1.32,    1st December 2002",
                    "content": "Fixed to work with 5.00503 thanks to Tatsuhiko Miyagawa (I've not tested it).\nReenabled taint tests (accidentally left disabled) spotted by Bradley Baetz.\nImproved docs for FetchHashKeyName attribute thanks to Ian Barwick.\nFixed core dump if fetchrowhashref given bad argument (name of attribute\nwith a value that wasn't an array reference), spotted by Ian Barwick.\nFixed some compiler warnings thanks to David Wheeler.\nUpdated Steven Hirsch's enhanced proxy work (seems I left out a bit).\nMade t/40profile.t tests more reliable, reported by Randy, who is part of\nthe excellent CPAN testers team: http://testers.cpan.org/\n(Please visit, see the valuable work they do and, ideally, join in!)\n"
                },
                {
                    "name": "Changes in DBI 1.31,    29th November 2002",
                    "content": "The fetchallarrayref method, when called with a $maxrows parameter,\nno longer gives an error if called again after all rows have been\nfetched. This simplifies application logic when fetching in batches.\nAlso added batch-fetch while() loop example to the docs.\nThe proxy now supports non-lazy (synchronous) prepare, positioned\nupdates (for selects containing 'for update'), PlRPC config set\nvia attributes, and accurate propagation of errors, all thanks\nto Steven Hirsch (plus a minor fix from Sean McMurray and doc\ntweaks from Michael A Chase).\nThe DBIAUTOPROXY env var can now hold the full dsn of the proxy driver\nplus attributes, like \"dbi:Proxy(proxyfoo=>1):host=...\".\nAdded TaintIn & TaintOut attributes to give finer control over\ntainting thanks to Bradley Baetz.\nThe RootClass attribute no longer ignores failure to load a module,\nbut also doesn't try to load a module if the class already exists,\nwith thanks to James FitzGibbon.\nHandleError attribute works for connect failures thanks to David Wheeler.\nThe connect() RaiseError/PrintError message now includes the username.\nChanged \"last handle unknown or destroyed\" warning to be a trace message.\nRemoved undocumented $h->event() method.\nFurther enhancements to DBD::PurePerl accuracy.\nThe CursorName attribute now defaults to undef and not an error.\n\nDBI::Profile changes:\nNew DBI::ProfileDumper, DBI::ProfileDumper::Apache, and\nDBI::ProfileData modules (to manage the storage and processing\nof profile data), plus dbiprof program for analyzing profile\ndata - with many thanks to Sam Tregar.\nAdded $DBI::err (etc) tied variable lookup time to profile.\nAdded time for DESTROY method into parent handles profile (used to be ignored).\n\nDocumentation changes:\nDocumented $dbh = $sth->{Database} attribute.\nDocumented $dbh->connected(...) post-connection call when subclassing.\nUpdated some minor doc issues thanks to H.Merijn Brand.\nUpdated Makefile.PL example in DBI::DBD thanks to KAWAI,Takanori.\nFixed executearray() example thanks to Peter van Hardenberg.\n\nChanges for driver authors, not required but strongly recommended:\nChange DBIS to DBIcDBISTATE(impxxh)   [or impdbh, impsth etc]\nChange DBILOGFP to DBIcLOGPIO(impxxh) [or impdbh, impsth etc]\nAny function from which all instances of DBIS and DBILOGFP are\nremoved can also have dPERLINTERP removed (a good thing).\nAll use of the DBIhEVENT* macros should be removed.\nMajor update to DBI::DBD docs thanks largely to Jonathan Leffler.\nAdd these key values: 'Err' => \\my $err, 'Errstr' => \\my $errstr,\nto the hash passed to DBI::newdbh() in your driver source code.\nThat will make each $dbh have it's own $h->err and $h->errstr\nvalues separate from other $dbh belonging to the same driver.\nIf you have a ::db or ::st DESTROY methods that do nothing\nyou can now remove them - which speeds up handle destruction.\n"
                },
                {
                    "name": "Changes in DBI 1.30,    18th July 2002",
                    "content": "Fixed problems with selectrowarray, selectrowarrayref, and\nselectallarrayref introduced in DBI 1.29.\nFixed FETCHing a handle attribute to not clear $DBI::err etc (broken in 1.29).\nFixed core dump at trace level 9 or above.\nFixed compilation with perl 5.6.1 + ithreads (i.e. Windows).\nChanged definition of behaviour of selectrowarray when called in a scalar\ncontext to match fetchrowarray.\nCorrected selectrowarrayref docs which showed selectrowarray thanks to Paul DuBois.\n"
                },
                {
                    "name": "Changes in DBI 1.29,    15th July 2002",
                    "content": "NOTE: This release changes the specified behaviour for the\n: fetchrowarray method when called in a scalar context:\n: The DBI spec used to say that it would return the FIRST field.\n: Which field it returns (i.e., the first or the last) is now undefined.\n: This does not affect statements that only select one column, which is\n: usually the case when fetchrowarray is called in a scalar context.\n: FYI, this change was triggered by discovering that the fetchrowarray\n: implementation in Driver.xst (used by most compiled drivers)\n: didn't match the DBI specification. Rather than change the code\n: to match, and risk breaking existing applications, I've changed the\n: specification (that part was always of dubious value anyway).\n\nNOTE: Future versions of the DBI may not support for perl 5.5 much longer.\n: If you are still using perl 5.00503 you should be making plans to\n: upgrade to at least perl 5.6.1, or 5.8.0. Perl 5.8.0 is due to be\n: released in the next week or so.  (Although it's a \"point 0\" release,\n: it is the most thoroughly tested release ever.)\n\nAdded XS/C implementations of selectrowarray, selectrowarrayref, and\nselectallarrayref to Driver.xst. See DBI 1.26 Changes for more info.\nRemoved support for the old (fatally flawed) \"5005\" threading model.\nAdded support for new perl 5.8 iThreads thanks to Gerald Richter.\n(Threading support and safety should still be regarded as beta\nquality until further notice. But it's much better than it was.)\nUpdated the \"Threads and Thread Safety\" section of the docs.\nThe trace output can be sent to STDOUT instead of STDERR by using\n\"STDOUT\" as the name of the file, i.e., $h->trace(..., \"STDOUT\")\nAdded pointer to perlreftut, perldsc, perllol, and perlboot manuals\ninto the intro section of the docs, suggested by Brian McCain.\nFixed DBI::Const::GetInfo::* pod docs thanks to Zack Weinberg.\nSome changes to how $dbh method calls are treated by DBI::Profile:\nMeta-data methods now clear $dbh->{Statement} on entry.\nSome $dbh methods are now profiled as if $dbh->{Statement} was empty\n(because thet're unlikely to actually relate to its contents).\nUpdated dbiport.h to ppport.h from perl 5.8.0.\nTested with perl 5.5.3 (vanilla, Solaris), 5.6.1 (vanilla, Solaris), and\nperl 5.8.0 (RC3@17527 with iThreads & Multiplicity on Solaris and FreeBSD).\n"
                },
                {
                    "name": "Changes in DBI 1.28,    14th June 2002",
                    "content": "Added $sth->{ParamValues} to return a hash of the most recent\nvalues bound to placeholders via bindparam() or execute().\nIndividual drivers need to be updated to support it.\nEnhanced ShowErrorStatement to include ParamValues if available:\n\"DBD::foo::st execute failed: errstr [for statement ``...'' with params: 1='foo']\"\nFurther enhancements to DBD::PurePerl accuracy.\n"
                },
                {
                    "name": "Changes in DBI 1.27,    13th June 2002",
                    "content": "Fixed missing column in C implementation of fetchallarrayref()\nthanks to Philip Molter for the prompt reporting of the problem.\n"
                },
                {
                    "name": "Changes in DBI 1.26,    13th June 2002",
                    "content": "Fixed t/40profile.t to work on Windows thanks to Smejkal Petr.\nFixed $h->{Profile} to return undef, not error, if not set.\nFixed DBI->availabledrivers in scalar context thanks to Michael Schwern.\n\nAdded C implementations of selectrowarrayref() and fetchallarrayref()\nin Driver.xst.  All compiled drivers using Driver.xst will now be\nfaster making those calls. Most noticeable with fetchallarrayref for\nmany rows or selectrowarrayref with a fast query. For example, using\nDBD::mysql a selectrowarrayref for a single row using a primary key\nis ~20% faster, and fetchallarrayref for 20000 rows is twice as fast!\nDrivers just need to be recompiled and reinstalled to enable it.\nThe fetchallarrayref speed up only applies if $slice parameter is not used.\nAdded $maxrows parameter to fetchallarrayref() to optionally limit\nthe number of rows returned. Can now fetch batches of rows.\nAdded MaxRows attribute to selectallarrayref()\nwhich then passes it to fetchallarrayref().\nChanged selectrowarray to make use of selectrowarrayref.\nTrace level 1 now shows first two parameters of all methods\n(used to only for that for some, like prepare,execute,do etc)\nTrace indicator for recursive calls (first char on trace lines)\nnow starts at 1 not 2.\n\nDocumented that $h->func() does not trigger RaiseError etc\nso applications must explicitly check for errors.\nDBI::Profile with DBIPROFILE now shows percentage time inside DBI.\nHandleError docs updated to show that handler can edit error message.\nHandleError subroutine interface is now regarded as stable.\n"
                },
                {
                    "name": "Changes in DBI 1.25,    5th June 2002",
                    "content": "Fixed build problem on Windows and some compiler warnings.\nFixed $dbh->{Driver} and $sth->{Statement} for driver internals\nThese are 'inner' handles as per behaviour prior to DBI 1.16.\nFurther minor improvements to DBI::PurePerl accuracy.\n"
                },
                {
                    "name": "Changes in DBI 1.24,    4th June 2002",
                    "content": "Fixed reference loop causing a handle/memory leak\nthat was introduced in DBI 1.16.\nFixed DBI::Format to work with 'filehandles' from IO::Scalar\nand similar modules thanks to report by Jeff Boes.\nFixed $h->func for DBI::PurePerl thanks to Jeff Zucker.\nFixed $dbh->{Name} for DBI::PurePerl thanks to Dean Arnold.\n\nAdded DBI method call profiling and benchmarking.\nThis is a major new addition to the DBI.\nSee $h->{Profile} attribute and DBI::Profile module.\nFor a quick trial, set the DBIPROFILE environment variable and\nrun your favourite DBI script. Try it with DBIPROFILE set to 1,\nthen try 2, 4, 8, 10, and -10. Have fun!\n\nAdded executearray() and bindparamarray() documentation\nwith thanks to Dean Arnold.\nAdded notes about the DBI having not yet been tested with iThreads\n(testing and patches for SvLOCK etc welcome).\nRemoved undocumented Handlers attribute (replaced by HandleError).\nTested with 5.5.3 and 5.8.0 RC1.\n"
                },
                {
                    "name": "Changes in DBI 1.23,    25th May 2002",
                    "content": "Greatly improved DBI::PurePerl in performance and accuracy.\nAdded more detail to DBI::PurePerl docs about what's not supported.\nFixed undef warnings from t/15array.t and DBD::Sponge.\n"
                },
                {
                    "name": "Changes in DBI 1.22,    22nd May 2002",
                    "content": "Added executearray() and bindparamarray() with special thanks\nto Dean Arnold. Not yet documented. See t/15array.t for examples.\nAll drivers now automatically support these methods.\nAdded DBI::PurePerl, a transparent DBI emulation for pure-perl drivers\nwith special thanks to Jeff Zucker. Perldoc DBI::PurePerl for details.\nAdded DBI::Const::GetInfo* modules thanks to Steffen Goeldner.\nAdded writegetinfopm utility to DBI::DBD thanks to Steffen Goeldner.\nAdded $allowactive==2 mode for preparecached() thanks to Stephen Clouse.\n\nUpdated DBI::Format to Revision 11.4 thanks to Tom Lowery.\nUse File::Spec in Makefile.PL (helps VMS etc) thanks to Craig Berry.\nExtend $h->{Warn} to commit/rollback ineffective warning thanks to Jeff Baker.\nExtended t/preparse.t and removed \"use Devel::Peek\" thanks to Scott Hildreth.\nOnly copy Changes to blib/lib/Changes.pm once thanks to Jonathan Leffler.\nUpdated internals for modern perls thanks to Jonathan Leffler and Jeff Urlwin.\nTested with perl 5.7.3 (just using default perl config).\n\nDocumentation changes:\n\nAdded 'Catalog Methods' section to docs thanks to Steffen Goeldner.\nUpdated README thanks to Michael Schwern.\nClarified that driver may choose not to start new transaction until\nnext use of $dbh after commit/rollback.\nClarified docs for finish method.\nClarified potentials problems with preparecached() thanks to Stephen Clouse.\n"
                },
                {
                    "name": "Changes in DBI 1.21,    7th February 2002",
                    "content": "The minimum supported perl version is now 5.00503.\n\nFixed DBD::Proxy support for AutoCommit thanks to Jochen Wiedmann.\nFixed DBI::ProxyServer bindparam(inout) handing thanks to Oleg Mechtcheriakov.\nFixed DBI::ProxyServer fetch loop thanks to nobull@mail.com.\nFixed installdriver do-the-right-thing with $@ on error. It, and connect(),\nwill leave $@ empty on success and holding the error message on error.\nThanks to Jay Lawrence, Gavin Sherlock and others for the bug report.\nFixed fetchrowhashref to assign columns to the hash left-to-right\nso later fields with the same name overwrite earlier ones\nas per DBI < 1.15, thanks to Kay Roepke.\n\nChanged tables() to use quoteindentifier() if the driver returns a\ntrue value for $dbh->getinfo(29) # SQLIDENTIFIERQUOTECHAR\nChanged ping() so it no longer triggers RaiseError/PrintError.\nChanged connect() to not call $class->installdriver unless needed.\nChanged DESTROY to catch fatal exceptions and append to $@.\n\nAdded ISO SQL/CLI & ODBCv3 data type definitions thanks to Steffen Goeldner.\nRemoved the definition of SQLBIGINT data type constant as the value is\ninconsistent between standards (ODBC=-5, SQL/CLI=25).\nAdded $dbh->columninfo(...) thanks to Steffen Goeldner.\nAdded $dbh->foreignkeyinfo(...) thanks to Steffen Goeldner.\nAdded $dbh->quoteidentifier(...) insipred by Simon Oliver.\nAdded $dbh->seterr(...) for DBD authors and DBI subclasses\n(actually been there for a while, now expanded and documented).\nAdded $h->{HandleError} = sub { ... } addition and/or alternative\nto RaiseError/PrintError. See the docs for more info.\nAdded $h->{TraceLevel} = N attribute to set/get trace level of handle\nthus can set trace level via an (eg externally specified) DSN\nusing the embedded attribute syntax:\n$dsn = 'dbi:DB2(PrintError=1,TraceLevel=2):dbname';\nPlus, you can also now do: local($h->{TraceLevel}) = N;\n(but that leaks a little memory in some versions of perl).\nAdded some call tree information to trace output if trace level >= 3\nWith thanks to Graham Barr for the stack walking code.\nAdded experimental undocumented $dbh->preparse(), see t/preparse.t\nWith thanks to Scott T. Hildreth for much of the work.\nAdded Fowler/Noll/Vo hash type as an option to DBI::hash().\n\nDocumentation changes:\n\nAdded DBI::Changes so now you can \"perldoc DBI::Changes\", yeah!\nAdded selectrowarrayref & selectrowhashref docs thanks to Doug Wilson.\nAdded 'Standards Reference Information' section to docs to gather\ntogether all references to relevant on-line standards.\nAdded link to poop.sourceforge.net into the docs thanks to Dave Rolsky.\nAdded link to hyperlinked BNF for SQL92 thanks to Jeff Zucker.\nAdded 'Subclassing the DBI' docs thanks to Stephen Clouse, and\nthen changed some of them to reflect the new approach to subclassing.\nAdded stronger wording to description of $h->{private*} attributes.\nAdded docs for DBI::hash.\n\nDriver API changes:\n\nNow a COPY of the DBI->connect() attributes is passed to the driver\nconnect() method, so it can process and delete any elements it wants.\nDeleting elements reduces/avoids the explicit\n$dbh->{$} = $attr->{$} foreach keys %$attr;\nthat DBI->connect does after the driver connect() method returns.\n"
                },
                {
                    "name": "Changes in DBI 1.20,    24th August 2001",
                    "content": "WARNING: This release contains two changes that may affect your code.\n: Any code using selectallhashref(), which was added in March 2001, WILL\n: need to be changed. Any code using fetchallarrayref() with a non-empty\n: hash slice parameter may, in a few rare cases, need to be changed.\n: See the change list below for more information about the changes.\n: See the DBI documentation for a description of current behaviour.\n\nFixed memory leak thanks to Toni Andjelkovic.\nChanged fetchallarrayref({ foo=>1, ...}) specification again (sorry):\nThe key names of the returned hashes is identical to the letter case of\nthe names in the parameter hash, regardless of the L</FetchHashKeyName>\nattribute. The letter case is ignored for matching.\nChanged fetchallarrayref([...]) array slice syntax specification to\nclarify that the numbers in the array slice are perl index numbers\n(which start at 0) and not column numbers (which start at 1).\nAdded { Columns=>... } and { Slice =>... } attributes to selectallarrayref()\nwhich is passed to fetchallarrayref() so it can fetch hashes now.\nAdded a { Columns => [...] } attribute to selectcolarrayref() so that\nthe list it returns can be built from more than one column per row.\nWhy? Consider my %hash = @{$dbh->selectcolarrayref($sql,{ Columns=>[1,2]})}\nto return id-value pairs which can be used directly to build a hash.\nAdded $hashref = $sth->fetchallhashref( $keyfield )\nwhich returns a ref to a hash with, typically, one element per row.\n$keyfield is the name of the field to get the key for each row from.\nThe value of the hash for each row is a hash returned by fetchrowhashref.\nChanged selectallhashref to return a hash ref (from fetchallhashref)\nand not an array of hashes as it has since DBI 1.15 (end March 2001).\nWARNING: THIS CHANGE WILL BREAK ANY CODE USING selectallhashref()!\nSorry, but I think this is an important regularization of the API.\nTo get previous selectallhashref() behaviour (an array of hash refs)\nchange $aryref = $dbh->selectallhashref( $statement, undef, @bind);\nto $aryref = $dbh->selectallarrayref($statement, { Columns=>{} }, @bind);\nAdded NAMElchash, NAMEuchash, NAMEhash statement handle attributes.\nwhich return a ref to a hash of fieldname => fieldindex (0..n-1) pairs.\nFixed selecthash() example thanks to Doug Wilson.\nRemoved (unbundled) DBD::ADO and DBD::Multiplex from the DBI distribution.\nThe latest versions of those modules are available from CPAN sites.\nAdded $dbh->beginwork. This method causes AutoCommit to be turned\noff just until the next commit() or rollback().\nDriver authors: if the DBIcfBegunWork flag is set when your commit or\nrollback method is called then please turn AutoCommit on and clear the\nDBIcfBegunWork flag. If you don't then the DBI will but it'll be much\nless efficient and won't handle error conditions very cleanly.\nRetested on perl 5.4.4, but the DBI won't support 5.4.x much longer.\nAdded text to SUPPORT section of the docs:\nFor direct DBI and DBD::Oracle support, enhancement, and related work\nI am available for consultancy on standard commercial terms.\nAdded text to ACKNOWLEDGEMENTS section of the docs:\nMuch of the DBI and DBD::Oracle was developed while I was Technical\nDirector (CTO) of the Paul Ingram Group (www.ig.co.uk).  So I'd\nespecially like to thank Paul for his generosity and vision in\nsupporting this work for many years.\n"
                },
                {
                    "name": "Changes in DBI 1.19,    20th July 2001",
                    "content": "Made fetchallarrayref({ foo=>1, ...}) be more strict to the specification\nin relation to wanting hash slice keys to be lowercase names.\nWARNING: If you've used fetchallarrayref({...}) with a hash slice\nthat contains keys with uppercase letters then your code will break.\n(As far as I recall the spec has always said don't do that.)\nFixed $sth->execute() to update $dbh->{Statement} to $sth->{Statement}.\nAdded row number to trace output for fetch method calls.\nTrace level 1 no longer shows fetches with row>1 (to reduce output volume).\nAdded $h->{FetchHashKeyName} = 'NAMElc' or 'NAMEuc' to alter\nbehaviour of fetchrowhashref() method. See docs.\nAdded typeinfo quote caching to quote() method thanks to Dean Kopesky.\nMakes using quote() with second data type param much much faster.\nAdded typeintoall() caching to typeinfo(), spotted by Dean Kopesky.\nAdded new API definition for tableinfo() and tables(),\ndriver authors please note!\nAdded primarykeyinfo() to DBI API thanks to Steffen Goeldner.\nAdded primarykey() to DBI API as simpler interface to primarykeyinfo().\nIndent and other fixes for DBI::DBD doc thanks to H.Merijn Brand.\nAdded preparecached() inserthash() example thanks to Doug Wilson.\nRemoved false docs for fetchallhashref(), use fetchallarrayref({}).\n"
                },
                {
                    "name": "Changes in DBI 1.18,    4th June 2001",
                    "content": "Fixed that altering ShowErrorStatement also altered AutoCommit!\nThanks to Jeff Boes for spotting that clanger.\nFixed DBD::Proxy to handle commit() and rollback(). Long overdue, sorry.\nFixed incompatibility with perl 5.004 (but no one's using that right? :)\nFixed connectcached and preparecached to not be affected by the order\nof elements in the attribute hash. Spotted by Mitch Helle-Morrissey.\nFixed version number of DBI::Shell\nreported by Stuhlpfarrer Gerhard and others.\nDefined and documented tableinfo() attribute semantics (ODBC compatible)\nthanks to Olga Voronova, who also implemented then in DBD::Oracle.\nUpdated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.\n"
                },
                {
                    "name": "Changes in DBI 1.16,    30th May 2001",
                    "content": "Reimplemented fetchrowhashref in C, now fetches about 25% faster!\nChanged behaviour if both PrintError and RaiseError are enabled\nto simply do both (in that order, obviously :)\nSlight reduction in DBI handle creation overhead.\nFixed $dbh->{Driver} & $sth->{Database} to return 'outer' handles.\nFixed execute param count check to honour RaiseError spotted by Belinda Giardie.\nFixed build for perl5.6.1 with PERLIO thanks to H.Merijn Brand.\nFixed client sql restrictions in ProxyServer.pm thanks to Jochen Wiedmann.\nFixed batch mode command parsing in Shell thanks to Christian Lemburg.\nFixed typo in selectcolarrayref docs thanks to Jonathan Leffler.\nFixed selectrowhashref to be available to callers thanks to T.J.Mather.\nFixed core dump if statement handle didn't define Statement attribute.\nAdded bindparaminout docs to DBI::DBD thanks to Jonathan Leffler.\nAdded note to datasources() method docs that some drivers may\nrequire a connected database handle to be supplied as an attribute.\nTrace of installdriver method now shows path of driver file loaded.\nChanged many '||' to 'or' in the docs thanks to H.Merijn Brand.\nUpdated DBD::ADO again (improvements in error handling) from Tom Lowery.\nUpdated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.\nUpdated email and web addresses in DBI::FAQ thanks to Michael A Chase.\n"
                },
                {
                    "name": "Changes in DBI 1.15,    28th March 2001",
                    "content": "Added selectrowarrayref\nAdded selectrowhashref\nAdded selectallhashref thanks to Leon Brocard.\nAdded DBI->connect(..., { dbiconnectmethod => 'method' })\nAdded $dbh->{Statement} aliased to most recent child $sth->{Statement}.\nAdded $h->{ShowErrorStatement}=1 to cause the appending of the\nrelevant Statement text to the RaiseError/PrintError text.\nModified typeinfo to always return hash keys in uppercase and\nto not require uppercase 'DATATYPE' key from typeinfoall.\nThanks to Jennifer Tong and Rob Douglas.\nAdded \\%attr param to tables() and tableinfo() methods.\nTrace method uses warn() if it can't open the new file.\nTrace shows source line and filename during global destruction.\nUpdated packages:\nUpdated Win32::DBIODBC (Win32::ODBC emulation) thanks to Roy Lee.\nUpdated DBD::ADO to much improved version 0.4 from Tom Lowery.\nUpdated DBD::Sponge to include $sth->{PRECISION} thanks to Tom Lowery.\nChanged DBD::ExampleP to use lstat() instead of stat().\nDocumentation:\nDocumented $DBI::lasth (which has been there since day 1).\nDocumented SQL* names.\nClarified and extended docs for $h->state thanks to Masaaki Hirose.\nClarified fetchallarrayref({}) docs (thanks to, er, someone!).\nClarified typeinfoall re lettercase and index values.\nUpdated DBI::FAQ to 0.38 thanks to Alligator Descartes.\nAdded cute bindcolumns example thanks to H.Merijn Brand.\nExtended docs on \\%attr arg to datasources method.\nMakefile.PL\nRemoved obscure potential 'rm -rf /' (thanks to Ulrich Pfeifer).\nRemoved use of glob and find (thanks to Michael A. Chase).\nProxy:\nRemoved debug messages from DBD::Proxy AUTOLOAD thanks to Brian McCauley.\nAdded fix for problem using tableinfo thanks to Tom Lowery.\nAdded better determination of where to put the pid file, and...\nAdded KNOWN ISSUES section to DBD::Proxy docs thanks to Jochen Wiedmann.\nShell:\nUpdated DBI::Format to include DBI::Format::String thanks to Tom Lowery.\nAdded describe command thanks to Tom Lowery.\nAdded columnseparator option thanks to Tom Lowery (I think).\nAdded 'raw' format thanks to, er, someone, maybe Tom again.\nKnown issues:\nPerl 5.005 and 5.006 both leak memory doing local($handle->{Foo}).\nPerl 5.004 doesn't. The leak is not a DBI or driver bug.\n"
                },
                {
                    "name": "Changes in DBI 1.14,\t14th June 2000",
                    "content": "NOTE: This version is the one the DBI book is based on.\nNOTE: This version requires at least Perl 5.004.\nPerl 5.6 ithreads changes with thanks to Doug MacEachern.\nChanged trace output to use PerlIO thanks to Paul Moore.\nFixed bug in RaiseError/PrintError handling.\n(% chars in the error string could cause a core dump.)\nFixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt.\nMajor documentation polishing thanks to Linda Mui at O'Reilly.\nPassword parameter now shown as  in trace output.\nAdded two fields to typeinfo and typeinfoall.\nAdded $dsn to PrintError/RaiseError message from DBI->connect().\nChanged preparecached() croak to carp if sth still Active.\nAdded preparecached() example to the docs.\nAdded further DBD::ADO enhancements from Thomas Lowery.\n"
                },
                {
                    "name": "Changes in DBI 1.13,\t11th July 1999",
                    "content": "Fixed Win32 PerlEx IIS concurrency bugs thanks to Murray Nesbitt.\nFixed problems with DBD::ExampleP longlist test mode.\nAdded SQLWCHAR SQLWVARCHAR SQLWLONGVARCHAR and SQLBIT\nto list of known and exportable SQL types.\nImproved data fetch performance of DBD::ADO.\nAdded GetTypeInfo to DBD::ADO thanks to Thomas Lowery.\nActually documented connectcached thanks to Michael Schwern.\nFixed user/key/cipher bug in ProxyServer thanks to Joshua Pincus.\n"
                },
                {
                    "name": "Changes in DBI 1.12,\t29th June 1999",
                    "content": "Fixed significant DBD::ADO bug (fetch skipped first row).\nFixed ProxyServer bug handling non-select statements.\nFixed VMS problem with t/examp.t thanks to Craig Berry.\nTrace only shows calls to tracemsg and setfbav at high levels.\nModified t/examp.t to workaround Cygwin buffering bug.\n"
                },
                {
                    "name": "Changes in DBI 1.11,\t17th June 1999",
                    "content": "Fixed bindcolumns argument checking to allow a single arg.\nFixed problems with internal defaultuser method.\nFixed broken DBD::ADO.\nMade default $DBI::rows more robust for some obscure cases.\n"
                },
                {
                    "name": "Changes in DBI 1.10,\t14th June 1999",
                    "content": "Fixed tracemsg.al error when using Apache.\nFixed dbdstfinish enhancement in Driver.xst (internals).\nEnable drivers to define default username and password\nand temporarily disabled warning added in 1.09.\nThread safety optimised for single thread case.\n"
                },
                {
                    "name": "Changes in DBI 1.09,\t9th June 1999",
                    "content": "Added optional minimum trace level parameter to tracemsg().\nAdded warning in Makefile.PL that DBI will require 5.004 soon.\nAdded $dbh->selectcolarrayref($statement) method.\nFixed fetchallarrayref hash-slice mode undef NAME problem.\nFixed problem with tainted parameter checking and t/examp.t.\nFixed problem with thread safety code, including 64 bit machines.\nThread safety now enabled by default for threaded perls.\nEnhanced code for MULTIPLICITY/PERLOBJECT from ActiveState.\nEnhanced preparecached() method.\nMinor changes to trace levels (less internal info at level 2).\nTrace log now shows \"!! ERROR...\" before the \"<- method\" line.\nDBI->connect() now warn's if user / password is undefined and\nDBIUSER / DBIPASS environment variables are not defined.\nThe t/proxy.t test now ignores any /etc/dbiproxy.conf file.\nAdded portability fixes for MacOS from Chris Nandor.\nUpdated mailing list address from fugue.com to isc.org.\n"
                },
                {
                    "name": "Changes in DBI 1.08,\t12th May 1999",
                    "content": "Much improved DBD::ADO driver thanks to Phlip Plumlee and others.\nConnect now allows you to specify attribute settings within the DSN\nE.g., \"dbi:Driver(RaiseError=>1,Taint=>1,AutoCommit=>0):dbname\"\nThe $h->{Taint} attribute now also enables taint checking of\narguments to almost all DBI methods.\nImproved trace output in various ways.\nFixed bug where $sth->{NAMExx} was undef in some situations.\nFixed code for MULTIPLICITY/PERLOBJECT thanks to Alex Smishlajev.\nFixed and documented DBI->connectcached.\nWorkaround for Cygwin32 build problem with help from Jong-Pork Park.\nbindcolumns no longer needs undef or hash ref as first parameter.\n"
                },
                {
                    "name": "Changes in DBI 1.07,\t6th May 1999",
                    "content": "Trace output now shows contents of array refs returned by DBI.\nChanged names of some result columns from typeinfo, typeinfoall,\ntables and tableinfo to match ODBC 3.5 / ISO/IEC standards.\nMany fixes for DBD::Proxy and ProxyServer.\nFixed error reporting in installdriver.\nMajor enhancement to DBI::W32ODBC from Patrick Hollins.\nAdded $h->{Taint} to taint fetched data if tainting (perl -T).\nAdded code for MULTIPLICITY/PERLOBJECT contributed by ActiveState.\nAdded $sth->moreresults (undocumented for now).\n"
                },
                {
                    "name": "Changes in DBI 1.06,\t6th January 1999",
                    "content": "Fixed Win32 Makefile.PL problem in 1.04 and 1.05.\nSignificant DBD::Proxy enhancements and fixes\nincluding support for bindparaminout (Jochen and I)\nAdded experimental DBI->connectcached method.\nAdded $sth->{NAMEuc} and $sth->{NAMElc} attributes.\nEnhanced fetchrowhashref to take an attribute name arg.\n"
                },
                {
                    "name": "Changes in DBI 1.05,\t4th January 1999",
                    "content": "Improved DBD::ADO connect (thanks to Phlip Plumlee).\nImproved thread safety (thanks to Jochen Wiedmann).\n[Quick release prompted by truncation of copies on CPAN]\n"
                },
                {
                    "name": "Changes in DBI 1.04,\t3rd January 1999",
                    "content": "Fixed error in Driver.xst. DBI build now tests Driver.xst.\nRemoved unused variable compiler warnings in Driver.xst.\nDBI::DBD module now tested during DBI build.\nFurther clarification in the DBI::DBD driver writers manual.\nAdded optional name parameter to $sth->fetchrowhashref.\n"
                },
                {
                    "name": "Changes in DBI 1.03,\t1st January 1999",
                    "content": "Now builds with Perl>=5.00554 (PERLPOLLUTE in DBIXS.h)\nDBI trace trims path from \"at yourfile.pl line nnn\".\nTrace level 1 now shows statement passed to prepare.\nAssorted improvements to the DBI manual.\nAssorted improvements to the DBI::DBD driver writers manual.\nFixed $dbh->quote prototype to include optional $datatype.\nFixed $dbh->preparecached problems.\n$dbh->selectrowarray behaves better in scalar context.\nAdded a (very) experimental DBD::ADO driver for Win32 ADO.\nAdded experimental thread support (perl Makefile.PL -thread).\nUpdated the DBI::FAQ - thanks to Alligator Descartes.\nThe following changes were implemented and/or packaged\nby Jochen Wiedmann - thanks Jochen:\nAdded a Bundle for CPAN installation of DBI, the DBI proxy\nserver and prerequisites (lib/Bundle/DBI.pm).\nDBI->availabledrivers uses File::Spec, if available.\nThis makes it work on MacOS. (DBI.pm)\nModified typeinfo to work with read-only values returned\nby typeinfoall. (DBI.pm)\nAdded handling of magic values in $sth->execute,\n$sth->bindparam and other methods (Driver.xst)\nAdded Perl's CORE directory to the linkers path on Win32,\nrequired by recent versions of ActiveState Perl.\nFixed DBD::Sponge to work with empty result sets.\nComplete rewrite of DBI::ProxyServer and DBD::Proxy.\n"
                },
                {
                    "name": "Changes in DBI 1.02,\t2nd September 1998",
                    "content": "Fixed DBI::Shell including @ARGV and /current.\nAdded basic DBI::Shell test.\nRenamed DBI::Shell /display to /format.\n"
                },
                {
                    "name": "Changes in DBI 1.01,\t2nd September 1998",
                    "content": "Many enhancements to Shell (with many contributions from\nJochen Wiedmann, Tom Lowery and Adam Marks).\nAssorted fixes to DBD::Proxy and DBI::ProxyServer.\nTidied up trace messages - trace(2) much cleaner now.\nAdded $dbh->{RowCacheSize} and $sth->{RowsInCache}.\nAdded experimental DBI::Format (mainly for DBI::Shell).\nFixed fetchallarrayref($slicehash).\nDBI->connect now honours PrintError=1 if connect fails.\nAssorted clarifications to the docs.\n"
                },
                {
                    "name": "Changes in DBI 1.00,\t14th August 1998",
                    "content": "The DBI is no longer 'alpha' software!\nAdded $dbh->tables and $dbh->tableinfo.\nDocumented \\%attr arg to datasources method.\nAdded $sth->{TYPE}, $sth->{PRECISION} and $sth->{SCALE}.\nAdded $sth->{Statement}.\nDBI::Shell now uses neatlist to print results\nIt also escapes \"'\" chars and converts newlines to spaces.\n"
                },
                {
                    "name": "Changes in DBI 0.95,\t10th August 1998",
                    "content": "WARNING: THIS IS AN EXPERIMENTAL RELEASE!\n\nFixed 0.94 slip so it will build on pre-5.005 again.\nAdded DBIAUTOPROXY environment variable.\nArray ref returned from fetch/fetchrowarrayref now readonly.\nImproved connect error reporting by DBD::Proxy.\nAll trace/debug messages from DBI now go to trace file.\n"
                },
                {
                    "name": "Changes in DBI 0.94,\t9th August 1998",
                    "content": "WARNING: THIS IS AN EXPERIMENTAL RELEASE!\n\nAdded DBD::Shell and dbish interactive DBI shell. Try it!\nAny database attribs can be set via DBI->connect(,,, \\%attr).\nAdded getfbav and setfbav methods for Perl driver developers\n(see ExampleP driver for perl usage). Drivers which don't use\none of these methods (either via XS or Perl) are not compliant.\nDBI trace now shows adds \" at yourfile.pl line nnn\"!\nPrintError and RaiseError now prepend driver and method name.\nThe availabledrivers method no longer returns NullP or Sponge.\nAdded $dbh->{Name}.\nAdded $dbh->quote($value, $datatype).\nAdded more hints to installdriver failure message.\nAdded DBD::Proxy and DBI::ProxyServer (from Jochen Wiedmann).\nAdded $DBI::neatmaxlen to control truncation of trace output.\nAdded $dbh->selectallarrayref and $dbh->selectrowarray methods.\nAdded $dbh->tables.\nAdded $dbh->typeinfo and $dbh->typeinfoall.\nAdded $h->tracemsg($msg) to write to trace log.\nAdded @bool = DBI::lookslikenumber(@ary).\nMany assorted improvements to the DBI docs.\n"
                },
                {
                    "name": "Changes in DBI 0.93,\t13th February 1998",
                    "content": "Fixed DBI::DBD::dbdpostamble bug causing 'Driver.xsi not found' errors.\nChanges to handling of 'magic' values in neatsvpv (used by trace).\nexecute (in Driver.xst) stops binding after first bind error.\nThis release requires drivers to be rebuilt.\n"
                },
                {
                    "name": "Changes in DBI 0.92,\t3rd February 1998",
                    "content": "Fixed per-handle memory leak (with many thanks to Irving Reid).\nAdded $dbh->preparecached() caching variant of $dbh->prepare.\nAdded some attributes:\n$h->{Active}       is the handle 'Active' (vague concept) (boolean)\n$h->{Kids}         e.g. number of sth's associated with a dbh\n$h->{ActiveKids}   number of the above which are 'Active'\n$dbh->{CachedKids} ref to preparecached sth cache\nAdded support for general-purpose 'private' attributes.\nAdded experimental support for subclassing the DBI: see t/subclass.t\nAdded SQLALLTYPES to exported :sqltypes.\nAdded dbddbidir() and dbddbiarchdir() to DBI::DBD module so that\nDBD Makefile.PLs can work with the DBI installed in non-standard locations.\nFixed 'Undefined value' warning and &svno output from neatsvpv/trace.\nFixed small 'once per interpreter' leak.\nAssorted minor documentation fixes.\n"
                },
                {
                    "name": "Changes in DBI 0.91,\t10th December 1997",
                    "content": "NOTE: This fix may break some existing scripts:\nDBI->connect(\"dbi:...\",$user,$pass) was not setting AutoCommit and PrintError!\nDBI->connect(..., { ... }) no longer sets AutoCommit or PrintError twice.\nDBI->connect(..., { RaiseError=>1 }) now croaks if connect fails.\nFixed $fh parameter of $sth->dumpresults;\nAdded default statement DESTROY method which carps.\nAdded default driver DESTROY method to silence AUTOLOAD/DIE/CGI::Carp\nAdded more SQL* types to %EXPORTTAGS and @EXPORTOK.\nAssorted documentation updates (mainly clarifications).\nAdded workaround for perl's 'sticky lvalue' bug.\nAdded better warning for bindcol(umns) where fields==0.\nFixed to build okay with 5.00454 with or without USETHREADS.\nNote that the DBI has not been tested for thread safety yet.\n"
                },
                {
                    "name": "Changes in DBI 0.90,\t6th September 1997",
                    "content": "Can once again be built with Perl 5.003.\nThe DBI class can be subclassed more easily now.\nInactiveDestroy fixed for drivers using the *.xst template.\nSlightly faster handle creation.\nChanged prototype for dbd**attrib() to add extra param.\nNote: 0.90, 0.89 and possibly some other recent versions have\na small memory leak. This will be fixed in the next release.\n"
                },
                {
                    "name": "Changes in DBI 0.89,\t25th July 1997",
                    "content": "Minor fix to neatsvpv (mainly used for debug trace) to workaround\nbug in perl where SvPV removes IOK flag from an SV.\nMinor updates to the docs.\n"
                },
                {
                    "name": "Changes in DBI 0.88,\t22nd July 1997",
                    "content": "Fixed build for perl5.003 and Win32 with Borland.\nFixed documentation formatting.\nFixed DBIDSN ignored for old-style connect (with explicit driver).\nFixed AutoCommit in DBD::ExampleP\nFixed $h->trace.\nThe DBI can now export SQL type values: use DBI ':sqltypes';\nModified Driver.xst and renamed DBDI.h to dbdxsh.h\n"
                },
                {
                    "name": "Changes in DBI 0.87,\t18th July 1997",
                    "content": "Fixed minor type clashes.\nAdded more docs about placeholders and bind values.\n"
                },
                {
                    "name": "Changes in DBI 0.86,\t16th July 1997",
                    "content": "Fixed failed connect causing 'unblessed ref' and other errors.\nDrivers must handle AutoCommit FETCH and STORE else DBI croaks.\nAdded $h->{LongReadLen} and $h->{LongTruncOk} attributes for BLOBS.\nAdded DBIUSER and DBIPASS env vars. See connect docs for usage.\nAdded DBI->trace() to set global trace level (like per-handle $h->trace).\nPERLDBIDEBUG env var renamed DBIDEBUG (old name still works for now).\nUpdated docs, including commit, rollback, AutoCommit and Transactions sections.\nAdded bindparam method and execute(@bindvalues) to docs.\nFixed fetchallarrayref.\n\nSince the DBIS structure has change the internal version numbers have also\nchanged (DBIXSVERSION == 9 and DBISTATEVERSION == 9) so drivers will have\nto be recompiled. The test is also now more sensitive and the version\nmismatch error message now more clear about what to do. Old drivers are\nlikely to core dump (this time) until recompiled for this DBI. In future\nDBI/DBD version mismatch will always produce a clear error message.\n\nNote that this DBI release contains and documents many new features\nthat won't appear in drivers for some time. Driver writers might like\nto read perldoc DBI::DBD and comment on or apply the information given.\n"
                },
                {
                    "name": "Changes in DBI 0.85,\t25th June 1997",
                    "content": "NOTE: New-style connect now defaults to AutoCommit mode unless\n{ AutoCommit => 0 } specified in connect attributes. See the docs.\nAutoCommit attribute now defined and tracked by DBI core.\nDrivers should use/honour this and not implement their own.\nAdded pod doc changes from Andreas and Jonathan.\nNew DBIDSN env var default for connect method. See docs.\nDocumented the func method.\nFixed \"Usage: DBD::::common::DESTROY\" error.\nFixed bug which set some attributes true when there value was fetched.\nAdded new internal DBIcset() macro for drivers to use.\n"
                },
                {
                    "name": "Changes in DBI 0.84,\t20th June 1997",
                    "content": "Added $h->{PrintError} attribute which, if set true, causes all errors to\ntrigger a warn().\nNew-style DBI->connect call now automatically sets PrintError=1 unless\n{ PrintError => 0 } specified in the connect attributes. See the docs.\nThe old-style connect with a separate driver parameter is deprecated.\nFixed fetchrowhashref.\nRenamed $h->debug to $h->trace() and added a trace filename arg.\nAssorted other minor tidy-ups.\n"
                },
                {
                    "name": "Changes in DBI 0.83,\t11th June 1997",
                    "content": "Added driver specification syntax to DBI->connect datasource\nparameter: DBI->connect('dbi:driver:...', $user, $passwd);\nThe DBI->datasources method should return datasource\nnames with the appropriate 'dbi:driver:' prefix.\nDBI->connect will warn if \\%attr is true but not a hash ref.\nAdded the new fetchrow methods:\n@rowary  = $sth->fetchrowarray;\n$aryref  = $sth->fetchrowarrayref;\n$hashref = $sth->fetchrowhashref;\nThe old fetch and fetchrow methods still work.\nDriver implementors should implement the new names for\nfetchrowarray and fetchrowarrayref ASAP (use the xs ALIAS:\ndirective to define aliases for fetch and fetchrow).\nFixed occasional problems with t/examp.t test.\nAdded automatic errstr reporting to the debug trace output.\nAdded the DBI FAQ from Alligator Descartes in module form for\neasy reading via \"perldoc DBI::FAQ\". Needs reformatting.\nUnknown driver specific attribute names no longer croak.\nFixed problem with internal neatsvpv macro.\n"
                },
                {
                    "name": "Changes in DBI 0.82,\t23rd May 1997",
                    "content": "Added $h->{RaiseError} attribute which, if set true, causes all errors to\ntrigger a die(). This makes it much easier to implement robust applications\nin terms of higher level eval { ... } blocks and rollbacks.\nAdded DBI->datasources($driver) method for implementation by drivers.\nThe quote method now returns the string NULL (without quotes) for undef.\nAdded VMS support thanks to Dan Sugalski.\nAdded a 'quick start guide' to the README.\nAdded neatsvpv function pointer to DBIS structure to make it available for\nuse by drivers. A macro defines neatsvpv(sv,len) as (DBIS->neatsvpv(sv,len)).\nOld XS macro SVYESNO changes to standard boolSV.\nSince the DBIS structure has change the internal version numbers have also\nchanged (DBIXSVERSION == 8 and DBISTATEVERSION == 8) so drivers will have\nto be recompiled.\n"
                },
                {
                    "name": "Changes in DBI 0.81,\t7th May 1997",
                    "content": "Minor fix to let DBI build using less modern perls.\nFixed a suprious typo warning.\n"
                },
                {
                    "name": "Changes in DBI 0.80,\t6th May 1997",
                    "content": "Builds with no changes on NT using perl5.00399 (with thanks to Jeffrey Urlwin).\nAutomatically supports Apache::DBI (with thanks to Edmund Mergl).\nDBI scripts no longer need to be modified to make use of Apache::DBI.\nAdded a ping method and an experimental connecttestperf method.\nAdded a fetchhash and fetchall methods.\nThe func method no longer pre-clears err and errstr.\nAdded ChopBlanks attribute (currently defaults to off, that may change).\nSupport for the attribute needs to be implemented by individual drivers.\nReworked tests into standard t/*.t form.\nAdded more pod text.  Fixed assorted bugs.\n"
                },
                {
                    "name": "Changes in DBI 0.79,\t7th Apr 1997",
                    "content": "Minor release. Tidied up pod text and added some more descriptions\n(especially disconnect). Minor changes to DBI.xs to remove compiler\nwarnings.\n"
                },
                {
                    "name": "Changes in DBI 0.78,\t28th Mar 1997",
                    "content": "Greatly extended the pod documentation in DBI.pm, including the under\nused bindcolumns method. Use 'perldoc DBI' to read after installing.\nFixed $h->err. Fetching an attribute value no longer resets err.\nAdded $h->{InactiveDestroy}, see documentation for details.\nImproved debugging of cached ('quick') attribute fetches.\nerrstr will return err code value if there is no string value.\nAdded DBI/W32ODBC to the distribution. This is a pure-perl experimental\nDBI emulation layer for Win32::ODBC. Note that it's unsupported, your\nmileage will vary, and bug reports without fixes will probably be ignored.\n"
                },
                {
                    "name": "Changes in DBI 0.77,\t21st Feb 1997",
                    "content": "Removed erroneous $h->errstate and $h->errmsg methods from DBI.pm.\nAdded $h->err, $h->errstr and $h->state default methods in DBI.xs.\nUpdated informal DBI API notes in DBI.pm. Updated README slightly.\nDBIXS.h now correctly installed into INSTARCHAUTODIR.\n(DBD authors will need to edit their Makefile.PL's to use\n-I$(INSTALLSITEARCH)/auto/DBI -I$(INSTALLSITEARCH)/DBI)\n"
                },
                {
                    "name": "Changes in DBI 0.76,\t3rd Feb 1997",
                    "content": "Fixed a compiler type warnings (pedantic IRIX again).\n"
                },
                {
                    "name": "Changes in DBI 0.75,\t27th Jan 1997",
                    "content": "Fix problem introduced by a change in Perl5.003XX.\nUpdated README and DBI.pm docs.\n"
                },
                {
                    "name": "Changes in DBI 0.74,\t14th Jan 1997",
                    "content": "Dispatch now sets dbidebug to the level of the current handle\n(this makes tracing/debugging individual handles much easier).\nThe '>> DISPATCH' log line now only logged at debug >= 3 (was 2).\nThe $csr->NUMOFFIELDS attribute can be set if not >0 already.\nYou can log to a file using the env var PERLDBIDEBUG=/tmp/dbi.log.\nAdded a type cast needed by IRIX.\nNo longer sets perldestructlevel unless debug set >= 4.\nMake compatible with PerlIO and sfio.\n"
                },
                {
                    "name": "Changes in DBI 0.73,\t10th Oct 1996",
                    "content": "Fixed some compiler type warnings (IRIX).\nFixed DBI->internal->{DebugLog} = $filename.\nMade debug log file unbuffered.\nAdded experimental bindparaminout method to interface.\nUsage: $dbh->bindparaminout($param, \\$value, $maxlen [, \\%attribs ])\n(only currently used by DBD::Oracle at this time.)\n"
                },
                {
                    "name": "Changes in DBI 0.72,\t23 Sep 1996",
                    "content": "Using an undefined value as a handle now gives a better\nerror message (mainly useful for emulators like Oraperl).\n$dbh->do($sql, @params) now works for binding placeholders.\n"
                },
                {
                    "name": "Changes in DBI 0.71,\t10 July 1996",
                    "content": "Removed spurious abort() from invalid handle check.\nAdded quote method to DBI interface and added test.\n"
                },
                {
                    "name": "Changes in DBI 0.70,\t16 June 1996",
                    "content": "Added extra invalid handle check (dbihgetcom)\nFixed broken $dbh->quote method.\nAdded check for old GCC in Makefile.PL\n"
                },
                {
                    "name": "Changes in DBI 0.69",
                    "content": "Fixed small memory leak.\nClarified the behaviour of DBI->connect.\n$dbh->do now returns '0E0' instead of 'OK'.\nFixed \"Can't read $DBI::errstr, lost last handle\" problem.\n"
                },
                {
                    "name": "Changes in DBI 0.68,\t2 Mar 1996",
                    "content": "Changes to suit perl5.002 and sitelib directories.\nDetects old versions ahead of new in @INC.\n"
                },
                {
                    "name": "Changes in DBI 0.67,\t15 Feb 1996",
                    "content": "Trivial change to test suite to fix a problem shown up by the\nPerl5.002gamma release Test::Harness.\n"
                },
                {
                    "name": "Changes in DBI 0.66,\t29 Jan 1996",
                    "content": "Minor changes to bring the DBI into line with 5.002 mechanisms,\nspecifically the xs/pm VERSION checking mechanism.\nNo functionality changes. One no-last-handle bug fix (rare problem).\nRequires 5.002 (beta2 or later).\n"
                },
                {
                    "name": "Changes in DBI 0.65,\t23 Oct 1995",
                    "content": "Added $DBI::state to hold SQL CLI / ODBC SQLSTATE value.\nSQLSTATE \"00000\" (success) is returned as \"\" (false), all else is true.\nIf a driver does not explicitly initialise it (via $h->{State} or\nDBIcSTATE(impxxh) then $DBI::state will automatically return \"\" if\n$DBI::err is false otherwise \"S1000\" (general error).\nAs always, this is a new feature and liable to change.\n\nThe is *no longer* a default error handler!\nYou can add your own using push(@{$h->{Handlers}}, sub { ... })\nbut be aware that this interface may change (or go away).\n\nThe DBI now automatically clears $DBI::err, errstr and state before\ncalling most DBI methods. Previously error conditions would persist.\nAdded DBIhCLEARERROR(impxxh) macro.\n\nDBI now EXPORTOK's some utility functions, neat($value),\nneatlist(@values) and dumpresults($sth).\n\nSlightly enhanced t/min.t minimal test script in an effort to help\nnarrow down the few stray core dumps that some porters still report.\n\nRenamed readblob to blobread (old name still works but warns).\nAdded default blobcopytofile method.\n\nAdded $sth = $dbh->tables method. This returns an $sth for a query\nwhich has these columns: TABLECATALOGUE, TABLEOWNER, TABLENAME,\nTABLETYPE, REMARKS in that order. The TABLECATALOGUE column\nshould be ignored for now.\n"
                },
                {
                    "name": "Changes in DBI 0.64,\t23 Oct 1995",
                    "content": "Fixed 'disconnect invalidates 1 associated cursor(s)' problem.\nDrivers using DBIcACTIVEon/off() macros should not need any changes\nother than to test for DBIcACTIVEKIDS() instead of DBIcKIDS().\nFixed possible core dump in dbihclearcom during global destruction.\n"
                },
                {
                    "name": "Changes in DBI 0.63,\t1 Sep 1995",
                    "content": "Minor update. Fixed uninitialised memory bug in method\nattribute handling and streamlined processing and debugging.\nRevised usage definitions for bind* methods and readblob.\n"
                },
                {
                    "name": "Changes in DBI 0.62,\t26 Aug 1995",
                    "content": "Added method redirection method $h->func(..., $methodname).\nThis is now the official way to call private driver methods\nthat are not part of the DBI standard.  E.g.:\n@ary = $sth->func('oratypes');\nIt can also be used to call existing methods. Has very low cost.\n\n$sth->bindcol columns now start from 1 (not 0) to match SQL.\n$sth->bindcolumns now takes a leading attribute parameter (or undef),\ne.g., $sth->bindcolumns($attribs, \\$col1 [, \\$col2 , ...]);\n\nAdded handy DBDATTRIBSCHECK macro to vet attribs in XS.\nAdded handy DBDATTRIBGETSVP, DBDATTRIBGETBOOL and\nDBDATTRIBGETIV macros for handling attributes.\n\nFixed STORE for NUMOFFIELDS and NUMOFPARAMS.\nAdded FETCH for NUMOFFIELDS and NUMOFPARAMS.\n\nDispatch no longer bothers to call untie().\nFaster startup via installmethod/adddispatch changes.\n"
                },
                {
                    "name": "Changes in DBI 0.61,\t22 Aug 1995",
                    "content": "Added $sth->bindcol($column, \\$var [, \\%attribs ]);\n\nThis method enables perl variable to be directly and automatically\nupdated when a row is fetched. It requires no driver support\n(if the driver has been written to use DBIS->getfbav).\nCurrently \\%attribs is unused.\n\nAdded $sth->bindcolumns(\\$var [, \\$var , ...]);\n\nThis method is a short-cut for bindcol which binds all the\ncolumns of a query in one go (with no attributes). It also\nrequires no driver support.\n\nAdded $sth->bindparam($parameter, $var [, \\%attribs ]);\n\nThis method enables attributes to be specified when values are\nbound to placeholders. It also enables binding to occur away\nfrom the execute method to improve execute efficiency.\nThe DBI does not provide a default implementation of this.\nSee the DBD::Oracle module for a detailed example.\n\nThe DBI now provides default implementations of both fetch and\nfetchrow.  Each is written in terms of the other. A driver is\nexpected to implement at least one of them.\n\nMore macro and assorted structure changes in DBDXS.h. Sorry!\nThe old dbihcom definitions have gone. All fields have macros.\nThe impxxht type is now used within the DBI as well as drivers.\nDrivers must set DBIcNUMFIELDS(impsth) and DBIcNUMPARAMS(impsth).\n\ntest.pl includes a trivial test of bindparam and bindcolumns.\n"
                },
                {
                    "name": "Changes in DBI 0.60,\t17 Aug 1995",
                    "content": "This release has significant code changes but much less\ndramatic than the previous release. The new implementors data\nhandling mechanism has matured significantly (don't be put off\nby all the struct typedefs in DBIXS.h, there's just to make it\neasier for drivers while keeping things type-safe).\n\nThe DBI now includes two new methods:\n\ndo            $dbh->do($statement)\n\nThis method prepares, executes and finishes a statement. It is\ndesigned to be used for executing one-off non-select statements\nwhere there is no benefit in reusing a prepared statement handle.\n\nfetch         $arrayref = $sth->fetch;\n\nThis method is the new 'lowest-level' row fetching method. The\nprevious @row = $sth->fetchrow method now defaults to calling\nthe fetch method and expanding the returned array reference.\n\nThe DBI now provides fallback attribute FETCH and STORE functions\nwhich drivers should call if they don't recognise an attribute.\n\nTHIS RELEASE IS A GOOD STARTING POINT FOR DRIVER DEVELOPERS!\nStudy DBIXS.h from the DBI and Oracle.xs etc from DBD::Oracle.\nThere will be further changes in the interface but nothing\nas dramatic as these last two releases! (I hope :-)\n"
                },
                {
                    "name": "Changes in DBI 0.59\t15 Aug 1995",
                    "content": "NOTE: THIS IS AN UNSTABLE RELEASE!\n\nMajor reworking of internal data management!\nPerformance improvements and memory leaks fixed.\nAdded a new NullP (empty) driver and a -m flag\nto test.pl to help check for memory leaks.\nStudy DBD::Oracle version 0.21 for more details.\n(Comparing parts of v0.21 with v0.20 may be useful.)\n"
                },
                {
                    "name": "Changes in DBI 0.58\t21 June 1995",
                    "content": "Added DBI->internal->{DebugLog} = $filename;\nReworked internal logging.\nAdded $VERSION.\nMade disconnectall a compulsory method for drivers.\n"
                }
            ]
        },
        "ANCIENT HISTORY": {
            "content": "12th Oct 1994: First public release of the DBI module. (for Perl 5.000-beta-3h)\n\n19th Sep 1994: DBperl project renamed to DBI.\n\n29th Sep 1992: DBperl project started.\n",
            "subsections": []
        }
    },
    "summary": "DBI::Changes - List of significant changes to the DBI",
    "flags": [],
    "examples": [],
    "see_also": []
}