The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for DBIx::Class::Sims (ordered by revision number).

0.500012 Sep 10 2020 12:00:00 PDT
    - MANIFEST fix, from removal of DateTime::Event::Random
    - Removed a handful of un-necessary dependencies
    - Adjust Hash::Merge usage, so we no longer set the global merge
      precedence, but instead use a localized Hash::Merge object

0.500011 Jul 08 2020 20:00:00 PDT
   - Fix syntax error existing in 5.10.1

0.500010 Jul 08 2020 19:00:00 PDT
   - Remove vendoring of DateTime::Event::Random

0.500001 Mar 04 2020 04:00:00 PDT
   - Ooops. I forgot to update the MANIFEST.

0.500000 Feb 29 2020 17:00:00 PDT
   - THIS RELEASE CONTAINS MULTIPLE POTENTIALLY-BREAKING BEHAVIOR CHANGES.
   - Complete revamp of the internal architecture.
     - Most of the private attributes have been renamed.
     - Everything is now an object.
     - Sims-specific wrappers for:
       - DBIC::Source
       - DBIC relationship data structure (hashes and CODE)
   - Retrieving unique rows will raise an error if the row doesn't match the
     provided spec.
     - Set `die_on_unique_mismatch => 0` to disable this
   - Using a type that isn't loaded will raise an error vs a warning.
   - Relationship constraints are now lazily checked.
     - If you say there should be 2 children, Sims will wait until all children
       are created before verifying that the constraint is met
   - Set `value_not` to constrain possible values for a column
     - This can be a scalar or an array.
   - Trace the creation of objects by setting the `object_trace` parameter
     - Trace the topograph as well, if needed, with `topograph_trace`
   - Disable all randomization with the `predictable_values` parameter

0.401000 Jun 09 2019 12:30:00 PDT
   - Provide a nice way to print DateTime objects in SIMS_DEBUG mode.
   - Upgrade Toposort to 0.060000 for `add_dependencies` option

0.400000 May 25 2019 12:30:00 PDT
   - THIS RELEASE CONTAINS A POTENTIALLY BREAKING BEHAVIOR CHANGE.
   - Only process children when a unique constraint is met.
       - This means no parent or value settings are processed. Only children.
   - Fix a nasty bug when the FK is also a UK and there is more than one
     relationship emanating from the child table.
   - Add support for relationships defined by subroutines
       - The assumption that all relationships are single-column is likely to
         have to be dealt with soon. but, not yet.
   - Add SIMS_DEBUG envvar to output useful debugging information.

0.320000 May 11 2019 12:30:00 PDT
   - Handle the case where a FK is also a UK
       - Note: This currently only works for a single-column UK containing the
         FK where there is 1-and-only-1 inverse relationship from the parent
         Anything more complex may be undecidable in all cases.
   - Add method traversal for backreferences
   - strict_mode renamed to ignore_unknown_tables (defaults to false)
   - Add a allow_relationship_column_names option (defaults to false)
   - strict_mode is now a compilation of other options
       - ignore_unknown_tables = false
       - allow_relationship_column_names = false

0.310001 Apr 14 2019 12:30:00 PDT
   - Documentation fixes.

0.310000 Dec 26 2018 14:30:00 PDT
   - THIS RELEASE CONTAINS A POTENTIALLY BREAKING BEHAVIOR CHANGE.
   - Add a strict_mode (defaults to true)
      - Throws an error when a tablename doesn't exist

0.303000 Nov 25 2018 14:30:00 PDT
   - Find the best match including all parentage. (Re-enabled feature)
   - Don't call update() in fix_deferred_fks if no columns are dirty.
   - Ignore inflated columns when looking for a sims spec.

0.302001 Nov 25 2018 13:30:00 PDT
   - Allow a DBIC object to be set to a column, not just a relationship.

0.302000 Nov 11 2018 19:30:00 PDT
   All fixes below graciously provided by ZipRecruiter.
   - Warn when a not-null autoincrement primary key has a value set.
     - Set the allow_pk_set_value parameter to disable the warning.
   - Defer handling of nullable FKs to enable self-referential rows.

0.301000 Nov 26 2017 19:30:00 PDT
   - Remove a section of code that takes parentage into account when looking for
     existing rows. Please see the attached comment for explanation.

0.300900 Nov 12 2017 14:00:00 PDT
   - Fix a bug preventing null_chance from working.
   - Fixes for running tests under 5.26 (was depending on dot-in-INC)

0.300800 Apr 21 2017 19:00:00 PDT
   - Use a hashref instead of a hashrefref when setting a sims-spec within a
     column.
     - This does not conflict with describing a parent's attributes.

