                             SQL-Routine
----------------------------------------------------------------------

2005-09-28   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.70.3 (SVN r878).

    * New code file versions are: Routine.pm 0.70.3 and en.pm 0.38.2.

    * From now on, any ordinary 'use [|only ]Foo' statements that appear
    within *.pm files will be located in different places than before; the
    'use' statements for modules that do not export anything, particularly
    object oriented modules, will appear near the top of the file, above
    all package declarations, but just below the use-pragma statements; the
    'use' statements for modules whose exported functions we are using will
    be placed just below the declarations of each package in which the
    relevant exported functions are used.

    * Removed any line-trailing whitespace from all distribution files.

    * Reformatted all code by swapping various string quoting delimiters.

    * Reformatted Routine.pm to un-cuddle all 'else' and 'elsif' blocks.

    * Updated the _set_primary_parent_attribute() method in Routine.pm to
    replace its postfix do-while loop with an equivalent code block
    featuring an ordinary 'while' loop.  Likewise, updated the
    _find_node_by_surrogate_id_remotely() method to replace its postfix
    do-until loop with an equivalent code block featuring an ordinary
    'while' loop.

    * Updated Routine.pm and t_SRT_Util.pm to replace all of their 'unless'
    conditionals with equivalent 'if' conditionals.

    * Updated Routine.pm to rename all of its 'foreach' loops to 'for'.

    * Updated Routine.pm to move its 2 for-loop labels upwards to their own
    lines.

    * Updated Routine.pm to reformat the 1 '|' delimited regular expression
    as a '/' delimited one.

    * Updated Routine.pm to reformat all 14 regular expressions so that
    they use the /x flag.

    * Reformatted all code to change any "if( ... ) {" to "if (...) {".

    * Updated Routine.pm to reformat all 8 'while' like the 'if' were.

    * Added named constants $EMPTY_STR and $INDENT to Routine.pm.

    * Updated Routine.pm to add labels to all un-labeled [next|last|redo]
    statements (22), and their innermost bounding loop controls (15).

    * Reformatted all code so that any uses of the named unary operators
    [defined|ref] no longer have parenthesis around their argument.

    * Updated Routine.pm to reformat 14 uses of 'delete', and 16 uses of
    'exists', and 7 uses of 'scalar', like with 'ref'.

    * Removed 20 superfluous uses of 'scalar' in Routine.pm.

    * Updated Routine.pm to replace 32 "<condition> and return ...;" each
    with "return ... if <condition>;".

    * Updated Routine.pm to replace 37 "<condition> or return ...;" each
    with "return ... if <complement-condition>;".

    * Updated Routine.pm to split up each of 11 "return if !(my $foo =
    ...);" statements into 2, "my $foo = ...;" and "return if !$foo;".

    * Updated Routine.pm to replace 17 "<condition> [and|or] [next|last]
    ...;" with "[next|last] ... if ..." like with 'return'.

    * Updated Routine.pm to replace every "<condition> [and|or]
    $self->_throw ..." each with "$self->_throw ... if
    [<condition>|<complement-condition>]".

    * Updated Routine.pm to replace 17 "if ... return ..." with their
    postfix-if equivalents; t_SRT_Util.pm also had 1 such change.

    * Updated Routine.pm and SRT_11_Circular.t to rearrange (3,2)
    conditional 'die' statements so they have postfix-if conditionals.

    * Updated Routine.pm to rearrange 28 conditional '_throw...' statements
    so they have postfix-if conditionals.

    * Reformatted all code, in Routine.pm, so that any uses of the built-in
    operators or functions named [bless|join|push|shift|splice|unshift] no
    longer have parenthesis around their argument lists; either the parens
    were just removed, or they were moved to surround both the
    operator/function name and its arguments.

    * Updated Routine.pm to reformat all 13 uses of the honorary built-in
    function Scalar::Util::weaken() so it looks like a built-in; for each
    use, the package-name qualifier was removed, as were the parenthesis
    around its lone argument.  Since Scalar::Util exports nothing by
    default, added a 'qw( weaken )' suffix to its 'use' statement.

    * Added new external dependency on the honorary built-in function
    List::Util::first() to Routine.pm.  Then rewrote 4 '(grep { $_ } @)[0]'
    expressions as 'first { $_ } @', in the _build_node_is_child_or_not()
    and valid_node_type_surrogate_id_attributes() functions.

    * Added new external dependency on the honorary built-in function
    List::MoreUtils::first_index() to Routine.pm.  Then rewrote the
    _clear_node_ref_attribute() method to use this function rather than a
    last-terminated for-loop when looking for a child Node in its parent's
    child list.  Specifically, List::MoreUtils versions 0.12 and up are
    required, since versions 0.11 and below didn't export some functions.

    * In Routine.pm, updated the _assert_in_node_deferrable_constraints()
    in several ways: 1. Added a new explicit test that a Node's "id" is
    set, which while redundant now, won't be after a future update; 2. The
    always-mandatory attribute validation test now reports a list of all
    failing attributes, rather than just the first one encountered; 3.
    Rewrote 3 other test blocks to be more concise, using grep statements
    rather than for-with-push loops.  Related to the #2 changes, updated
    en.pm to rename and reword the 'SRT_N_ASDC_MA_VAL_NO_SET' user text
    message to 'SRT_N_ASDC_MA_VALS_NO_SET'; note that the en.pm message for
    #1 was already in en.pm from when what will be was then so.

    * Split up some long lines in en.pm.

    * Updated any DEPENDENCIES documentation to reformat any indented
    sections as paragraphs, and show version ranges like 'only' takes them.

    * Reformatted all code so that every occurance of the string
    concatenation operator (.) has a space between the operator and each of
    its 2 arguments, rather than their all being in contact.  Also
    reformatted any lines that are split on this operator so the operator
    appears at the start of the second line, rather than the end of the
    first line.

    * Reformatted a few multi-line statements so that any [=|and|or] that
    are split on appear at the start of a line rather than the end of one.

    * Reformatted all of the code comments at the top of Routine.pm,
    where its object property names, and constant values, are declared,
    so that all comment lines don't exceed the 75 character line length.

    * In Routine.pm, reformatted 4 cascading ternary statements into
    aligned columns.

    * Other miscellaneous code line alignments and splitting.

