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

	* Release 0.08.

	* New code file versions are: SQLBuilder.pm v0.08, Generic.pm v0.05, en.pm
	v0.05.

	* Updated all versioned *.pm files to use the modern syntax "our $VERSION =
	..." instead of "use vars qw($VERSION); $VERSION = ...".

	* From now on, any modules that have 'Rosetta' as an explicit dependency
	will also have implicit dependencies on the same versions of
	[SQL::SyntaxModel, Locale::KeyedText] that Rosetta explicitly depends on;
	the explicit dependencies on those two modules are now gone.  If either of
	the two modules are updated and a Rosetta-using module requires a newer
	version, then that module should simply update its requirement to a version
	of Rosetta that itself requires the implicit dependency.

	* Updated external dependencies on Rosetta to v0.35.

	* Renamed these methods in SQLBuilder.pm: positional_bind_vars() =>
	positional_host_params(), make_bind_vars() => make_host_params(),
	[get|clear]_positional_bind_var_map_array =>
	[get|clear]_positional_host_param_map_array().  Also renamed the
	corresponding 3 class properties.  Also renamed all documentation
	references of "bind variables" to "host parameters", since that is the
	official name for them in the SQL-2003 standard.

	* In SQLBuilder.pm, split off new method from build_expr() named
	build_identifier_host_parameter_name(), which handles the 'ARG' case.  Also
	added some code documentation to quote_identifier().

	* Updated/simplified the build_query_into_clause() method in SQLBuilder.pm
	to account for recent changes in SQL::SyntaxModel where relevant details
	are stored in view_col Nodes rather than view_expr Nodes.

	* Added some code docs to SQLBuilder.build_schema_table_create().

	* Updated the build_schema_routine_create() method in SQLBuilder.pm to
	account for recent changes in SQL::SyntaxModel regarding TRIGGER routines
	where [table,view] attrs renamed to [trigger_on_table,trigger_on_view].

	* Updated SQLBuilder.pm documentation and comments to either remove any
	references to an ANONYMOUS routine_type (no longer exists), or replace them
	with "application-side routine".

	* Updated the build_dmanip_call_uproc() method in SQLBuilder.pm to account
	for recent changes in SQL::SyntaxModel where the routine_expr attribute
	'call_uproc_arg' is used for uprocs instead of overloaded 'call_ufunc_arg'.

	* Changed each reference on the SSM 'command' Node attribute
	'command_arg_1' to a reference on that Node's child 'command_arg' Node.

	* Updated Generic.pm so that the DB_LIST command now produces more useful
	results, and so that the DB_OPEN command now consults the
	catalog_instance[_opt] attributes that correspond to the used catalog_link, 
	and so that any thrown exceptions include the class name as an argument.

	* Rewrote the top half of the TODO file so it is more accurate concerning 
	my development road map.

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

	* Release 0.07.

	* New code file versions are: SQLBuilder.pm v0.07, Generic.pm v0.04, en.pm
	v0.04.

	* Updated external dependencies on SQL::SyntaxModel to v0.38 and on Rosetta
	to v0.33 and on DBI to v1.42.  There was previously no minimum version of
	DBI specified.  I chose v1.42 somewhat arbitrarily, because it is the
	relatively new (5 months old, 1 release behind) version that I am currently
	testing with; if you really want to stay with an older version than that,
	you are welcome to edit my "use" statements to a lower number and test your
	luck.  From now on, I will not explicitly raise the required version number
	unless I can see a change that visibly affects this distribution or me.

	* Changed the first line of every file's COPYRIGHT AND LICENSE from "...
	Rosetta database abstraction framework" to "... Rosetta::Extensions
	collection of Rosetta feature reference implementations".  Every other
	occurance of 'Rosetta' in the copyright/license was changed to
	'Rosetta::Extensions'.  Following this, all files in the Rosetta-Extensions
	distribution now have a different copyright than the core Rosetta distro.

	* Replaced Generic.pm's 3 object properties with 7 different ones; each new
	property will only be set for Generic objects behind a specific type of
	Interface.  Simplified the destructor code as it is now trivial to find out 
	what kind of Interface an object is behind, in DESTROY().  Rewrote parts of 
	prepare_cmd_db_open() around the new property list.

	* Renamed the get_supported_features() method of Generic.pm to features()
	and re-positioned it to be above prepare().  This function can now be
	called off of both Environments and Connections.  Fleshed out the list of
	feature declarations, in both code and docs, to include every possible
	feature, each with a 'yes' or 'no'.  Eliminated the separate
	get_static_const_supported_features() method.  Split the SUPPORTED ROSETTA
	FEATURES docs into ROSETTA FEATURES SUPPORTED [BY ENVIRONMENT|PER
	CONNECTION].  Rewrote first ENGINE CONFIGURATION OPTIONS paragraph.

	* Merged the module GenericAC.pm into Generic.pm as the reasons for it to
	exist separately no longer exist.  Added new boolean option to Generic.pm's
	ENGINE CONFIGURATION OPTIONS list named "auto_commit", whose default value
	is false (matching the old Generic's transactional behaviour); if you set
	this to true, then this module will behave like the old GenericAC.  The
	separate get_static_const_use_auto_commit() method is now gone.  Removed
	last DESCRIPTION paragraph.

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

	* Release 0.06.

	* Updated external dependencies on Locale::KeyedText to v0.06 and on
	SQL::SyntaxModel to v0.24 and on Rosetta to v0.16.

	* Renamed Rosetta::Engine::L::en to Rosetta::Engine::Generic::L::en (now
	v0.03); it now only contains extra messages that are specific to Generic;
	general database messages are now stored in Rosetta::L::en.  Also, the
	remaining 2 (from 6) user text now are prefixed by the class name, so it is
	easier for users to know what file generated any error messages.

	* Multiple updates to SQLBuilder.pm (now v0.06) and Generic.pm (now v0.03); 
	Generic.pm had almost all of the changes.

	* Fixed POD bug in SQLBuilder.pm where the build_dmanip_call_[s|u]proc()
	methods were called build_expr_call_[s|u]proc() by mistake.

	* Added new payload() method and 'payload' property to Generic.pm.  Also 
	added new get_supported_features() method.

	* Added these new Generic.pm internal methods: DESTROY(), open_dbi_connection(), 
	close_dbi_connection(), make_ssm_node(), make_child_ssm_node(), 
	prepare_cmd_db_list(), prepare_cmd_db_info() (empty).  Deleted these internal 
	methods: dbi_driver_req_autocommit().

	* Renamed a lot of the local variables in Generic.pm to be a lot more
	consistent, descriptive, and scalable, meaning the code is now a lot easier
	to read and understand.  For example, any SSM Node objects now end in
	'_node', any Interface objects end in '_intf', any Engine objects in
	'_eng', any "preparation" interfaces or engines have '_prep' in the middle.
	 As an exception, for the few generic functions that can take many kinds of
	intfs/engs rather than one specific kind, the variables are simply called
	$interface or $preparation and $engine as before.

	* Added new SUPPORTED ROSETTA FEATURES documentation section to Generic.pm,
	expanded its DESCRIPTION, and brought the SYNOPSIS up to date with recent
	changes to SQL::SyntaxModel.

	* Added new static Generic methods get_static_const_use_auto_commit() and 
	get_static_const_supported_features() that should be easy for sub-classes 
	to override (see GenericAC, which does just that).

	* Added new module Rosetta::Engine::GenericAC (v0.01) which sub-classes
	Generic and should be used for database products that lack native support
	for transactions; Generic won't even try to emulate them, but will declare
	support for them; GenericAC will not declare support, and auto-commits.

	* Several other bug fixes and changes were made in Rosetta.pm.

	* For the first time, with this release, most of the Generic.pm code has
	now been exercised and tested, in combination with external code, and is
	now found to be working to spec.  Tests included successful runs of
	DB_LIST, DB_OPEN, DB_CLOSE, and likewise against GenericAC.pm.

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

	* Release 0.05.

	* Updated external dependencies on Locale::KeyedText to v0.04 and on
	SQL::SyntaxModel to v0.22.  Note that the Makefile.pl in release 0.04
	mistakenly said that Locale::KeyedText 0.04 was a prerequisite, but that
	wasn't true until now.

	* Updated SQLBuilder.pm (now v0.05) extensively such that about 15% of the
	module was added or changed.  The most extensive change concerns its POD
	documentation, as now 100% of the module's methods are documented;
	previously, less than half of them were.  Added 1 new state maintenance
	property plus its accessor method.  A few methods were re-ordered and/or
	re-named.  Rebuilt the methods for making INSERT, UPDATE, DELETE statements
	so they should now actually appear to work.  Literals are now escaped
	according to their type.  Now all Perl switch statement options are
	explicitely specified rather than the last one going in 'else'; this is
	meant to prevent bugs in the future caused by the addition of new options
	to SQL::SyntaxModel.  build_dmanip_into_clause() was renamed to
	build_query_into_clause() and merged into the generic query function list. 
	build_dmanip_stmt_table_or_view_name() was converted to
	build_dmanip_src_schema_object_name().  build_expr_call_cview() was merged
	into build_query_subquery().  Split build_dmanip_call_sproc() into itself
	plus build_dmanip_[insert|update|delete]_stmt(); build_dmanip_set_clause()
	was merged into the latter, and build_query_table_value_constr() was merged
	into 'insert'.  A few other small code updates.  All methods now have 
	SQL-2003 section/page references, where applicable.

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

	* Release 0.04.

	* Updated external dependencies on SQL::SyntaxModel to v0.21.

	* Updated SQLBuilder.pm (now v0.04) extensively such that about 30% of the
	module was added or rewritten.  Added 8 new SQLBuilder properties, with 6
	being for general configuration, and 2 for short term state maintenance.
	Renamed build_expr_identifier_element() to build_identifier_element() and
	split build_expr_identifier_chain() into 4 more specialized
	build_identifier_*() methods.  Further added or updated SQL generation code
	corresponding to these sections of "SQL-2003 Foundation": 6 "Scalar
	expressions", 7 "Query expressions", 11 "Schema definition and
	manipulation", 14 "Data manipulation".  All of the above concerned code
	changes.  Some documentation changes, mostly in the method list; most
	methods are still not documented.  Following these changes, all of the
	existing methods in SQLBuilder are now "implemented" (no more empty methods
	with 'to be done' comments); however, many of them stand to be updated
	later with new or corrected features.  A few empty methods were removed.

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

	* Release 0.03.

	* Updated external dependencies on SQL::SyntaxModel to v0.18.

	* Updated SQLBuilder.pm (now v0.03) extensively such that about 20% of the
	module was added or rewritten.  Added a base property and renamed another.
	Added or updated SQL generation code corresponding to these sections of
	"SQL-2003 Foundation": 7 "Query expressions", 11 "Schema definition and
	manipulation", 12 "Access control", 14 "Data manipulation".  All of the
	above concerned code changes.  Documentation was added/changed for the
	new/altered property accessors only.

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

	* Release 0.02.

	* This is a "middle of development" release that includes a large number of
	changes, some of which are only partially implemented.  It exists largely
	so that I can have a reliable backup for (and historical record of) the
	last 3 weeks of in-progress work.  It compiles, but there are large gaps.

	* Updated external dependencies on SQL::SyntaxModel to v0.17.

	* Updated all relevant documentation, including the NAME of Extensions.pod,
	to specify that the modules herein are "reference implementations of
	fundamental Rosetta features".  That is, they are not meant to be the best
	or only implementations, but rather just examples of how the deed is done.

	* Updated documentation to say that the SQL-2003 standard is now the focus 
	of influence rather than SQL-1999 (or SQL-1992).

	* Updated SQLBuilder.pm (now v0.02) extensively such that over 70% of the
	module was added or rewritten; probably 98%+ of all changes for this
	distribution release were in this module.  Most existing properties and
	methods were renamed and/or reordered.  Added 2 base properties and 4 'data
	types' sub-properties.  The 'data types' sub-property defaults are now more
	standard-centric rather than MySQL centric; said sub-properties can now
	contain substitution variables.  Implemented most of the SQL generation
	code corresponding to these sections of "SQL-2003 Foundation": 5 "Lexical
	elements", 6 "Scalar expressions", 7 "Query expressions", 8 "Predicates",
	11 "Schema definition and manipulation".  All of the above concerned code 
	changes.  For documentation, there were no descriptions for individual 
	functions/methods in 0.01, but now there are for about a third of them.

	* Updated Generic.pm (now v0.02) so that the "engine configuration option"
	named "insen_ident" (case-insensitive identifiers) was renamed to
	"delim_ident" (delimited identifiers); rewrote that option's description.

	* Updated en.pm (now v0.02) to add a "ROS_G_RAW_SQLSTATE" message.

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

	* Release 0.01.

	* This is the first release of the Rosetta-Extensions distribution.  This
	distribution is meant to be temporary, collecting a number of related
	modules during their infancy, as they tend to be updated in tandem; said
	modules will get split into their own distributions later when they
	stabilize.  This release features the first versions of the modules
	Rosetta::Engine::Generic and Rosetta::Utility::SQLBuilder (plus the
	placeholder Rosetta::Extensions and the localization file
	Rosetta::Engine::L::en).  These modules are mostly code complete such that
	you can connect to or disconnect from databases, as well as create or
	remove tables and sequences in a database.  None of this functionality was
	tested, though (except for compiling); that is planned for release 0.03.

	* For more background information, see the "Rosetta" distribution and 
	everything of mine that it references.