Revision history for Perl extension DBD::Mock.

1.59 2021-02-22T13:25:52Z
    - Added error detection for when a result set's callback doesn't return
      an arrayref or arrayrefs
    - Moved to GitLab for issue tracking

1.58 2020-11-02T13:34:48Z
    - Added the ability for mock result sets to set custom attributes for
      statement handles. Thanks to Erik Huelsmann for testing the new feature.

1.57 2020-09-18T06:57:48Z
    - Fixed bug rt133358 t/016_mock_add_resultset_test.t fails (with older DBI)

1.56 2020-09-17T14:35:10Z
    - The DBD::st module now supports the last_insert_id method
    - Result sets with callbacks can now specify a last_insert_id

1.55 2019-12-30T14:20:00Z
    - Fixed bug rt131264 t/033_table_info.t fails (with older DBI)

1.54 2019-12-23T12:44:22Z
    - Added Bernhard Graf's 'Feature: one shot failure' merge request.
    - Fixed description of the failure attribute of mock_add_resultset. It
      no longer claims to support a hash ref (as it doesn't). Thanks to
      Bernhard Graf for both the bug report and a merge request that fixes it.
    - Fixed bug where it wasn't possible to replace a regular expression 
      mock resultset. Thanks to Bernhard Graf for both the bug report and
      a merge request that fixes it.
    - Fixed bug where the failure attribute wasn't working with regular
      expression mock resultsets. Thanks to Bernhard Graf for both the bug
      report and a merge request that fixes it.

1.53 2019-12-03T10:50:57Z
    - Error handling in mock_add_resultset is no longer experimental
    - Attribute Aliasing is no longer experimental

1.52 2019-10-28T11:35:41Z
    - Added in callback feature for result sets so that their contents
      can be more dynamic.

1.51 2019-10-23T11:43:51Z
    - Fixed issue with using attribute aliases alongside a driver DSN
      in the DBI->connect call

1.50 2019-10-22T19:37:26Z
    - Added attribute aliases support for MariaDB

1.49 2019-09-12T12:59:51Z
    - Fixing tests that fail on some old versions of Perl

1.48 2019-09-12T06:34:47Z
    - Added execution_history feature to enable tracking of multiple
      executes for prepared statements.
    - Added support for $dbh->table_info calls
    - Fixed bug rt91055 "insert IGNORE" doesn't raise last_insert_id
    - Fixed bug rt82243 Bug with Regex in DBD::Mock::Session

1.47 2019-09-06T10:03:39Z
    - Applied Max Carey's patch from rt86294 adding support for
      nested keys to fetchall_hashref
    - Added experimental Connection Callbacks feature
    - Fixed build for Perl v5.8

1.46 2019-09-04T12:02:08Z
    - Added git-repo url to meta-data
    - Fixed bug rt70587 Spelling Mistake
    - Added regex support to mock_add_resultset

1.45 October 22, 2012
    - Extended DBD::Mock::Session functionality
    - Added bind_param_array() to mocked statements
    - Added execute_array() to mocked statements

1.43 August 29, 2011
    - Segregated into different packages
    - Removed code coverage from POD
    - Fixed bug rt49537 Basic support for named parameters
    - Fixed bug rt70421 Build.PL now contains Test::Exception

1.42 August 7, 2011
    - Fixed bug rt66815 DBD::Mock::Session error clobbered
    - Fixed bug rt69460 Info on META.yml is outdated
    - Fixed bug rt69055 Spelling mistakes in POD
    - RaiseError now works

1.41 June 22, 2011
    - Changed incorrect verion number

1.40 June 19, 2011
    - Fixed bug rt44591 second preapre giving an error
    - Fixed bug rt57981 warnings during clone
    - Fixed bug rt63191 Synopsis errors
    - Fixed bug rt66813 Google's group link in the POD

1.39 November 9, 2008
    - If a statement handle had bound columns, then the fetch() and
      fetchrow_arrayref() methods never returned false. After they
      exhausted their data, they kept returning empty array
    - Hid all packaged but DBD::Mock from PAUSE.

1.38 November 8, 2008
    - Bumped minimum Perl to 5.8.1, since that's what DBI requires.
    - Fixed incorrect use of no_plan in t/025_mock_last_insert_id.t.
    - The handling of attributes passed to the constructor was not
      correct. The major symptom was that attributes (such as
      RaiseError) which were passed to the constructor could not be
      overridden in the database handle which was returned from
      connect(). As a result, some attributes set to a false value may
      return '' instead of 0.

1.37 June 12, 2008
    - New co-maintainer (aka sucker), Dave Rolsky
    - Added support for $sth->bind_col() and $sth->bind_cols()
    - Fixed and clarified docs for the mock_last_insert_id and
      mock_start_insert_id attributes. The previous docs were both
      wrong and confusing
    - Applied patch from RT #35145 to add support for the Column
      attribute with selectcol_arrayref
      - patch by Matt Lawrence

1.36 October 18, 2007
    - $dbh->last_insert_id() now works as documented
    - Added a "use 5.006;" in order to put a safeguard on the "use warnings;"
      statement a little further down.

1.35 July 9, 2007
    - Applying path from RT #16951 to return 
      new result set for repeated calls to 
      $sth->execute(). Thanks to Marc Beyer for this.
        - added tests for this
    - Fixing RT #25892 to make mock_records method 
      work correctly.
        - added test for this
    - applying patch from RT #26604 to fix AutoCommit 
      behavior. Thanks to Ryan Gerry for this.

1.34 July, 29 2006 
    - Fixed how AutoCommit is handled to avoid $dbh caching (RobK) 
    - Thanks to Chas Owens for patch and test 
      for the mock_can_prepare, mock_can_execute, 
      and mock_can_fetch features.

1.32 Wed Dec 14, 2005
    - Fixed RT Bug #15599
    - Fixed RT Bug #15602
    - converted to Module::Build
        - removed the VERSION file, and adjusted the numbers
          in all places needed    

    - added patch from Andrew W. Gibbs to allow the ARRAY 
      version of 'mock_last_insert_id' attribute
        - added test file as well
        - added docs on it too
    - $sth->execute now returns the number of rows as per the 
      DBI docs
        - added some tests for this
    >> DBD::Mock::Session
        - now allows regexp's in the bound_params list
          so that you can check your params are 'like' 
          something, and not exactly something
        - Improved error messages

0.28 Wen July 13, 2005
    - update to patch from Andrew McHarg <>
      to fix behavior in selectcol_arrayref() methods and tests
    - fix version in META.yml
    - some refactoring of fetchall_hashref(), fetchrow_hashref()
      to incorporate DBD-Mock error handling.

0.27 Mon July 11, 2005
    - added NULL_RESULTSET constant
    - now allowing errors to be set with mock_add_resultset.
      Support is currently experimental, see the file
      't/023_statement_failure.t' and the EXPERIMENTAL section
      of the docs for more information.
    - added patch from Collin Winter to fix a bug in 
      the begin_work(), commit() and rollback() methods
    - added patch from Andrew McHarg <> for 
      the fetchall_hashref(), fetchrow_hashref() and
      selectcol_arrayref() methods and tests

0.26 Fri Apr 08 2005
    - added Rob Kinyon to the AUTHORS list 
    - added get_info() and set_info() 
        - added tests for this
    - added bind_param_inout() for DBD::Mock::st 
      code from Thilo Planz (Thanks Thilo)
        - added tests for this
    - added mock_data_sources and mock_add_data_sources 
      properties for the Driver and Database handles
        - added tests and docs for this
    - added begin_work(), commit() and rollback() method
      implementations which wrap the prepare() method and
      deal with the AutoCommit value per the DBI spec.
        - added tests and docs for this

0.25 Sat Feb 26 2005
    - removed the DBD::Mock::_error_handler routine
      since it was actually redundant with the DBI::set_err
      method. This was actually the source of the RT Bug #11515
      which was found by Shlomi Fish (thanks Shlomi)
        - adjusted some tests for this fix

0.24 Fri Jan 28 2005
    - added the reset() method to the DBD::Mock::Session
      object so that a session can be used more than once.
        - added tests for this
        - added docs for this
    - fixed a bug where the HASH version of 'mock_add_resultset'
      would consume the result sets and they would not be 
      reusable. We now copy the result sets so that every time
      the statement is called the same results are returned
        - did not need to add docs for this, they already 
          documented this as the behavior (hence calling this
          a bug)
        - added tests for this

0.23 Tues Jan 25 2005
    - removed the trace log tests from t/10_db_handle.t
      since they seemed to be a source of issues on Win32.
      My rationale is that it is a DBI thing, and therefore
      does not need to be tested by DBD::Mock. 

    - added a few more tests to t/11_dr_handle.t to test the
      'mock_connect_fail' feature
    - added some clarification in the docs about the 
      'mock_connect_fail' feature as well.

0.22 Mon Jan 24 2005
    - added the 'mock_connect_fail' boolean attribute 
      for the DBD::Mock driver handle, this will prevent
      DBI from connecting. It can be used to simulate a
      bad DSN or something like that. 
        - added tests and documentation for this.
        - Thanks to Justin DeVuyst for this idea.

0.21 Sun Jan 16 2005
    > DBD::Mock::Session
    - added the optional 'bound_params' slot for the 
      DBD::Mock::Session object
        - added tests for this
        - added documentation for this
    - added error to handle cases where there are not 
      enough states in a DBD::Mock::Session object.
        - added tests for this
        - added documentation for this
    - added the ability to remove a session (by setting
      it to a false value)
        - added tests for this
        - added documenation for this

    > DBD::Mock

    - added test to check about overwriting hash-based 
      result sets with 'mock_add_resultset' attribute
        - added documentation for this

0.20 Fri Jan 14 2005
    - Modified a set of tests in t/10_db_handle.t to pass on Cygwin.
      Thanks to Rob Kinyon for this code. This code now uses File::Temp
      to make the temp log file in a cross platform manner. If File::Temp
      is not found on the system, then the tests are skipped.
0.19 Fri Jan 7 2005
    - changed the VERSION in lib/DBD/ to be 1.23, allow me to explain...
      Chris Winters (the original author ) used the CVS derived 
      VERSION, which when I took over the module (8 versions ago) 
      was at 1.15. Since I was not using Chris's CVS repo to store this
      I decided to give the VERSION number found in the VERSION
      Well,... PAUSE's indexer doesn't like it since it is a lower
      number and would complain every time I uploaded a new version.
      I ignored these complaints (at my own peril) until now. 
      I found out recently that if you had version 0.11 or below installed 
      (where the was version 1.15 or below), then installing through  
      the CPAN shell would tell you DBD::Mock was up to date, even though it 
      wasn't. So in order to fix this issue, and make sure that all those who
      want to install and update DBD::Mock easily, I changed the version
      number of DBD::Mock to be 1.23 to reflect the number of updates
      I have done since Chris handed it over to me. 
      Okay good, thats off my chest now.

0.18 Wed Jan 5 2005
    - added reset() method to the 
      DBD::Mock::StatementTrack::Iterator object
        - added test and docs for this
    - added the DBD::Mock::Session object and added
      the support for it in the DBD::Mock driver
        - added tests and docs for this
        - Thanks to Rob Kinyon and Chris Winters for 
          their feedback on this feature

    - some general POD cleanup and formatting

0.17 Thurs Nov 4 2004
    - added the following items:
        - a 'mock_num_rows' attribute which will give you 
          the number of records affected/returned by the
          last statement
        - a num_rows method in the DBD::Mock::StatementTrack 
          object, which is where the above attribute gets it's
    - added the 'rows' method for statement handles (which didnt
      work before)

0.16 Sat Oct 30 2004
    - minor change to the DBD::Mock::StatementTrack::Iterator
      behavior. It no longer derefs the history array, so it
      maintains a reference to it and therefore can be used like
      This prevents the need to re-fetch the iterator after 
      each query. 

0.15 Fri Oct 29 2004
    - added the DBD::Mock::StatementTrack::Iterator
      object which can be accessed from the 
      'mock_all_history_iterator' attribute. 
        - write the docs and test for it

0.14 Fri Oct 29 2004
    - added the mock_last_insert_id attribute
      which will get incremented upon each INSERT
      query run. 
        - added tests and docs for this
    - added the mock_start_insert_id attirbute
      so that you can both reset and set the start
      number for mock_last_insert_id
        - added tests and docs for this
    ** EXPERIMENTAL FEATURE (use caution) **
    - added a feature to alias attributes. Basically it
      allows you to alias an expected attribute like 
      'mysql_insertid' to something DBD::Mock already has
      like 'mock_last_insert_id'. 
      Right now this feature is highly experimental, and 
      has been added as a first attempt automatically handle
      some of the DBD specific attributes which are commonly
      used/accessed in DBI programming. 

0.13 Thurs Oct 28 2004
    - added prepare_cached as suggested by Rob Kinyon 
      in RT bug #7331. Also added his test script in

0.12 Thurs Sept 2 2004
** First version maintained by Stevan Little <> **
    - built up the test suite to 89.7% coverage
    - removed the undocumented 'mock_auto_commit' since it really
      was not very useful at this point.
    - added the DBD::Mock::Pool functionality
        - added tests for this
        - added documentation for this
    - added pod.t to test suite
    - removed AUTOLOAD in DBD::Mock::StatementTrack and replaced it with
      hand coded methods (sorry I really dislike AUTOLOAD)
    - centralized error handling in DBD::Mock::_error_handler

0.11  Fri Jul 23 10:35:13 EDT 2004

      - Fix CPAN Bug #7057: add a no-op 'disconnect_all()' to
      DBD::Mock::dr to support DBI versions earlier than 1.34.

      - Add the ability to create SQL parsers that get fired on a
      prepare(). This way you can ensure your application generates
      correct SQL and have the system fail at the right time. Thanks
      to Rob Kinyon <> for the idea.

0.10  Sat May  8 14:12:39 EDT 2004

      - Incorporate number of patches from Stevan Little to implement
      'mock_can_connect', which allows you to simulate a downed
      database. Add supporting tests for database and statement usage.

      - Add the ability for 'mock_add_resultset' to associate a
      resultset with a particular SQL statement. Thanks to Stevan for
      the idea.

      - Add documentation for database handle property

0.02  Tue Mar  9 12:56:54 EST 2004

      Add 'VERSION' to MANIFEST, thanks to Mike Castle for the note.

0.01  Sun Mar  7 23:24:24 EST 2004

      Initial version spawned from DBD::NullP shipped with the
      DBI. Many thanks much to Tim Bunce for the pointer and the
      original code.