2005-09-14   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.70.2 (SVN r813).

    * New code file versions are: Routine.pm 0.70.2.

    * Merged Details.pod into Routine.pm:  The Routine.pm main
    documentation section BRIEF FUNCTION AND METHOD LIST was deleted, and
    all of the significant content of Details.pod was placed in the same
    location.  These 17 main documentation sections were moved from
    Details.pod to Routine.pm: MATTERS OF PORTABILITY AND FEATURES,
    STRUCTURE, RELATING INTERFACE AND STORAGE CLASSES, ABOUT NODE GROUPS,
    "FAULT TOLERANCE, DATA INTEGRITY, AND CONCURRENCY", NODE IDENTITY
    ATTRIBUTES, CONSTRUCTOR WRAPPER FUNCTIONS, CONTAINER CONSTRUCTOR
    FUNCTIONS, CONTAINER OBJECT METHODS, NODE CONSTRUCTOR FUNCTIONS, NODE
    OBJECT METHODS, GROUP CONSTRUCTOR FUNCTIONS, GROUP OBJECT METHODS,
    CONTAINER OR NODE METHODS FOR DEBUGGING, CONTAINER OR NODE FUNCTIONS
    AND METHODS FOR RAPID DEVELOPMENT, INFORMATION FUNCTIONS, OLDER
    DOCUMENTATION.  These 5 remaining Details.pod documentation sections
    were redundant and simply deleted with their now superfluous file:
    NAME, DESCRIPTION, SEE ALSO, AUTHOR, LICENSE AND COPYRIGHT.  Removed
    all references to Details.pod in all other distribution files.

    * Updated Routine.pm and Language.pod to remove all references to
    possible versions of this library that are written in other languages,
    such as C or Parrot/Pugs/Perl 6.  A C version is unlikely to ever
    happen, or by that time these references would be severely out of date,
    and either way they are clutter now.  The Perl 6 version is happening
    now, but since that is a clone of the Perl 5 version, there's no point
    for its documentation to refer to itself as a potential future project.
    In Routine.pm, removed all the code comments for NodeStorage property
    declarations that specify how they would be represented in a C version
    of SQL::Routine.  In Routine.pm, removed the whole main documentation
    section OLDER DOCUMENTATION, whose sole content was details about C
    implementation, and mentions of Perl 6 etc.  In Language.pod, updated
    the NODE ATTRIBUTE TYPES intro paragraph to remove the mention of C
    versions, as well as the mention of there being separate accessor
    methods for each attribute type (not true since r0.68).

