r9457: Reworked CLSQL file structure.
[clsql.git] / ChangeLog
index 39957cd302a60ff5eb227750b5a4716ede71fcf6..1965c5b7e15014badfc6c0d7900638d2d1f8c0cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,925 @@
+24 May 2004: Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * db-postgresql-socket/postgresql-socket-sql.lisp: replace 
+       CLSQL-SIMPLE-WARNING with SQL-WARNING. 
+       * db-sqlite/sqlite-sql.lisp: replace CLSQL-SIMPLE-WARNING with 
+       SQL-WARNING. 
+       * db-aodbc/aodbc-sql.lisp: replace CLSQL-ERROR with SQL-ERROR. 
+       * clsql.asd: reworked module structure in package definition and 
+       file names to better reflect component functionality. 
+       * sql/package.lisp: added SQL-FATAL-ERROR and SQL-TIMEOUT-ERROR to 
+       exports list. Removed duplicate and obsolete exports. Exported 
+       remaining SQL operations: SQL-SOME, SQL-<>, SQL-BETWEEN, SQL-DISTINCT, 
+       SQL-NVL and SQL-FUNCTION. Organised exports by functionality/file and 
+       according to whether they are specified by CommonSQL or CLSQL 
+       extensions. 
+       * sql/transaction.lisp: replace CLSQL-SIMPLE-WARNING with 
+       SQL-WARNING. 
+       * sql/generics.lisp: moved generics for QUERY and EXECUTE-COMMAND 
+       here from basic-sql.lisp. 
+       * sql/expressions.lisp: NEW FILE: renamed from classes.lisp (deleted). 
+       * sql/fddl.lisp: NEW FILE: renamed from table.lisp (deleted). 
+       * sql/fdml.lisp: NEW FILE: merger of basic-sql.lisp and sql.lisp
+       (both deleted). 
+       * sql/ooddl.lisp: NEW FILE: ooddl from objects.lisp (deleted). 
+       * sql/oodml.lisp: NEW FILE: oodml from objects.lisp (deleted). 
+       
+23 May 2004 Kevin Rosenberg
+       * Version 2.10.22 released
+       * sql/kmr-mop.lisp, sql/objects.lisp: Since SBCL is the only implementation that
+       has reversed class slots, change the default for ordered-class-slots so that slots
+       are now in the same order an in the def-view-class.
+       * sql/sql.lisp: Honor case of string table identifier to INSERT-RECORDS
+       * test/test-fddl.lisp: Add two tests for mixed case names
+       * db-oracle/oracle-sql.lisp: Add missing database qualifier. Return NUMBER (double)
+       for computed fields, this will require some adjustment to the test suite which
+       in many cases expects integers.
+       * test/test-fdml.lisp: Accomodate that Oracle returns doubles for computed columns
+       
+22 May 2004 Kevin Rosenberg
+       * Version 2.10.21 released
+       * sql/sequences.lisp: Move generic sequence functions here from db-sqlite,
+       db-odbc, and db-aodbc.
+       * sql/*.lisp: Add db-type parameter to generic functions READ-SQL-VALUE,
+       DATABASE-GET-TYPE-SPECIFIER, and OUTPUT-SQL-VALUE-AS-TYPE. Update methods to use these.
+       * sql/generic-postgresql.lisp, sql/generic-odbc.lisp: New files
+       * db-odbc/odbc-sql.lisp, db-aodbc/aodbc-sql.lisp: Move common code to 
+       sql/generic-odbc.lisp
+       * db-postgresql/postgresql-sql.lisp, db-postgresql-socket/postgresql-socket-sql.lisp: 
+       Move common code to  sql/generic-postgresql.lisp
+       * sql/classes.lisp: honor case of string tables when outputting queries 
+       * sql/objects.lisp: Add database type to default database-get-type-specifier method
+       * sql/sql.lisp:  Add database type to default database-abort-transaction method
+       * db-mysql/mysql-objects.lisp: New file
+       * sql/objects.lisp: Move MySQL specific code to mysql-objects.lisp
+       * sql/utils.lisp: Add GETENV function which will be used to get ORACLE_HOME
+       from environment
+       * test/test-fdml.lisp: String table names are now case sensitive, so convert to
+       default db case for FDML/SELECT/25
+
+22 May 2004 Kevin Rosenberg
+       * Version 2.10.20 released: Oracle backend now fails 6 out of 200 tests
+       * TODO: Added 2 variances from CommonSQL. Add tests for owner phrases
+       and string identifiers with non-default case
+       * sql/table.lisp: Don't convert string table name to a symbol.
+       * sql/classes.lisp: Honor case of string identifiers
+       * sql/sql.lisp: Ensure recyclebin is purged for Oracle in 
+       TRUNCATE-DATABASE
+       * db-oracle/oracle-sql.lisp: Add sequence functions, fix use of
+       of owner phrases. Obtain server and client versions.
+       * db-oracle/oracle-objects.lisp: Fix type specifiers
+       * tests/test-fddl.lisp: Allow :varchar2 and :number as data types
+       * tests/test-init.lisp: Properly get username from Oracle connection-spec
+       
+22 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/generics.lisp: reworked docstrings. Remove generics for 
+       ADD-TO-RELATION and REMOVE-FROM-RELATION. 
+       * sql/objects.lisp: reworked docstrings. Changed UPDATE-OBJECT-JOINS 
+       to UPDATE-OBJECTS-JOINS for CommonSQL compatibility. 
+       * sql/package.lisp: Changed UPDATE-OBJECT-JOINS to UPDATE-OBJECTS-JOINS 
+       for CommonSQL compatibility. Remove ADD-TO-RELATION and 
+       REMOVE-FROM-RELATION. 
+       * tests/test-oodml.lisp: Changed UPDATE-OBJECT-JOINS to 
+       UPDATE-OBJECTS-JOINS for CommonSQL compatibility. 
+       * doc/TODO: added notes about extra slot options to DEF-VIEW-CLASS. 
+       * sql/conditions.lisp: add documentation for conditions. Add 
+       SQL-TIMEOUT-ERROR and SQL-FATAL-ERROR for CommonSQL compatibility. 
+
+21 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/basic-sql.lisp: reworked docstrings. 
+       * sql/transactions.lisp: reworked docstrings. 
+       * sql/sql.lisp: reworked docstrings. 
+       * sql/initialize.lisp: reworked docstrings. INITIALIZE-DATABASE-TYPE 
+       sets *DEFAULT-DATABASE-TYPE* for CommonSQL compatibility. 
+       * sql/database.lisp: reworked docstrings. 
+       * doc/TODO: added notes about START-TRANSACTION and IN-TRANSACTION-P 
+       and FDML extensions and database extensions. 
+
+20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * db-oracle/oracle-sql: Use clsql-specific error conditions. Use owner keyword.
+       * db-oracle/make9.sh: add makefile for building with Oracle 9 client
+       libraries
+       * sql/table.lisp: Add logic for dealing with Oracle 10g vs. previous
+       Oracle versions with the PURGE option required for drop table. This needs
+       to be converted to a generic function and moved to db-oracle/oracle-sql.lisp
+
+20 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/classes.lisp: remove unused PARAMS slot in SQL-IDENT-ATTRIBUTE. 
+       * sql/syntax.lisp: remove unused PARAMS keyword arg to SQL-EXPRESSION. 
+       * sql/table.lisp: reworked docstrings. 
+       * sql/objects.lisp: moved *default-update-objects-max-len* here from 
+       table.lisp. 
+       * doc/TODO: notes about :if-does-not-exist arg to DROP-TABLE, 
+       DROP-VIEW and DROP-INDEX and the use of the :transactions and 
+       :constraints keyword args to CREATE-TABLE. 
+       * sql/classes.lisp: the DESCRIPTION argument to CREATE-TABLE is now 
+       CommonSQL compatible with respect to column constraints. 
+
+20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * sql/oracle-sql.lisp: Now compiles and runs on SBCL.
+       Requires UFFI 1.5.0 or higher
+       
+20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.19
+       * sql/conditions.lisp: Fix cerror
+       
+19 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.18 released: New condition hierarchy to be compatible
+       with CommonSQL -- not backward compatible with previous CLSQL.
+       * sql/db-interface.lisp: Add more default methods
+       * sql/objects.lisp: Add explicit table name to order-by parameters
+       in find-all when only one table to avoid selecting a duplicate row.
+       Fix error in FIND-ALL when using :order-by such as (([foo] :asc))
+       as previous logic was adding two fields (foo asc) to SELECT query.
+       Make :result-types :auto be the default for object selections.
+       Properly handle caching key when using multiple order-by with asc/desc
+       directions.
+       * db-oracle/*.lisp: Much improvements, now passes 90% of test suite
+       
+19 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/recording.lisp: reworked docstrings. 
+       * sql/syntax.lisp: reworked docstrings. 
+       * doc/TODO: added notes about extensions to SQL-RECORDING-P and the 
+       SQL syntax state functions being macros. 
+
+19 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+        * sql/package.lisp: Export initialize-database-type and
+       *initialize-database-types* from CLSQL package.
+       * sql/conditions.lisp: Add new CommonSQL compatible conditions,
+       remove old CLSQL conditions.
+       * sql/loop-extensions.lisp: Make errors of type sql-user-error
+       * */*.lisp: Convert to from old to new conditions
+       
+18 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+        * sql/table.lisp: Add PURGE to drop command for oracle 10g backend.
+       To handle this difference, will need to add a new database-drop-table
+       generic function.
+       * db-oracle/oracle-sql.lisp: Move server-version and
+       major-version-number to database object to allow multiple connections
+       to Oracle servers of different versions.
+       
+18 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * TODO: moved notes about backends to doc/TODO. 
+       * doc/TODO: added notes about backends and select extensions. 
+       * sql/base-classes.lisp: remove obsolete schema slot in database 
+       class. 
+       
+16 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * db-oracle/oracle-api: Add OCIServerVersion
+       * db-oracle/oracle-sql: Query and store server version on connect
+       * sql/db-interface.lisp: Add new db-type-has-bigint? generic
+       function to handle OCI's lack of bigint support
+       * test/test-basic.lisp: Separate bigint testing
+       * test/test-utils.lisp: Add oracle to specs and list of backends
+       * doc/TODO: New file
+       * test/test-fdml.lisp: Added FDML/SELECT/34 to test
+       run-time instantiation of variables in reader macros.
+       * TODO: Remove item already complete. Add note about
+       condition variances
+       
+16 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/syntax.lisp: added condition to the reader macro to treat [*] 
+       as a column identifier (rather than an operation) for CommonSQL 
+       compatibility. 
+       * tests/test-fdml.lisp: add tests for ORDER-BY and SET-OPERATION 
+       keword args to SELECT, [*] as column identifier, new MAP-QUERY 
+       behaviour and the ANY and ALL operators in subqueries. 
+       * tests/test-init.lisp: add set-operation and subquery tests to 
+       appropriate skip lists. 
+       * sql/objects.lisp: remove redundant and non CommonSQL compatible 
+       ORDER-BY-DESCENDING keyword argument for SELECT. 
+       * sql/classes.lisp: remove redundant and non CommonSQL compatible 
+       ORDER-BY-DESCENDING keyword argument for SELECT. 
+       * tests/test-oodml.lisp: add test for ORDER-BY keyword to SELECT 
+       with object queries. 
+
+15 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * sql/db-interface.lisp: Add new db-type-has-union? 
+       since Mysql 3.23 does not support unions.
+       * sql/test-init.lisp: Don't try union tests on database
+       backends which do not support it.
+       * db-oracle/*.lisp: initial port to UFFI
+       * sql/objects.lisp: implement UPDATE-OBJECT-JOINS,
+       implement REFRESH for SELECT.
+       * tests/test-oodml.lisp: Add tests for deferred retrieval,
+       caching, refresh, and update-object-joins
+       * tests/test-init.lisp: Add deferred-employee-address class
+       
+15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/operations.lisp: make MINUS operator a synonym for EXCEPT. Add 
+       COALESCE operator and make NVL a synonym for this. Make ANY, SOME, 
+       ALL and EXISTS generate function expressions so they output the 
+       correct SQL. 
+       * sql/classes.lisp: SELECT now generates appropriate SQL when 
+       passed the SET-OPERATION and ALL keyword arguments. 
+       * sql/classes.lisp: the ORDER-BY keyword argument to SELECT now 
+       accepts ordering constraints as pairs of the form (column direction) 
+       where direction may be :ASC or :DESC. 
+       * tests/test-syntax.lisp: added tests for MINUS and COALESCE/NVL. 
+       Correct tests for ANY, SOME, ALL and EXISTS. 
+       * tests/test-fdml.lisp: added test for COALESCE. 
+       * sql/sql.lisp: MAP-QUERY now applies FUNCTION to QUERY-EXPRESSION 
+       using funcall unless QUERY-EXPRESSION returns one column and its 
+       FLATP slot is not nil in which case apply is used. 
+       * tests/test-basic.lisp: modified calls to MAP-QUERY to reflect the 
+       changes. 
+       * TODO: remove items done. 
+       * db-postgresql/postgresql-sql.lisp: no need to reverse results in 
+       DATABASE-LIST-ATTRIBUTES. 
+       * db-postgresql-socket/postgresql-socket-sql.lisp: no need to reverse
+       results in DATABASE-LIST-ATTRIBUTES.    
+       
+15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+        * sql/classes.lisp: SELECT now accepts table identifiers as strings 
+        for CommonSQL compliance. Add support for qualified sql identifiers 
+        with aliased table names. 
+        * tests/test-fdml.lisp: added tests for table identifiers as strings 
+        in SELECT and for aliased definitions. 
+        * tests/test-syntax.lisp: added tests for alias definitions. 
+       
+15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/sql.lisp: PRINT-QUERY now calls QUERY with result-types and 
+       field-names set to nil. 
+       * sql/sql.lisp: PRINT-QUERY now computes column sizes correctly 
+       with null attribute values. 
+       * sql/operations.lisp: modify SQL concatenation operator to accept 
+       unescaped || symbol.  
+       * sql/syntax.lisp: modify sql reader macro function to accept 
+       unescaped sql concatenation operator. 
+       * tests/test-fdml.lisp: unescape sql concatenation operator. 
+       * tests/test-syntax.lisp: unescape sql concatenation operator. 
+       * TODO: remove items done. Add notes about SQLITE/MYSQL backends. 
+       Note to add test for universal-time. Note about difference from 
+       CommonSQL in transaction handling. 
+
+13 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * tests/test-init.lisp: Add deferred-employee-address
+       class
+       * tests/test-oodml.lisp: Add deferred retrieval testgs
+       
+12 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.17
+       * LATEST-TEST-RESULTS: Run on all platforms, add AMD64
+       * sql/sql.lisp: Add FOR-EACH-ROW macro from clsql-classic/sql.lisp
+       * db-sqlite/sqlite-uffi-api.lisp: Fix row-pointer type
+       * *: Fix minor style warnings
+       * clsql-classic: Remove system and subdirectory
+       * clsql-base: Remove system and subdirectory and
+       fold into clsql system
+       * doc/intro.xml: Remove reference to old clsql-base. Add x86_64
+       as supported platform.
+       
+12 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.16: CLSQL now fully supports AllegroCL AMD64
+       * db-odbc/odbc-api.lisp: work around return-type bug [spr28889] in
+       Allegro 7.0beta AMD64
+       * db-odbc/*.lisp: Add a layer of indirection to foreign-type
+       of ODBC longs since this type can vary on 64-bit platforms depending
+       upon the compilation options of unixODBC.
+       * db-mysql/mysql-api.lisp: Fix int vs. long slots in foreign
+       structures found by testing with AllegroCL 7.0b AMD64.
+       * db-*/*-loader.lisp: Load 64-bit libraries on 64-bit platorms
+       * sql/objects.lisp: Simple implementation of UPDATE-OBJECT-JOINS.
+       Initial caching support for SELECT
+       * tests/test-oodml.lisp: Avoid using cache when testing select.
+       * sql/kmr-mop.lisp: Explicitly check slot order and
+       store as a cl:*feature*
+       * sql/recording.lisp: Remove additional types to
+       increase CommonSQL conformance.
+       * tests/test-init.lisp: Change a :column attribute
+       to test symbols as value
+       * sql/relations.lisp: Remove functions since they don't support
+       many to many relationships.
+       * examples/clsql-tutorial.lisp, doc/csql.lisp: Remove use
+       of add-to-relations function and replace with explicit field settings.
+       * base/classes.lisp: Remove obsolute query-stream. Add record-caches slot.
+       
+9 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.15
+       * LATEST-TEST-RESULTS: results with current version
+       * sql/kmr-mop.lisp: Make CMUCL reader macros specific for cmu18
+       since cmu19 has opposite order of class slots.
+       * sql/objects.lisp: Fix (setf slot-value-using-class) for Lispworks
+       * tests/test-fdml.lisp: Renumber SELECT tests to avoid overwriting
+       a previous test
+       * tests/test-init.lisp: Check test-database-underlying-type for
+       ODBC/MySQL tests
+       
+8 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * sql/operations.lisp: complete remaining operations for the sql 
+       syntax: SUBSTR, SOME, ORDER-BY, GROUP-BY, NULL, DISTINCT, EXCEPT, 
+       UNION, INTERSECT, BETWEEN. 
+       * sql/classes.lisp: add new classes: SQL-BETWEEN-EXPRESSION, 
+       SQL-QUERY-MODIFIER-EXPRESSION and SQL-SET-EXPRESSION. 
+       * tests/test-syntax.lisp: add tests for new operations. 
+       * tests/test-fdml.lisp: add tests for queries based on new operations. 
+       * tests/test-init.lisp: add select/20 to tests skipped for sqlite and 
+       select/20, query/5, query/7 and query/8 to tests skipped by mysql. 
+       * TODO: removed entries done. 
+
+8 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * tests/benchmarks.lisp: Add immediate vs. deferred
+       join test.
+       
+8 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.13: Now works on openmcl 0.14.2 
+       * sql/objects.lisp: Add :retrieval :immediate for
+       object selections
+       * tests/test-init.lisp: Add non-index fields for testing 
+       join class employee-addresss
+       * test/test-oodml.lisp: Add tests for retrieval immediate
+       * sql/metaclasses.lisp: Handle differences in direct-slot-definition 
+       values which are now listifed by openmcl 14.2.
+       * sql/objects.lisp: more framework for supporing immediate retrieval 
+
+7 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * docs/intro.xml: Upload location of a README file
+       * sql/metaclass.lisp: Work-around openmcl's CHANGE-CLASS
+       changing the type-specifier. Use a lisp type of (OR NULL FOO)
+       for a specified-type of FOO unless :db-constraints :not-null.
+       No need to specialize finalize-inheritance for openmcl.
+       * tests/test-*.lisp: Rename fields so that joins occur on
+       fields with different names. This ensures that join code is
+       selecting the proper name.
+       * test/test-init.lisp: Add :base-table for employee-address
+       view class for testing.
+       * sql/objects.lisp: Use view-table rather than name of table
+       in a number of places to fix errors noted with using :base-table.
+
+6 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+        * sql/objects.lisp: replace *update-records-on-make-instance* with 
+        *db-auto-sync* which also controls both automatic creation of 
+        new records on creation of new instance and updating of record 
+        fields on setting of instance slots (as suggested by Edi Weitz). 
+        * tests/test-init.lisp: replace *update-records-on-make-instance* 
+        with *db-auto-sync*. 
+        * sql/package.lisp: replace *update-records-on-make-instance* 
+        with *db-auto-sync*. 
+        * TODO: replace *update-records-on-make-instance* with *db-auto-sync*. 
+        * sql/objects.lisp: remove redundant rebindings of *db-initializing* 
+        and *default-database* in FIND-ALL. 
+       * sql/package.lisp: import time functions from CLSQL-BASE. 
+       * tests/test-time.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
+       * tests/test-fdml.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
+       * tests/test-init.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
+       * tests/test-ooddl.lisp: replace CLSQl-BASE package qualifier with 
+       CLSQL. 
+
+4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * sql/classes.lisp: Add SQL-OBJECT-QUERY type. Have [select 'class]
+       now return a sql-object-query type rather than directly performing a query.
+       This improves CommonSQL conformance.
+       * sql/sql.lisp: Add new QUERY method for SQL-OBJECT-QUERY. Move
+       from basic/basic-sql.lisp the DO-QUERY and MAP-QUERY since they now
+       depend on sql-object-query-type.
+       * sql/loop-extensions.lisp: Move from base package
+       * classic/package.lisp: remove references to map-query and do-query
+
+4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * TODO: New section on optimizations, especially optimizing JOINs.
+       * sql/objects.lisp: Have :target-slot return of list of lists rather
+       than a list of cons pairs to be conformant with CommonSQL.
+       Make :target-slot much more efficient by using a SQL inner join
+       statement and just requiring one SQL query. Add :retrieval :deferrred
+       to target-slot joins. Add placeholder for update-objects-join.
+       * sql/classes.lisp: Add :inner-join and :on slots to sql-query class
+       and process them for query output-sql. 
+
+4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.11
+       * base/basic-sql.lisp: Avoid multiple evaluation
+       of query-expression in DO-QUERY
+       * sql/objects.lisp: Make SELECT a normal function.
+       SELECT now accepts type-modified database identifiers, such as
+        [foo :string] which means that the values in column foo are returned 
+        as Lisp strings. Add new *update-records-on-make-instance* special
+       variable controlling automatic creation of new instances. Add missing
+       RESULT-TYPES keyword to FIND-ALL. Add :target-slot support.
+       * sql/packages.lisp: Export *update-records-on-make-instance* 
+       * test/test-oodml.lisp: Add tests for :target-slot and many-to-many
+       selections.
+       * test/test-fdml.lisp: Add tests for type-modified
+       database identifiers.
+       * test/test-init.lisp: Stop using add-relation since implementing
+       many-to-many joins. Use *update-records-on-make-instance* 
+       to automatically store records on instance creation. Add many-to-many
+       employee-address view-class.
+       
+4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.10
+       * base/loop.lisp: Add object iteration. Use :result-type
+       :auto for result-set. Remove 
+       duplicate (and non-correct) code for non-list variables by
+       simply making an atom variable into a list. 
+       * sql/package.lisp: Remove unnecessary clsql-sys package
+       and replace it with clsql.
+       * sql/metaclasses.lisp: Properly store specified-type from
+       direct-slot-definition and then store translated type in
+       effective-slot-definition
+       * sql/classes.lisp: Don't output type in sql-output
+       for SQL-IDENT-ATTRIBUTE. This is in preparation for supporting
+       [foo :integer] as fields in SELECT.
+       * sql/query.lisp: Set default for :result-types to :auto in
+       FDML QUERY.
+       * sql/objects.lisp: Use specified-type when invocating 
+       database-get-type-specifier. def-view-class macro now returns
+       the class instance.
+       * base/basic-sql.lisp: Make :AUTO the default value for
+       :RESULT-TYPES for MAP-QUERY and DO-QUERY.
+       * sql/objects.lisp: Add bigint type
+       * test/tests-basic.lisp: Add tests for :result-types for
+       MAP-QUERY and DO-QUERY
+       * test/test-fdml.lisp: Add test for result-types in LOOP
+       and also using single symbol rather than a list for variables.
+       Add test that default :result-types is auto for FDML QUERY.
+       * test/test-syntax.lisp: Don't expect TYPE in the SQL-OUTPUT
+       of SQL-IDENT-ATTRIBUTE.
+       * test/test-oodml.lisp: Enable OO loop iteration test,
+       modify it so it doesn't depend on boolean where.
+       
+4 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * Version 2.10.9
+       * sql/objects.lisp: added derived type specifier for universal time. 
+       * sql/package.lisp: added #:universal-time to clsql-sys exports. 
+       * tests/test-oodml.lisp: added test for translation of boolean slots 
+       in SELECT with object queries. 
+       
+3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * db-odbc/odbc-api.lisp: Fix changing nil to "NIL" 
+       for odbc/postgresql backend.
+       * db-odbc/odbc-sql.lisp: Fix ATTRIBUTE-TYPE so that
+       it can handle NIL values from the ODBC driver
+       * tests/benchmarks.lisp: New file with initial
+       benchmark suite
+       * sql/relations.lisp: fix to add subclassing support,
+       minor optimizations [Edi Weitz]
+       
+3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.8        
+       * base/conditions.lisp: Add *backend-warning-behavior*
+       special variable.
+       * db-postgresql-socket/postgresql-socket-sql.lisp:
+       Honor value of *backend-warning-behavior*
+       * tests/test-fdml.lisp: Remove test of raw boolean value
+       since different backends handle this differently. Add
+       test for :column attribute.
+       * tests/test-oodml.lisp: Add tests for boolean slot value
+       and for :void-value attribute
+       * tests/test-init.lisp: Use *backend-warning-behavior*
+       to suppress warnings from postgresql about implicitly
+       creating primary key in tables. Add new address table.
+       
+3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.7
+       * db-odbc/odbc-dbi.lisp: Convert TINYINT to integers when
+       result-types is :auto
+       * sql/objects.lisp: Properly handled writing/reading Boolean
+       values from SQL database when retrieving objects.
+       * test/test-fdml.lisp: Add another test for boolean results
+       * test/utils.lisp: Fix incorrect declaration
+       
+2 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * Version 2.10.6
+       * sql/generics.lisp: add generic function for SELECT. 
+       * sql/objects.lisp: make SELECT a method specialisation. 
+       * sql/classes.lisp: MAKE-QUERY now calls SELECT if the selections 
+       referred to are View Classes. 
+       * base/basic-sql.lisp: in DO-QUERY and MAP-QUERY, if the 
+       query-expression arg evaluates to a list, then we have an object 
+       query. 
+       * tests/test-oodml.lisp: add tests for DO-QUERY and MAP-QUERY with 
+       object queries. 
+       * TODO: remove items done and add a todo for SELECT. 
+       * sql/objects.lisp: SELECT takes a :field-names arg to pass on to 
+       QUERY. 
+       * sql/sql.lisp: add :field-names arg to QUERY. 
+       * tests/test-fdml.lisp: minor rework to use :field-names arg to 
+       SELECT. 
+
+2 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk)
+       * sql/objects.lisp: fix bug in FIND-ALL when SELECT called with 2 
+       or more View Classes. 
+       * sql/objects.lisp: make the :flatp argument to SELECT work with 
+       object queries. 
+       * sql/objects.lisp: make SELECT accept a :result-types argument 
+       (defaults to :auto) which is passed on to QUERY.  
+       * sql/objects.lisp: SELECT returns field-names as a second value. 
+       * tests/test-ooddl.lisp: add flatp arg to SELECT calls as appropriate. 
+       * tests/test-fdml.lisp: add flatp/result-types arguments to calls 
+       to SELECT and take only first value as appropriate.
+       * tests/test-fdml.lisp: add two new tests for query result coercion 
+       and the field-names returned as a second value from SELECT. 
+       * tests/test-oodml.lisp: add flatp arg to SELECT calls as appropriate. 
+       
+1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.6-pre1
+       * sql/metaclasses.lisp: Add void-value slot
+       * doc/csql.xml: Update def-view-class documentation
+       * test/test-init.lisp: Change old :db-type to :db-kind.
+       Remove old :nulls-ok attributes.
+       * sql/objects.lisp: Add new universal-time and bigint
+       types. Optimize reading of integers using parse-integer
+       rather than read-from-string.
+       * */*.lisp: Merge clsql-base-sys and clsql-base packages
+       into clsql-base package
+       * classic/sql.lisp: Move large object support into base, leaving
+       classic without any functionality that is provided in the clsql
+       system.
+       * classic/package.lisp: Rename clsql-classic-sys package to
+       its former nickname of clsql-classic
+       
+1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.5: SQLite backend now passes all result-types tests
+       * clsql-sqlite.asd: Depend on clsql-uffi system
+       * db-sqlite/sqlite-sql.lisp: Use clsql-uffi:convert-raw-field
+       for efficiency and code reuse. 
+       * db-sqlite/sqlite-api-uffi.lisp: Change (* :char) to (* :unsigned-char)
+       for better cross-implementation compatibility.
+
+1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.4
+       * sql/tables.lisp: Fix typo in CACHE-TABLE-QUERIES
+       [Marcus Pearce]
+       * db-postgresql/postgresql-sql.lisp: Fix foreign-string vs. cstring
+       bug on SBCL in result-field-names function as reported by Marcus Pearce
+       * db-sqlite/sqlite-sql.lisp: Fix  in database-store-next-row
+       manifest in SBCL testing
+       
+1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.3
+       * sql/database.lisp: Conform more to CommonSQL output
+       for STATUS command [Marcus Pearce]
+       * sql/sqlite-sql.lisp: Rework to use result-types
+       * sql/sqlite-api-clisp.lisp: Add compatibility layer
+       with sqlite-api-uffi.lisp so that sqlite-sql.lisp can
+       be cleaned up of most clisp reader conditionals
+       * sql/test-init.lisp: Now run field type tests on sqlite
+       backend
+       
+30 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.2
+       * base/basic-sql.lisp: Set default value of :result-types 
+       to :auto for more CommonSQL conformance. 
+       * test/test-fdml.lisp: Add tests for numeric value of fields
+       
+
+30 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.10.1: New API function: CACHE-TABLE-QUERIES.
+       * base/basic-sql.lisp, db-*/*-sql.lisp: More CommonSQL conformance.
+       Return field names as second value for QUERY. This can be overridden
+       for efficiency with the new keyword :FIELD-NAMES set to NIL
+       in the QUERY invocation.
+       * test/test-fdml.lisp: Add tests for new field-name feature
+       * sql/metaclass.lisp: Remove old Lispworks cruft
+       and replace it with invocation of new code in kmr-mop.lisp
+       which actually works with Lispworks 4.2
+       * doc/ref_clsql.xml: Document new :FIELD-NAMES keyword to
+       QUERY function
+       * base/db-interface.lisp: Document the multiple values
+       returned by DATABASE-ATTRIBUTE-TYPE so matches the
+       undocumented CommonSQL behavior. 
+       * sql/table.lisp: Add *CACHE-TABLE-QUERIES-DEFAULT* and
+       *DEFAULT-UPDATE-OBJECTS-MAX-LEN* variables and export them.
+       LIST-ATTRIBUTE-TYPES now conforms to CommonSQL spec.
+       Implement CACHE-TABLE-QUERIES.
+       * db-odbc/odbc-sql.lisp: Fix attribute-type function
+       * test/test-fddl.lisp: Add tests for attribute type     
+       * db-mysql/mysql-sql.lisp: Mild optimization in accessing
+       field structures.
+       * base/classes.lisp: Add attribute-cache slot to database clas
+       * base/initialize.lisp: initialize-database-type now automatically
+       loads database-type backend as needed.
+       * base/test-init.lisp: Utilize new initialize-database-type functionality.
+       * TODO: remove items done
+       
+30 Apr 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
+       * Version 2.9.6
+       * sql/objects.lisp: remove create/drop-sequence-from-class. 
+       * sql/objects.lisp: add INSTANCE-REFRESHED generic function. 
+       * sql/objects.lisp: improved CommonSQL compatibility for
+       UPDATE-RECORD-FROM-SLOT, UPDATE-RECORD-FROM-SLOTS,
+       UPDATE-RECORDS-FROM-INSTANCE and DELETE-INSTANCE-RECORDS. 
+       * sql/generics.lisp: move generics from objects.lisp to here. 
+       
+29 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.9.6-pre1
+       * db-mysql/mysql-client-info.lisp: Add client version 4.1
+       detection
+       * sql/sql.lisp: Make *default-database* the default for
+       TRUNCATE-DATABASE
+       
+28 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.9.5
+       * db-mysql/mysql-sql.lisp: Fix bug in transaction capability
+       detection
+       * sql/objects.lisp: Commit patch from Slawek Zak to allow specifying 
+       :metaclass in DEF-VIEW-CLASS invocation. This allows defining classes 
+       on a metaclass specialized from standard-db-class.
+
+       
+24 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.9.4: Multiple changes to support Allegro's "modern"
+       lisp which uses a lowercase reader and has case-sensitive symbols
+       * sql/classes.lisp: Fix make-load-form bug for sql-ident-table
+       exposed by case-sensitive mlisp. 
+
+22 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.9.3: All tests now pass on all platforms!
+       * LATEST-TEST-RESULTS: New file with summary of test results
+       * sql/generics.lisp: New file for generic function definitions.
+       * test/test-init.lisp: Display names of skipped tests.
+       Use unwind-protect to ensure disconnect
+       * sql/objects.lisp: Change database-type to database-underlying-type
+       so that actual database engine is properly identified
+       * db-odbc/odbc-api.lisp: Have default *time-conversion-function*
+       return an ISO timestring for compatibility with other drivers.
+       Workaround bug in MyODBC for LIST-TABLE-INDEXES
+       * test/test-fdml.lisp: Accomodate that odbc-postgresql driver
+       returns floating-point values for floor and truncate operations 
+       * db-aodbc/aodbc-sql.lisp: Implement DATABASE-LIST-VIEWS
+       * tests/test-basic.lisp: Port to regression tester
+       * test/test-init.lisp: Output to *report-stream*
+       * docs/appendix.xml: Document ODBC and SQLite backends.
+       * sql/classes.lisp: Make output-sql require a database parameter.
+       This allows SQL generation to have the proper case to support
+       the differences in case handling between CommonSQL API,
+       Postgresql, MySQL, Oracle.
+       
+21 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.9.2: Improvments in database capability introspection
+       and querying. Support transactions in MySQL where available.
+       All tests now pass on MySQL and SQLite in addition to postgresql
+       and postgresql-socket. ODBC fails only with OODDL/TIME/1 and OODDL/TIME/2.
+       * db-odbc/odbc-sql.lisp: Add DATABASE-LIST-VIEWS. Better support
+       DATABASE-LIST-SEQUENCES.
+       * clsql-uffi.asd, clsql-mysql.asd: Improve shared library loading
+       * Database_capabilies: add HAS-VIEWS, HAS-CREATE/DESTROY-DB,
+       HAS-BOOLEAN-WHERE, TRANSACTION-CAPABLE
+       * tests/*.lisp: Check database capabilities and remove tests which
+       the database backend does not support
+       * sql/table.lisp: Add :TRANSACTIONS keyword to create table which
+       controls whether InnoDB tables will be created when supported on
+       the underlying MySQL server.
+       
+20 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.9.0: New API function: LIST-TABLE-INDEXES,
+       supported by all database backends (except AODBC since
+       AODBC doesn't support index querying)
+       * db-obdc/odbc-sql.lisp: Support DATABASE-LIST-INDEXES
+       * db-odbc/odbc-api.lisp: Add %TABLE-STATISTICS function
+       to support index queries
+       * db-aodbc/aodbc-sql.lisp: Filter driver manager
+       "information_schema" tables from LIST-TABLES
+       * tests/test-basic.lisp: Remove table after testing
+       * tests/test-fddl.lisp: Test LIST-TABLE-INDEXES
+       * base/db-interface.lisp: Add DATABASE-UNDERLYING-TYPE
+       which gets the underlying type of database -- required
+       when dealing with ODBC databases and want to query
+       database capabilities. Added DB-USE-COLUMN-ON-DROP-TABLES?
+       as first database-backend specific feature. Is T on
+       :mysql, NIL on other backends. Change DROP-TABLE to
+       query this.
+       
+19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.8.2: Build changes for FreeBSD [Slawek Zak]
+
+19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.8.1
+       * db-odbc/odbc-sql.lisp: Add DATABASE-LIST function 
+       * db-odbc/odbc-dbi.lisp: Add LIST-ALL-DATA-SOURCES function 
+
+19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.8.0: New API function: LIST-DATABASES
+       * base/utils.lisp: Fix command-output on CMUCL/SBCL
+       * db-*/*-sql.lisp: Add new database-list function
+       * base/database.lisp: Add new LIST-DATABASES command
+       
+18 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.9
+       * db-sqlite/sqlite-sql.lisp: Fix sequence functions.
+       * db-sqlite/sqlite-api-uffi.lisp: Print error string
+       correctly.
+       
+18 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.7
+       * doc/csql.xml, examples/clsql-tutorial.lisp: Patch for db-kind
+       from Eduardo Munoz.
+       
+17 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.6
+       * base/objects.lisp, base/classes.lisp: Patch
+       for db-kind from Eduardo Munoz
+       
+16 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.5
+       * base/basic-sql.lisp: Fix FLATP in QUERY
+
+16 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.3: Implement RECONNECT
+
+15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.2: Fix ODBC on Lispworks Windows
+
+15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.1: Fix for new ODBC backend.
+       clsql-odbc now works on SBCL, CMUCL, OpenMCL
+       in addition to AllegroCL and Lispworks.
+
+15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.7.0: New backend: ODBC. Tests as
+       well as AODBC backend on Allegro,Lispworks.
+       SBCL and CMUCL don't work quite yet.  Requires UFFI v1.4.11+
+       * db-odbc/*.lisp: Add ODBC3 function SQLSetEnvAttr
+       to explicitly set ODBC2 support. Add BIGINT support.
+       Add result-types support. Added SQLTables.
+       Fix array type in fetch-all-rows. Make width
+       changable by database or query.
+       * base/utils.lisp: Add process functions
+       * base/package.lisp: Export utils to CLSQL-BASE-SYS
+       * db-aodbc: Implement sequence functions,
+       database-list-tables, database-list-attributes
+       * tests/utils.lisp: Add support for ODBC backend,
+       rework READ-SPECS to use +all-db-types+
+       * db-mysql/mysql-sql.lisp: Use WITHOUT-INTERRUPTS
+       for SEQUENCE-NEXT
+       
+13 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.13. Requires UFFI version 1.4.9
+       * db-odbc/*.lisp: Further porting.
+       Pre-alpha code! But, basic query is now working.
+
+13 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.12
+       * base/transactions.lisp: Add quote for macro
+       expansion of WITH-TRANSACTIONS [Time Howe]
+       * db-sqlite/sqlite-sql.lisp: Support memory database
+       in database-probe [Ng Pheng Siong]
+       * db-odbc/*.lisp: Initial port to UFFI of SQL-ODBC.
+       The DBI layer is not finished.
+       
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.11
+       * sql/objects.lisp: add :root-class functionality for
+       list-classes and add duration type support [Marcus Pearce]
+       * db-odbc: Add mid-level [DBI] layer
+
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.10
+       * db-aodbc: Add methods for generic functions, some are
+       not yet implemented.
+       * clsql-odbc.asd, db-odbc/*.lisp: Initial start of ODBC
+       support
+
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.9
+       * base/package.lisp: Add missing symbols [Marcus Pearce]
+
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.8
+       * test/test-fddl.lisp: Cleanup fix [Marcus Pearce]
+       * utils/time.lisp: Multiple fixes [Marcus Pearce]
+       * sql/sql.lisp: Fix for truncate-database [Marcus Pearce]
+       
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.7
+       * sql/*.lisp: Remove schema versioning cruft
+       [Marcus Pearce]
+       * Makefile: Add classic subdirectory
+       
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.6
+       * sql/sql.lisp: Fix TRUNCATE command, bug reported
+       by Marcus Pearce
+       * sql/sql.lisp: Remove EXPLAIN function. Postgresql/Oracle
+       specific and easy for an application to directly support.
+       Idea from Marcus Pearce.
+       * base/basic-sql.lisp: Remove DESCRIBE-TABLE top-level 
+       API as duplicates LIST-ATTRIBUTE-TYPES [Marcus Pearce].
+       Keep low-level interface for future optimization
+       supporting LIST-ATTRIBUTE-TYPES command.
+       * Makefile: Add to db-sqlite and test directories.
+       Include them in top-level Makefile
+       
+12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.5
+       * sql/relations.lisp: Add missing file
+       * utils/time.lisp: Fixes/extensions [Marcus Pearce]
+       * test/test-time.lips: New file [Marcus Pearce]
+       
+10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.4
+       * test/test-init.lisp: Properly handle object
+       creation. Close database after use.
+       * sql/sql.lisp: Make DESCRIBE-TABLE a generic
+       function so can have methods specialized on
+       table being a string or an sql-table object.
+       * base/pool.lisp: Really fix CMUCL locking
+       
+10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.3
+       * test/test-init.lisp: Signal correctly
+       if any errors occurred in any test suite
+       * base/loop-extensions.lisp: Fix error
+       introduced for Lispworks
+       * base/pool.lisp: Fix locking for CMUCL
+       * base/objects.lisp: Remove schema-version cruft
+       
+10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.2: New CLSQL API functions:
+       DESCRIBE-TABLE AND TRUNCATE-DATABASE
+       Currently, this are only supported on :postgresql
+       and :postgresql-socket
+       * base/database.lisp: automatically load ASDF system
+       in CONNECT if not already loaded
+       * base/tests.lisp: disconnect database after testing 
+       * base/*.lisp: Remove CLOSED-DATABASE type in favor
+       of storing open/closed status in slot of database
+       * base/pool.lisp: Support locks for CMUCL, OpenMCL, SBCL
+       * db-postgresql/postgresql-sql.lisp: add DATABASE-RECONNECT,
+       DATABASE-DESCRIBE-TABLE
+       * db-sqlite/sqlite-sql.lisp: Add missing slots in database
+       * base/conditions: Remove duplicate condition
+       * db-*/*-sql.lisp: Fill new database slot DATABASE-TYPE
+       * base/recording.lisp: Add new :QUERY type for recording
+       
+10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.6.1: documentation fixes, merged
+       classic-tests into tests
+
+10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+        * Version 2.6.0 released: New API functions
+       CREATE-DATABASE, DESTORY-DATABASE, PROBE-DATABASE
+       * doc/ref_clsql.xml: Document new functions
+       * base/database.lisp: New API functions
+       * base/conditions.lisp: Added CLSQL-ACCESS-ERROR
+       * base/utils.lisp: Fix use of position-char.
+       Add COMMAND-OUTPUT used by backends for running
+       external programs. Fix parsing of SQL*NET-compatible
+       connection-specs.
+       * base/loop-extension.lisp: Simplify package use
+       for Lispworks and Allegro
+       * db-*/*-sql.lisp: Added DATABASE-CREATE,
+       DATABASE-DESTORY, PROBE-DATABASE methods
+       * tests/test-init.lisp, clasic-tests/tests.lisp:
+       Use destroy-database and create-database to ensure 
+       testing with empty database
+       * tests/test-connection.lisp: Add tests for
+       parsing of string connection-specs
+       * examples/run-tests.sh: New file for running
+       test suite on all installed CL implementations
+       * examples/clsql-tutorial.lisp: moved from
+       doc directory
+       * examples/dot.clsql-tests.config: New file
+       giving an example test configuration
+       * test/README: Add notes about rtest/ptester
+       downloads and link to sample test configuration file.
+       
+10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.5.1 released:
+       * tests/*.lisp: Rework so tests are run
+       on multiple backends automatically based
+       on the contents of ~/.clsql-tests.config.
+       Reuse helper functions from classic-tests.
+       * base/database.lisp: Support connection-spec
+       as string for CONNECT
+       * classic-tests/tests.lisp: Automatically
+       load database backends as needed. 
+       
+09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+        * Version 2.5.0 released:
+       All tests for CLSQL and CLSQL-CLASSIC pass
+       on all platforms.
+       * base/loop-extension.lisp: Add Lispworks
+       loop-extension. Improve type specifying on
+       other platforms.
+       
+09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.4.2 released:
+       loop extension now supported on Allegro, all
+       CLSQL-TESTS pass on Allegro.
+       * sql/metaclasses.lisp: Some optimization
+       of compute-slots, be selective when
+       ordered-class-slots needs to be called
+       instead of class-slots
+       * TODO: add URL with documentation on
+       extending Lispworks LOOP form
+       
+09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * Version 2.4.1 released: CLSQL-TESt suite passes
+       all tests for postgresql and CMUCL, SBCL, OpenMCL.
+       Allegro and Lispworks pass all tests except for
+       FDML/LOOP/1 since the loop extension have not yet
+       been ported to those implementions.
+       * sql/metaclasses.lisp: Added new slot to standard-db-class
+       to hold user-specified type. OpenMCL adjustments to compensate
+       for its type-predicate function. Since AllegroCL, Lispworks,
+       and OpenMCL have different slot orders, added compute-slots
+       and ordered-class-slots functions so their slot order matches
+       SBCL/CMUCL.
+
 08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
        * Version 2.4.0 released: All tests for clsql-classic now finish
        correctly on Allegro, Lispworks, CMUCL, SBCL, OpenMCL for
-       mysql, postgresql, and sqlite backends. postgresql-socket backend
-       passes all tests for Allegro, Lispworks, CMUCL, and SBCL.
+       mysql, postgresql, postgresql-sockets, and sqlite backends.
        * db-mysql/mysql-sql.lisp: Fix array dereferencing
        * classic-tests/tests.lisp: Fix package name of
        number-to-sql-string. 
        * Fixes for sequences on mysql and sqlite [Marcus Pearce]
        * Fixes for uffi sqlite backend [Aurelio Bignoli / Kevin Rosenberg]
        * Fix for schema table [Marcus Pearce]
-       * Add loop extension support for SBCL [Marcus Pearce]
+       * Add loop extension support for SBCL and OpenMCL [Marcus Pearce]
+       * Fixes to test suite [Marcus Pearce]
 
 06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
         * db-*/*-sql.lisp: Ensure that expr in
        database-query-result-set is a string
+       * Documentation integration
        
 06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
        * With for Marcus Pearce's excellent work, I've merged