0.300700 Apr 10 2017 11:00:00 PDT
   - Allow sim types authors to use a regex to match multiple strings to the same
     type handler.
   - Pass the calculated sims specification into the sim types generator.
      - This will enable types to get access to any overriden sims specification.

0.300600 Mar 05 2017 11:00:00 PDT
   - Pass the runner into the sim types generator.
      - This will enable types to get access to the schema and storage objects.

0.300501 Dec 29 2016 11:00:00 PDT
   - Ensure we are specifying at least one column when inserting into Oracle.

0.300500 Dec 17 2016 18:00:00 PDT
   - Many more column types have default values set when not null.
      - If a column type is unknown, an error will be thrown instead of silently
        failing over to the INSERT statement.

0.300406 Dec 12 2016 18:00:00 PDT
   - Applied pull/26 (Thanks, manwar!)
   - Added a check for accidental recursive creation (aka, self-referential tables).

0.300405 Dec 02 2016 12:00:00 PDT
   - Re-fixed RT#118518 (Thanks SREZIC!)

0.300404 Dec 01 2016 12:00:00 PDT
   - Support arrays for the "value" sim option
     - "values" is now synonymous with "value"
   - Fixed RT#118517, RT#118518 (Thanks SREZIC!)

0.300403 Nov 09 2016 12:00:00 PDT
   - Add a sim_types() method that returns the list of all registered types.

0.300402 Oct 26 2016 19:00:00 PDT
   - Change the default length for not-null varchar from 255 to 1.
   - Check $info->{size} as well as $info->{data_length}.

0.300401 Oct 25 2016 19:00:00 PDT
   - Add a minimum requirement on Data::Printer for np()

0.300400 Oct 24 2016 20:00:00 PDT
   - THIS RELEASE CONTAINS A POTENTIALLY BREAKING CHANGE.
   - NOT NULL columns are now populated, not just those with a sims setting.
       - This no longer throws an error if the column wasn't populated.
       - This will skip columns in PK and UK declarations.
   - Move the "our $VERSION" declaration to within the first 10 lines of lib/DBIx/Class/Sims.pm
       - CPAN hasn't been indexing new versions since 0.300004.
   - Use our own clone() function instead of Clone::Any
       - Clone::Any may disconnect the schema if a Result object is passed in.
   - Reporting of duplicates returns a copy of the row, not the row itself.

0.300300 Sep 04 2016 14:00:00 PDT
   - Tests no longer output randomness (Apparently, p() != np() ... who knew?!)
   - Can provide a number or a hashref for a has_many relationship
   - Can provide the \"Table[idx]" back-reference syntax for belongs_to rels.

0.300204 Aug 05 2016 14:00:00 PDT
   - Support nested relationships when finding existing rows

0.300203 May 24 2016 14:00:00 PDT
   - Add basic capability to follow relationships for finding parentage
   - Add detection of DateTime objects when searching across unique constraints

0.300202 Apr 30 2016 14:00:00 PDT
   - Add missing MANIFEST files (stupid me!)

0.300201 Apr 27 2016 14:00:00 PDT
   - Add a die_on_failure option (defaulting to 1) and returning the error when
     it is not set.

0.300200 Apr 27 2016 08:00:00 PDT
   - Refactor the codebase into a prepper and a runner. The runner will make it
     easier to extend the codebase and add more functionality.
   - Count what is created and return that as $additional->{created}.

0.300102 Apr 05 2016 08:00:00 PDT
   - Fix bug where the check to ensure different parents specifying the same
     child will link to it was too expansive.
   - Warn the seed used when a failure throws an error.
   - Improve test suite output to not show the outputted warning on failure.

0.300101 Apr 01 2016 11:30:00 PDT
   - Fix mistake where I used "limit" instead of "rows" (Thanks gtermars!)

0.300100 Mar 21 2016 09:00:00 PDT
   - THIS RELEASE UPGRADES THE MINIMUM PERL VERSION
   - Upgrade Perl minimum version from 5.8.4 to 5.10.2
     - CPANTS was claiming breakage on 5.8.x and no need to support it
   - Clone the provided arguments because we handle them destructively
   - Enable forcing creation of parents with a __META__ field
   - Use {limit => 1} when searching for the first parent

0.300009 Mar 17 2016 09:00:00 PDT
   - Hoist DateTime-ish strings into DateTime objects as needed.

0.300008 Mar 15 2016 14:00:00 PDT
   - Force a reload from database of all rows returned by load_sims()
   - format all DateTime-like values that are passed in per the storage's
     datetime_parser().

