ChangeLog ========= $Id: CHANGES 279 2003-11-22 08:35:09Z bolzer $ Version 0.81 (tagged 22 Nov 2003, revision 279) Bug Fixes: * correct mistake in Usage Example, operator for wildcard searching is ~, not = * raise proper errors on various methods of Persistable when no PersistenceManager is available, instead of NoMethodError Version 0.80 (tagged 19 Nov 2003, revision 275) Features: * transaction logging, record information about time, committer and log message as well as list of objects modified per transaction * basic versioning support, retrieval of historic object states * vaporadmin: removal of classes and all their instances using the "remove" command * vaporadmin: modification of class' metadata using the "update" command * new operator (~) for wildcard searches on Strings Bug Fixes: * allow SQL keywords as names of persistent attributes * fix bug where camelCase variables would not be correctly set on object loading * correctly transfer newly persistent objects back to transient state during rollback(). This bug caused incomprehensible ObjectDeletedErrors when manually or automatically rolling back. * check REXML::Version instead of REXML::VERSION_MAJOR, which does not exist in the REXML version that is included in Ruby 1.8 * minimize number of warnings issued when using `ruby -w', including those from Ruby 1.8.x, that are issued regardless of -w Incompatible Repository Changes: (Repository needs to be recreated from scratch) * repository schema version 3 * add fields and tables for versioning Version 0.70 (tagged 4 Jul 2003, revision 211) Features: * support for transactions, with ACID-characteristics using optimistic locking * new method Persistable#refresh_persistent, reloads persistent attributes with values currently in Datastore * new method Persistable#revision, returns number of times changes to the object have been commited since it's creation Incompatible API Changes: * PersistenceManager#flush() deprecated, use transactions * all methods that change a persistent object (make_persistent, mark_dirty, delete_persistent) can now only be called while a transaction is active. If no transaction is active and Autocommit-Mode is off, a StaleTransactionError will be raises when such an method is called. Incompatible Repository Changes: (Repository needs to be restarted from scratch) * add new field for revision number to class' table * new table containing various information about the Repository itself, like date created and version of relational schema used. * get rid of annoying :-prefix from names of class' tables * get rid of annoying _-prefix from column names of class' tables * preserve the attribe order as specified in the XML data when creating tables Bug Fixes: * fix vaporadmin to allow FQDN as hostname and non-alphaneumeric characters for passwords in repository specification * properly raise a LoadError when a dependent librarie's version is too old. * vaporadmin shows a proper error message if trying to incompativly overload an attribute from a superclass or trying to create a uniquness constrains over an array attribute (both PostgreSQL restrictions) Version 0.60 (tagged 5 Jun 2003, revision 159) * initial public release * new versioning scheme Features: * support for indexes to speed up search queries specify in metadata XML using index="true" attribute or * support for uniqueness constraints for classes specify in metadata XML using unique="true" attribute or * support for selective retrieval of subclass instances with PersistenceManager#query and PersistenceManager#get_extent, default to retrieve subclass instances * introduce Autocommit-Mode: all changes (new, delete, dirty) are immediately flushed to the Repository. On by default. Turn off using Vapor.Autocommit property or PersistenceManager#autocommit= Bug Fixes: * restore screen echo before exiting when interrupted during Password input with Ctrl-C, exit with exit status of 130 (SIGINT) Incompatible Interface Changes: * change PersistenceManager.new, now takes a Hash-like object with properties instead of a TupleManager. For valid properties, see API reference or example code. Misc: * vaporadmin shows a warning about passwords and screen echo if the Termios module is not installed * all instance variables set by Vapor in Persistable objects are prefixed with "vapor_", to prevent namespace pollution * new constant Vapor::VERSION with current release version Version M5 (tagged 1 Jun 2003, revision 139) New: * include proper LICENCE file and also a copy of the GPL * include proper CHANGES (this file ) * new Repository administration tool `vaporadmin' that talks directly with the Repository - Repository initialisation - adding classes to Repository * create new top-level library file vapor.rb, convenience short-cut so the user only has to do "require 'vapor'" * support Persistables as arguments for queries * when types of persistent attributes are wrong, try to convert them, otherwise raise a VaporTypeError * move all exceptions into their own module Vapor::Exceptions * new directory doc/examples with one example system * cleaned up directory structure - move actual library classes to lib/ - move tests from inside lib to test/ - move documentation into doc/ - remove documentation that is not part of releases - create bin/ for executables * remove obsolete vapor-schemagen.rb * incompatible Repository layout changes: - use SEQUENCE for storage of OID seed Bug Fixes: * actually save attributes inherited from superclass * Extent#[]: don't try to retrieve object if the index is invalid * Persistable: methods that need an Repository (e.g. for metadata) will raise an Vapor::RepositoryOfflineError if no PersistenceManager has been initialised Version M4 (tagged 21 May 2003, revision 100) * SQL DDL generation using vapor-schemagen.rb * support for creating and modifying of objects in Repository (writing) * support for deleting objects from Repository * support querying for object in Repository Version M3 (tagged 21 Feb 2003, revision 46) * support reading of Array attributes Version M2 (tagged 05 Feb 2003, revision 38) * support References * support loading of all instances of a class * add Extents, container of multiple objects that are only loaded into memory on demand Version M1 (tag lost) * no support for schema generation * no support for creating and writing objects * support of loading objects by OID * support of non-reference attributes * cache loaded objects