2005-09-12   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.70.1 (SVN r808).

    * New code file versions are: Routine.pm 0.70.1 and en.pm 0.38.1.

    * Updated all POD-containing files to re-wrap any non-indented POD
    paragraphs to a 75 character width, which is 5 less than the 80
    character width they were wrapped to before.  This change should make
    it easier to copy and paste a diff or patch of this documentation into
    an email message, where it is quoted at least once, without any line
    wrapping occurring.  Likewise, these standard documentation files were
    re-wrapped to 75 characters: ReadMe, INSTALL, LGPL|GPL, Changes, TODO.

    * Revised this Changes file to replace all detail entries for releases
    0.59 thru 0.70.0 with a significant release list for the same period;
    also added references to when all 'Rosetta developer release' (#s 1-3)
    were.

2005-09-08   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.70.0 (SVN r787), containing SQL::Routine
    0.70.0, was released on CPAN.  This is the first release of this
    distribution and its modules for which they had 3-part version numbers,
    rather than floating point version numbers.

    * These were the current versions cited by the public announcement for
    Rosetta/SQL-Routine developer release #3.

2005-09-01   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.69, containing SQL::Routine 0.69, was released
    on CPAN.  This is the last release of this distribution and its modules
    for which they had floating point version numbers, rather than 3-part
    version numbers.

2005-04-03   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.58, containing SQL::Routine 0.58, was released
    on CPAN.

    * These were the current versions cited by the public announcement for
    SQL-Routine/Rosetta developer release #2.

2005-03-06   Darren Duncan <perl@DarrenDuncan.net>

    Record update in the PAUSE modules database:

    statd: [a] was [c]

    The resulting entry will be:

    SQL::
    ::Routine         adpOg Specify all database tasks with SQL routines DUNCAND

2004-11-05   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.48, containing SQL::Routine 0.48, was released
    on CPAN.  This is the first release of SQL::Routine following its
    merger with SQL::Routine::SkipID.

2004-11-02   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine-Castaways Release 0.33, containing SQL::Routine::SkipID
    0.33, was released on CPAN; this is the last release of the
    SQL-Routine-Castaways distribution.  This is the last release of
    SQL::Routine::SkipID prior to its merger with SQL::Routine.

2004-11-01   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.47, containing SQL::Routine 0.47, was released
    on CPAN.  This is the last release of SQL::Routine prior to its merger
    with SQL::Routine::SkipID.  This is the first release of SQL::Routine
    following its merger with SQL::Routine::ByTree.

2004-10-29   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.46, containing SQL::Routine 0.46, was released
    on CPAN.  This is the last release of SQL::Routine prior to its merger
    with SQL::Routine::ByTree.

2004-10-04   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-Routine Release 0.43, containing SQL::Routine 0.43, was released
    on CPAN; this is the first release of the SQL-Routine distribution.
    This is the first release of any distribution to contain SQL::Routine,
    which was renamed from SQL::SyntaxModel.  This is the first release of
    this module following its official registration on the Perl 5 Module
    List.

    * SQL-Routine-Castaways Release 0.31, containing SQL::Routine::ByTree
    0.31 and SQL::Routine::SkipID 0.31, was released on CPAN; this is the
    first release of the SQL-Routine-Castaways distribution.  This is the
    last release of SQL::Routine::ByTree prior to its merger with
    SQL::Routine.  This is the first release of any distribution to contain
    SQL::Routine::ByTree or SQL::Routine::SkipID; they were renamed from
    SQL::SyntaxModel::ByTree and SQL::SyntaxModel::SkipID respectively.

2004-10-04   Darren Duncan <perl@DarrenDuncan.net>

    The next version of the Module List will list the following module:

      modid:       SQL::Routine
      DSLIP:       cdpOg
      description: Specify all database tasks with SQL routines
      userid:      DUNCAND (Darren Duncan)
      chapterid:   11 (String_Lang_Text_Proc)
      enteredby:   BDFOY (brian d foy)
      enteredon:   Mon Oct  4 20:04:46 2004 GMT

    The resulting entry will be:

    SQL::
    ::Routine         cdpOg Specify all database tasks with SQL routines DUNCAND

2004-09-13   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-SyntaxModel Release 0.42, containing SQL::SyntaxModel 0.42, was
    released on CPAN; this is the last release of the SQL-SyntaxModel
    distribution.  This is the last release of any distribution to contain
    SQL::SyntaxModel.  This is the last release of this module prior to its
    official registration on the Perl 5 Module List.

2004-09-01   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-SyntaxModel-ByTree Release 0.30, containing
    SQL::SyntaxModel::ByTree 0.30, was released on CPAN; this is the last
    release of the SQL-SyntaxModel-ByTree distribution.  This is the last
    release of any distribution to contain SQL::SyntaxModel::ByTree.  This
    is the first release for this distribution and module where they both
    explicitly have matching version numbers.

    * SQL-SyntaxModel-SkipID Release 0.30, containing
    SQL::SyntaxModel::SkipID 0.30, was released on CPAN; this is the last
    release of the SQL-SyntaxModel-SkipID distribution.  This is the last
    release of any distribution to contain SQL::SyntaxModel::SkipID.  This
    is the first release for this distribution and module where they both
    explicitly have matching version numbers.

2004-08-16   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-SyntaxModel Release 0.38, containing SQL::SyntaxModel 0.38, was
    released on CPAN.  This is the first release for this distribution and
    module where they both explicitly have matching version numbers.

2004-08-06   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-SyntaxModel Release 0.37, containing SQL::SyntaxModel 0.24, was
    released on CPAN.  This is the last release for this distribution and
    module where they both do not explicitly have matching version numbers.

    * These were the current versions cited by the public announcement for
    Rosetta/SQL-SyntaxModel developer release #1.

2004-06-29   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-SyntaxModel-ByTree Release 0.29, containing
    SQL::SyntaxModel::ByTree 0.14, was released on CPAN.  This is the last
    release for this distribution and module where they both do not
    explicitly have matching version numbers.

    * SQL-SyntaxModel-SkipID Release 0.29, containing
    SQL::SyntaxModel::SkipID 0.14, was released on CPAN.  This is the last
    release for this distribution and module where they both do not
    explicitly have matching version numbers.

2004-03-22   Darren Duncan <perl@DarrenDuncan.net>

    * SQL-SyntaxModel Release 0.28, containing SQL::SyntaxModel 0.15, was
    released on CPAN; this is the first release of the SQL-SyntaxModel
    distribution.

    * SQL-SyntaxModel-ByTree Release 0.28, containing
    SQL::SyntaxModel::ByTree 0.13, was released on CPAN; this is the first
    release of the SQL-SyntaxModel-ByTree distribution.

    * SQL-SyntaxModel-SkipID Release 0.28, containing
    SQL::SyntaxModel::SkipID 0.13, was released on CPAN; this is the first
    release of the SQL-SyntaxModel-SkipID distribution.

2004-03-21   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.27, containing SQL::SyntaxModel 0.14 and
    SQL::SyntaxModel::ByTree 0.12 and SQL::SyntaxModel::SkipID 0.12, was
    released on CPAN.  This is the last release of the Rosetta distribution
    to contain any version of those 3 modules.

2003-12-21   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.20, containing SQL::SyntaxModel 0.08 and
    SQL::SyntaxModel::ByTree 0.08 and SQL::SyntaxModel::SkipID 0.08, was
    released on CPAN.  This is the first release of any distribution to
    contain SQL::SyntaxModel::ByTree, which was split off from
    SQL::SyntaxModel; this is the first release of SQL::SyntaxModel
    following that split.

2003-12-18   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.19, containing SQL::SyntaxModel 0.07 and
    SQL::SyntaxModel::SkipID 0.07, was released on CPAN.  This is the last
    release of SQL::SyntaxModel prior to its split into itself and
    SQL::SyntaxModel::ByTree.

2003-09-26   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.18, containing SQL::SyntaxModel 0.06 and
    SQL::SyntaxModel::SkipID 0.06, was released on CPAN.  This is the first
    release of any distribution to contain either SQL::SyntaxModel or
    SQL::SyntaxModel::SkipID, which are the results of splitting up the
    renamed SQL::ObjectModel.

2003-09-16   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.17, containing SQL::ObjectModel 0.05, was released
    on CPAN.  This is the last release of any distribution to contain
    SQL::ObjectModel; its subsequent release has it renamed and split in
    two.

2003-06-11   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.13, containing SQL::ObjectModel 0.01, was released
    on CPAN.  This is the first release of any distribution to contain
    SQL::ObjectModel; it is the result of merging 3 pre-existing and
    renamed modules, Rosetta::Schema::DataType and Rosetta::Schema::Table
    and Rosetta::Schema::View.

2003-06-10   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.12, containing Rosetta::Schema::DataType 0.021 and
    Rosetta::Schema::Table 0.011 and Rosetta::Schema::View 0.012, was
    released on CPAN.  This is the last release of those 3 modules prior to
    their three-way merger into SQL::ObjectModel.

2003-03-08   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.06, containing Rosetta::Schema::DataType 0.02 and
    Rosetta::Schema::Table 0.01 and Rosetta::Schema::View 0.01, was
    released on CPAN.  This is the first release of any distribution to
    contain either Rosetta::Schema::Table or Rosetta::Schema::View.

2003-03-04   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.05, containing Rosetta::Schema::DataType 0.01, was
    released on CPAN.  This is the first release of any distribution to
    contain Rosetta::Schema::DataType.  This is the first release of any
    distribution for which some of the existing work that became the
    SQL-Routine distribution was in the form of executable code, and not
    just design documentation.

2003-02-10   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.04 was released on CPAN.  This is the last release
    of any distribution for which all of the existing work that became the
    SQL-Routine distribution was purely in the form of design
    documentation, without executable code of any kind.

2003-01-27   Darren Duncan <perl@DarrenDuncan.net>

    * Rosetta Release 0.02 was released on CPAN; this is the first release
    of the Rosetta distribution.  Early versions of the design
    documentation that became the SQL-Routine distribution were included.

2003-01-05   Darren Duncan <perl@DarrenDuncan.net>

    * DBIx-Portable Release 0.01 was released on CPAN; this is the only
    release of the DBIx-Portable distribution.  This is the first release
    of any distribution to contain design documentation that became the
    SQL-Routine distribution.

2002-11-12   Darren Duncan <perl@DarrenDuncan.net>

    * Began development on the modules which became the SQL-Routine
    distribution as their own entity that is separate from my application,
    for open-source distribution on CPAN.  The modules were to comprise an
    RDBMS-generic DB framework for any application to use.

    * Modules based on a template created by h2xs 1.18.

2002-07-28

    * Posted the first significant update to the second prototype, which
    added an index or cache for data that was expensive to calculate for
    each page request, and involved rewriting about a fourth of the perl
    code.

2002-06-07

    * Posted to my website the second public prototype demo of the new
    self-proprietary database driven application, whose database schema,
    user interface, feature set, and Perl application code was almost
    completely rewritten. The new version explicitly had separate modules
    for database communication and the web interface logic, with
    MySQL-specific code and database generic or data dictionary code in
    separate files, and separate files for parts of the web interface.  The
    program used the same generic CPAN modules as in the first prototype,
    DBI/MySQL and CGI::Portable.

    * This is when I started writing self-contained code components that
    were explicitly designed to enable external code that used them to work
    seamlessly on multiple database products, and hence 2002 is the start
    of my declared copyright date range for SQL::Routine.

2001-11-24

    * Posted the last update to the first prototype.

2001-07-12

    * Posted to my website the first public prototype demo of a new
    self-proprietary database driven application, which is like a cross
    between a multimedia metadata catalogue and a repository for historical
    or genealogical data.  This application contained the first prototypes
    of code that ended up in these modules.  All of this application's
    code, for database communication and web interface logic, was situated
    in a single module, with the rest of the program being more generic
    CPAN modules like DBI (and DBD for MySQL) and CGI::Portable.

2000-05-17

    * Requested MySQL database privileges on my web host so I have
    something to start developing, testing and deploying database driven
    applications on.