0.300007 Mar 15 2016 12:00:00 PDT
   - Finalize the ordering within create_item.
   - Properly handle the case where a child row specifies a parent that has
     rows of a different child table. (Previously, the child rows would have
     been part of the search for the parent, resulting in a wonky search.)

0.300006 Mar 10 2016 06:00:00 PDT
   - Move the preprocess hook back. This was a horrible change.

0.300005 Mar 09 2016 19:00:00 PDT
   - Move the preprocess hook to before the handling of FKs. This allows for the
     horribly hacky disabling of a FK if your data model requires such things.

0.300004 Mar 05 2016 19:00:00 PDT
   - Add support for looking things up by unique constraints (Thanks, Bluefeet!)

0.300003 Dec 08 2015 19:00:00 PDT
   - Remove MYMETA.yml (RT#108552)

0.300002 Feb 28 2014 06:45:00 PDT
   - Move the null_chance test into xt/ because the way the test is structured
     causes spurious failures.
   - Account for a change in DBD::SQLite's reporting of a NULL constraint
     violation starting in 1.41_01.

0.300001 Feb 27 2014 06:45:00 PDT
   - Upgrade the minimum DBD::SQLite requirement for building because CPANTS is
     throwing failures.

0.300000 Feb 25 2014 08:15:00 PDT
   - THIS RELEASE CONTAINS A BREAKING API CHANGE.
   - The random seed is returned as part of a new optional second value.
      - It may be specified in the call to load_sims.

0.200100 Feb 25 2014 08:15:00 PDT
   - Call toposort as a class method of TopoSort, not as a component method.
   - Allow the load_sims method to be called as a class method of Sims
      - This allows using this class without requiring it as a component.
       (Thanks, Ovid!)

0.200020 Feb 25 2014 08:15:00 PDT
   - Add the ability to set sim info at any time (not just at compile-time).
     (Thanks, Ovid!)

0.200010 Feb 25 2014 08:15:00 PDT
   - Fix a bug where multiply-specified children were not linked properly.

0.200001 Jan 07 2014 14:15:00 PDT
   - Add the missing us_firstname and us_lastname to the ::Types export list
     (Thanks, moltar!)
   - Moved to the proper version numbering (per mst)

0.20 Dec 25 2013 20:00:00 PDT
   - THIS RELEASE CONTAINS A BREAKING API CHANGE.
   - All of these changes are due bug reports from moltar on github.
   - You can now specify the values of the primary key. (Issue #1)
   - The second and third options to load_sims() have been merged into a single
     second option of "options".
     - The constraints parameter is now $options->{constraints}
     - The hooks parameter is now $options->{hooks}
   - There is now a new $options->{toposort} which allows passing options to the
     underlying TopoSort implementation. This is primarily useful for self-
     referential tables.

0.10 Oct 17 2013 19:00:00 PDT
   - THIS RELEASE CONTAINS A BREAKING API CHANGE.
   - The return value from load_sims() now contains the whole $row object, not
     just a hashref of the primary keys.
   - You can now pass in things other than an array of hashes for a resultsource
     in the sim specification.
       - A number, if all you're willing to accept the defaults and sims.
       - A hashref, if you just want one thing.
       - An arrayref (this was the previous API)
       - If you pass in anything else, that resultsource will be skipped.
   - You can now pass in a sim entry instead of a value for a given column.

0.06 Oct 06 2013 08:15:00 PDT
   - Fixed a bug where specifying an auto-generated parent's columns didn't
     actually set the values on the parent.

0.05 Sep 20 2013 17:30:00 PDT
   - Better documentation of the "sim" entry in the column_info
   - Added nullable frequency.
      - This allows control over when a nullable column is null vs. populated.
   - Added the following column types:
      - ip_address

0.04 Sep 20 2013 14:30:00 PDT
   - Split out the included types documentation into its own POD
   - Added "value" as an sim option.
      - This behaves like default_value without requiring a default_value on
        the column.
   - Added the following column types:
      - us_firstname
      - us_lastname
      - email_address
   - us_name uses us_firstname and us_lastname, plus sometimes provides a middle
     initial.

0.03 Sep 20 2013 08:00:00 PDT
   - Added missing files to the MANIFEST
      - Which included this file
   - Added the following column types:
      - us_city

0.02 Sep 19 2013 17:30:00 PDT
   - Removed unneeded import of Data::Dumper
   - set_sim_type() now takes a hashref, not a hash.
      - The documentation in 0.01 was correct, the code was not.
   - Added the following column types:
      - us_address
      - us_county
      - us_name
      - us_phone
      - us_ssntin
      - us_state

0.01 Sep 18 2013 20:00:00 PDT
   - Initial version