r9471: 5 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / ChangeLog
1 25 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
2         * Version 2.11.0 released: Full Oracle support. All tests pass
3         * db-oracle/oracle-sql.lisp: Add declaration so that SBCL runs efficiently.
4         * tests/test-init.lisp: capitalize odbc backend name in banner
5         * CONTRIBUTORS: Add note about Marcus' excellent work
6         * sql/oodml.lisp: Removed old stub function     
7         * clsql.asd: Use module names in current package rather than keyword package
8         * db-oracle/oracle-sql.lisp: Don't trim trailing spaces. Prevent interrupts
9         in setting sequence position. Make autocommits more efficient.
10         * tests/test-init.lisp: Skip 2 tests on Oracle which have unsupported syntax 
11         * sql/oodml.lisp: Get rid of undocumented raw-string type. CommonSQL
12         strings are raw (non-trimmed trailing whitespace). Add database-get-type-specifier
13         and read-sql-value for NUMBER and CHAR.
14         * sql/base-classes.lisp: Add autocommit slot
15         * sql/transaction.lisp: Added autocommit processing, mild cleaning.
16         
17 24 May 2004: Marcus Pearce (m.t.pearce@city.ac.uk) 
18         * db-postgresql-socket/postgresql-socket-sql.lisp: replace 
19         CLSQL-SIMPLE-WARNING with SQL-WARNING. 
20         * db-sqlite/sqlite-sql.lisp: replace CLSQL-SIMPLE-WARNING with 
21         SQL-WARNING. 
22         * db-aodbc/aodbc-sql.lisp: replace CLSQL-ERROR with SQL-ERROR. 
23         * clsql.asd: reworked module structure in package definition and 
24         file names to better reflect component functionality. 
25         * sql/package.lisp: added SQL-FATAL-ERROR and SQL-TIMEOUT-ERROR to 
26         exports list. Removed duplicate and obsolete exports. Exported 
27         remaining SQL operations: SQL-SOME, SQL-<>, SQL-BETWEEN, SQL-DISTINCT, 
28         SQL-NVL and SQL-FUNCTION. Organised exports by functionality/file and 
29         according to whether they are specified by CommonSQL or CLSQL 
30         extensions. 
31         * sql/transaction.lisp: replace CLSQL-SIMPLE-WARNING with 
32         SQL-WARNING. 
33         * sql/generics.lisp: moved generics for QUERY and EXECUTE-COMMAND 
34         here from basic-sql.lisp. 
35         * sql/expressions.lisp: NEW FILE: renamed from classes.lisp (deleted). 
36         * sql/fddl.lisp: NEW FILE: renamed from table.lisp (deleted). 
37         * sql/fdml.lisp: NEW FILE: merger of basic-sql.lisp and sql.lisp
38         (both deleted). 
39         * sql/ooddl.lisp: NEW FILE: ooddl from objects.lisp (deleted). 
40         * sql/oodml.lisp: NEW FILE: oodml from objects.lisp (deleted). 
41         
42 23 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
43         * Version 2.10.22 released
44         * sql/kmr-mop.lisp, sql/objects.lisp: Since SBCL is the only implementation that
45         has reversed class slots, change the default for ordered-class-slots so that slots
46         are now in the same order an in the def-view-class.
47         * sql/sql.lisp: Honor case of string table identifier to INSERT-RECORDS
48         * test/test-fddl.lisp: Add two tests for mixed case names
49         * db-oracle/oracle-sql.lisp: Add missing database qualifier. Return NUMBER (double)
50         for computed fields, this will require some adjustment to the test suite which
51         in many cases expects integers.
52         * test/test-fdml.lisp: Accomodate that Oracle returns doubles for computed columns
53         
54 22 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
55         * Version 2.10.21 released
56         * sql/sequences.lisp: Move generic sequence functions here from db-sqlite,
57         db-odbc, and db-aodbc.
58         * sql/*.lisp: Add db-type parameter to generic functions READ-SQL-VALUE,
59         DATABASE-GET-TYPE-SPECIFIER, and OUTPUT-SQL-VALUE-AS-TYPE. Update methods to use these.
60         * sql/generic-postgresql.lisp, sql/generic-odbc.lisp: New files
61         * db-odbc/odbc-sql.lisp, db-aodbc/aodbc-sql.lisp: Move common code to 
62         sql/generic-odbc.lisp
63         * db-postgresql/postgresql-sql.lisp, db-postgresql-socket/postgresql-socket-sql.lisp: 
64         Move common code to  sql/generic-postgresql.lisp
65         * sql/classes.lisp: honor case of string tables when outputting queries 
66         * sql/objects.lisp: Add database type to default database-get-type-specifier method
67         * sql/sql.lisp:  Add database type to default database-abort-transaction method
68         * db-mysql/mysql-objects.lisp: New file
69         * sql/objects.lisp: Move MySQL specific code to mysql-objects.lisp
70         * sql/utils.lisp: Add GETENV function which will be used to get ORACLE_HOME
71         from environment
72         * test/test-fdml.lisp: String table names are now case sensitive, so convert to
73         default db case for FDML/SELECT/25
74
75 22 May 2004 Kevin Rosenberg
76         * Version 2.10.20 released: Oracle backend now fails 6 out of 200 tests
77         * TODO: Added 2 variances from CommonSQL. Add tests for owner phrases
78         and string identifiers with non-default case
79         * sql/table.lisp: Don't convert string table name to a symbol.
80         * sql/classes.lisp: Honor case of string identifiers
81         * sql/sql.lisp: Ensure recyclebin is purged for Oracle in 
82         TRUNCATE-DATABASE
83         * db-oracle/oracle-sql.lisp: Add sequence functions, fix use of
84         of owner phrases. Obtain server and client versions.
85         * db-oracle/oracle-objects.lisp: Fix type specifiers
86         * tests/test-fddl.lisp: Allow :varchar2 and :number as data types
87         * tests/test-init.lisp: Properly get username from Oracle connection-spec
88         
89 22 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
90         * sql/generics.lisp: reworked docstrings. Remove generics for 
91         ADD-TO-RELATION and REMOVE-FROM-RELATION. 
92         * sql/objects.lisp: reworked docstrings. Changed UPDATE-OBJECT-JOINS 
93         to UPDATE-OBJECTS-JOINS for CommonSQL compatibility. 
94         * sql/package.lisp: Changed UPDATE-OBJECT-JOINS to UPDATE-OBJECTS-JOINS 
95         for CommonSQL compatibility. Remove ADD-TO-RELATION and 
96         REMOVE-FROM-RELATION. 
97         * tests/test-oodml.lisp: Changed UPDATE-OBJECT-JOINS to 
98         UPDATE-OBJECTS-JOINS for CommonSQL compatibility. 
99         * doc/TODO: added notes about extra slot options to DEF-VIEW-CLASS. 
100         * sql/conditions.lisp: add documentation for conditions. Add 
101         SQL-TIMEOUT-ERROR and SQL-FATAL-ERROR for CommonSQL compatibility. 
102
103 21 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
104         * sql/basic-sql.lisp: reworked docstrings. 
105         * sql/transactions.lisp: reworked docstrings. 
106         * sql/sql.lisp: reworked docstrings. 
107         * sql/initialize.lisp: reworked docstrings. INITIALIZE-DATABASE-TYPE 
108         sets *DEFAULT-DATABASE-TYPE* for CommonSQL compatibility. 
109         * sql/database.lisp: reworked docstrings. 
110         * doc/TODO: added notes about START-TRANSACTION and IN-TRANSACTION-P 
111         and FDML extensions and database extensions. 
112
113 20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
114         * db-oracle/oracle-sql: Use clsql-specific error conditions. Use owner keyword.
115         * db-oracle/make9.sh: add makefile for building with Oracle 9 client
116         libraries
117         * sql/table.lisp: Add logic for dealing with Oracle 10g vs. previous
118         Oracle versions with the PURGE option required for drop table. This needs
119         to be converted to a generic function and moved to db-oracle/oracle-sql.lisp
120
121 20 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
122         * sql/classes.lisp: remove unused PARAMS slot in SQL-IDENT-ATTRIBUTE. 
123         * sql/syntax.lisp: remove unused PARAMS keyword arg to SQL-EXPRESSION. 
124         * sql/table.lisp: reworked docstrings. 
125         * sql/objects.lisp: moved *default-update-objects-max-len* here from 
126         table.lisp. 
127         * doc/TODO: notes about :if-does-not-exist arg to DROP-TABLE, 
128         DROP-VIEW and DROP-INDEX and the use of the :transactions and 
129         :constraints keyword args to CREATE-TABLE. 
130         * sql/classes.lisp: the DESCRIPTION argument to CREATE-TABLE is now 
131         CommonSQL compatible with respect to column constraints. 
132
133 20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
134         * sql/oracle-sql.lisp: Now compiles and runs on SBCL.
135         Requires UFFI 1.5.0 or higher
136         
137 20 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
138         * Version 2.10.19
139         * sql/conditions.lisp: Fix cerror
140         
141 19 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
142         * Version 2.10.18 released: New condition hierarchy to be compatible
143         with CommonSQL -- not backward compatible with previous CLSQL.
144         * sql/db-interface.lisp: Add more default methods
145         * sql/objects.lisp: Add explicit table name to order-by parameters
146         in find-all when only one table to avoid selecting a duplicate row.
147         Fix error in FIND-ALL when using :order-by such as (([foo] :asc))
148         as previous logic was adding two fields (foo asc) to SELECT query.
149         Make :result-types :auto be the default for object selections.
150         Properly handle caching key when using multiple order-by with asc/desc
151         directions.
152         * db-oracle/*.lisp: Much improvements, now passes 90% of test suite
153         
154 19 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
155         * sql/recording.lisp: reworked docstrings. 
156         * sql/syntax.lisp: reworked docstrings. 
157         * doc/TODO: added notes about extensions to SQL-RECORDING-P and the 
158         SQL syntax state functions being macros. 
159
160 19 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
161         * sql/package.lisp: Export initialize-database-type and
162         *initialize-database-types* from CLSQL package.
163         * sql/conditions.lisp: Add new CommonSQL compatible conditions,
164         remove old CLSQL conditions.
165         * sql/loop-extensions.lisp: Make errors of type sql-user-error
166         * */*.lisp: Convert to from old to new conditions
167         
168 18 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
169         * sql/table.lisp: Add PURGE to drop command for oracle 10g backend.
170         To handle this difference, will need to add a new database-drop-table
171         generic function.
172         * db-oracle/oracle-sql.lisp: Move server-version and
173         major-version-number to database object to allow multiple connections
174         to Oracle servers of different versions.
175         
176 18 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
177         * TODO: moved notes about backends to doc/TODO. 
178         * doc/TODO: added notes about backends and select extensions. 
179         * sql/base-classes.lisp: remove obsolete schema slot in database 
180         class. 
181         
182 16 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
183         * db-oracle/oracle-api: Add OCIServerVersion
184         * db-oracle/oracle-sql: Query and store server version on connect
185         * sql/db-interface.lisp: Add new db-type-has-bigint? generic
186         function to handle OCI's lack of bigint support
187         * test/test-basic.lisp: Separate bigint testing
188         * test/test-utils.lisp: Add oracle to specs and list of backends
189         * doc/TODO: New file
190         * test/test-fdml.lisp: Added FDML/SELECT/34 to test
191         run-time instantiation of variables in reader macros.
192         * TODO: Remove item already complete. Add note about
193         condition variances
194         
195 16 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
196         * sql/syntax.lisp: added condition to the reader macro to treat [*] 
197         as a column identifier (rather than an operation) for CommonSQL 
198         compatibility. 
199         * tests/test-fdml.lisp: add tests for ORDER-BY and SET-OPERATION 
200         keword args to SELECT, [*] as column identifier, new MAP-QUERY 
201         behaviour and the ANY and ALL operators in subqueries. 
202         * tests/test-init.lisp: add set-operation and subquery tests to 
203         appropriate skip lists. 
204         * sql/objects.lisp: remove redundant and non CommonSQL compatible 
205         ORDER-BY-DESCENDING keyword argument for SELECT. 
206         * sql/classes.lisp: remove redundant and non CommonSQL compatible 
207         ORDER-BY-DESCENDING keyword argument for SELECT. 
208         * tests/test-oodml.lisp: add test for ORDER-BY keyword to SELECT 
209         with object queries. 
210
211 15 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
212         * sql/db-interface.lisp: Add new db-type-has-union? 
213         since Mysql 3.23 does not support unions.
214         * sql/test-init.lisp: Don't try union tests on database
215         backends which do not support it.
216         * db-oracle/*.lisp: initial port to UFFI
217         * sql/objects.lisp: implement UPDATE-OBJECT-JOINS,
218         implement REFRESH for SELECT.
219         * tests/test-oodml.lisp: Add tests for deferred retrieval,
220         caching, refresh, and update-object-joins
221         * tests/test-init.lisp: Add deferred-employee-address class
222         
223 15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
224         * sql/operations.lisp: make MINUS operator a synonym for EXCEPT. Add 
225         COALESCE operator and make NVL a synonym for this. Make ANY, SOME, 
226         ALL and EXISTS generate function expressions so they output the 
227         correct SQL. 
228         * sql/classes.lisp: SELECT now generates appropriate SQL when 
229         passed the SET-OPERATION and ALL keyword arguments. 
230         * sql/classes.lisp: the ORDER-BY keyword argument to SELECT now 
231         accepts ordering constraints as pairs of the form (column direction) 
232         where direction may be :ASC or :DESC. 
233         * tests/test-syntax.lisp: added tests for MINUS and COALESCE/NVL. 
234         Correct tests for ANY, SOME, ALL and EXISTS. 
235         * tests/test-fdml.lisp: added test for COALESCE. 
236         * sql/sql.lisp: MAP-QUERY now applies FUNCTION to QUERY-EXPRESSION 
237         using funcall unless QUERY-EXPRESSION returns one column and its 
238         FLATP slot is not nil in which case apply is used. 
239         * tests/test-basic.lisp: modified calls to MAP-QUERY to reflect the 
240         changes. 
241         * TODO: remove items done. 
242         * db-postgresql/postgresql-sql.lisp: no need to reverse results in 
243         DATABASE-LIST-ATTRIBUTES. 
244         * db-postgresql-socket/postgresql-socket-sql.lisp: no need to reverse
245         results in DATABASE-LIST-ATTRIBUTES.    
246         
247 15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
248         * sql/classes.lisp: SELECT now accepts table identifiers as strings 
249         for CommonSQL compliance. Add support for qualified sql identifiers 
250         with aliased table names. 
251         * tests/test-fdml.lisp: added tests for table identifiers as strings 
252         in SELECT and for aliased definitions. 
253         * tests/test-syntax.lisp: added tests for alias definitions. 
254         
255 15 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
256         * sql/sql.lisp: PRINT-QUERY now calls QUERY with result-types and 
257         field-names set to nil. 
258         * sql/sql.lisp: PRINT-QUERY now computes column sizes correctly 
259         with null attribute values. 
260         * sql/operations.lisp: modify SQL concatenation operator to accept 
261         unescaped || symbol.  
262         * sql/syntax.lisp: modify sql reader macro function to accept 
263         unescaped sql concatenation operator. 
264         * tests/test-fdml.lisp: unescape sql concatenation operator. 
265         * tests/test-syntax.lisp: unescape sql concatenation operator. 
266         * TODO: remove items done. Add notes about SQLITE/MYSQL backends. 
267         Note to add test for universal-time. Note about difference from 
268         CommonSQL in transaction handling. 
269
270 13 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
271         * tests/test-init.lisp: Add deferred-employee-address
272         class
273         * tests/test-oodml.lisp: Add deferred retrieval testgs
274         
275 12 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
276         * Version 2.10.17
277         * LATEST-TEST-RESULTS: Run on all platforms, add AMD64
278         * sql/sql.lisp: Add FOR-EACH-ROW macro from clsql-classic/sql.lisp
279         * db-sqlite/sqlite-uffi-api.lisp: Fix row-pointer type
280         * *: Fix minor style warnings
281         * clsql-classic: Remove system and subdirectory
282         * clsql-base: Remove system and subdirectory and
283         fold into clsql system
284         * doc/intro.xml: Remove reference to old clsql-base. Add x86_64
285         as supported platform.
286         
287 12 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
288         * Version 2.10.16: CLSQL now fully supports AllegroCL AMD64
289         * db-odbc/odbc-api.lisp: work around return-type bug [spr28889] in
290         Allegro 7.0beta AMD64
291         * db-odbc/*.lisp: Add a layer of indirection to foreign-type
292         of ODBC longs since this type can vary on 64-bit platforms depending
293         upon the compilation options of unixODBC.
294         * db-mysql/mysql-api.lisp: Fix int vs. long slots in foreign
295         structures found by testing with AllegroCL 7.0b AMD64.
296         * db-*/*-loader.lisp: Load 64-bit libraries on 64-bit platorms
297         * sql/objects.lisp: Simple implementation of UPDATE-OBJECT-JOINS.
298         Initial caching support for SELECT
299         * tests/test-oodml.lisp: Avoid using cache when testing select.
300         * sql/kmr-mop.lisp: Explicitly check slot order and
301         store as a cl:*feature*
302         * sql/recording.lisp: Remove additional types to
303         increase CommonSQL conformance.
304         * tests/test-init.lisp: Change a :column attribute
305         to test symbols as value
306         * sql/relations.lisp: Remove functions since they don't support
307         many to many relationships.
308         * examples/clsql-tutorial.lisp, doc/csql.lisp: Remove use
309         of add-to-relations function and replace with explicit field settings.
310         * base/classes.lisp: Remove obsolute query-stream. Add record-caches slot.
311         
312 9 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
313         * Version 2.10.15
314         * LATEST-TEST-RESULTS: results with current version
315         * sql/kmr-mop.lisp: Make CMUCL reader macros specific for cmu18
316         since cmu19 has opposite order of class slots.
317         * sql/objects.lisp: Fix (setf slot-value-using-class) for Lispworks
318         * tests/test-fdml.lisp: Renumber SELECT tests to avoid overwriting
319         a previous test
320         * tests/test-init.lisp: Check test-database-underlying-type for
321         ODBC/MySQL tests
322         
323 8 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
324         * sql/operations.lisp: complete remaining operations for the sql 
325         syntax: SUBSTR, SOME, ORDER-BY, GROUP-BY, NULL, DISTINCT, EXCEPT, 
326         UNION, INTERSECT, BETWEEN. 
327         * sql/classes.lisp: add new classes: SQL-BETWEEN-EXPRESSION, 
328         SQL-QUERY-MODIFIER-EXPRESSION and SQL-SET-EXPRESSION. 
329         * tests/test-syntax.lisp: add tests for new operations. 
330         * tests/test-fdml.lisp: add tests for queries based on new operations. 
331         * tests/test-init.lisp: add select/20 to tests skipped for sqlite and 
332         select/20, query/5, query/7 and query/8 to tests skipped by mysql. 
333         * TODO: removed entries done. 
334
335 8 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
336         * tests/benchmarks.lisp: Add immediate vs. deferred
337         join test.
338         
339 8 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
340         * Version 2.10.13: Now works on openmcl 0.14.2 
341         * sql/objects.lisp: Add :retrieval :immediate for
342         object selections
343         * tests/test-init.lisp: Add non-index fields for testing 
344         join class employee-addresss
345         * test/test-oodml.lisp: Add tests for retrieval immediate
346         * sql/metaclasses.lisp: Handle differences in direct-slot-definition 
347         values which are now listifed by openmcl 14.2.
348         * sql/objects.lisp: more framework for supporing immediate retrieval 
349
350 7 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
351         * docs/intro.xml: Upload location of a README file
352         * sql/metaclass.lisp: Work-around openmcl's CHANGE-CLASS
353         changing the type-specifier. Use a lisp type of (OR NULL FOO)
354         for a specified-type of FOO unless :db-constraints :not-null.
355         No need to specialize finalize-inheritance for openmcl.
356         * tests/test-*.lisp: Rename fields so that joins occur on
357         fields with different names. This ensures that join code is
358         selecting the proper name.
359         * test/test-init.lisp: Add :base-table for employee-address
360         view class for testing.
361         * sql/objects.lisp: Use view-table rather than name of table
362         in a number of places to fix errors noted with using :base-table.
363
364 6 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
365         * sql/objects.lisp: replace *update-records-on-make-instance* with 
366         *db-auto-sync* which also controls both automatic creation of 
367         new records on creation of new instance and updating of record 
368         fields on setting of instance slots (as suggested by Edi Weitz). 
369         * tests/test-init.lisp: replace *update-records-on-make-instance* 
370         with *db-auto-sync*. 
371         * sql/package.lisp: replace *update-records-on-make-instance* 
372         with *db-auto-sync*. 
373         * TODO: replace *update-records-on-make-instance* with *db-auto-sync*. 
374         * sql/objects.lisp: remove redundant rebindings of *db-initializing* 
375         and *default-database* in FIND-ALL. 
376         * sql/package.lisp: import time functions from CLSQL-BASE. 
377         * tests/test-time.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
378         * tests/test-fdml.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
379         * tests/test-init.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
380         * tests/test-ooddl.lisp: replace CLSQl-BASE package qualifier with 
381         CLSQL. 
382
383 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
384         * sql/classes.lisp: Add SQL-OBJECT-QUERY type. Have [select 'class]
385         now return a sql-object-query type rather than directly performing a query.
386         This improves CommonSQL conformance.
387         * sql/sql.lisp: Add new QUERY method for SQL-OBJECT-QUERY. Move
388         from basic/basic-sql.lisp the DO-QUERY and MAP-QUERY since they now
389         depend on sql-object-query-type.
390         * sql/loop-extensions.lisp: Move from base package
391         * classic/package.lisp: remove references to map-query and do-query
392
393 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
394         * TODO: New section on optimizations, especially optimizing JOINs.
395         * sql/objects.lisp: Have :target-slot return of list of lists rather
396         than a list of cons pairs to be conformant with CommonSQL.
397         Make :target-slot much more efficient by using a SQL inner join
398         statement and just requiring one SQL query. Add :retrieval :deferrred
399         to target-slot joins. Add placeholder for update-objects-join.
400         * sql/classes.lisp: Add :inner-join and :on slots to sql-query class
401         and process them for query output-sql. 
402
403 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
404         * Version 2.10.11
405         * base/basic-sql.lisp: Avoid multiple evaluation
406         of query-expression in DO-QUERY
407         * sql/objects.lisp: Make SELECT a normal function.
408         SELECT now accepts type-modified database identifiers, such as
409         [foo :string] which means that the values in column foo are returned 
410         as Lisp strings. Add new *update-records-on-make-instance* special
411         variable controlling automatic creation of new instances. Add missing
412         RESULT-TYPES keyword to FIND-ALL. Add :target-slot support.
413         * sql/packages.lisp: Export *update-records-on-make-instance* 
414         * test/test-oodml.lisp: Add tests for :target-slot and many-to-many
415         selections.
416         * test/test-fdml.lisp: Add tests for type-modified
417         database identifiers.
418         * test/test-init.lisp: Stop using add-relation since implementing
419         many-to-many joins. Use *update-records-on-make-instance* 
420         to automatically store records on instance creation. Add many-to-many
421         employee-address view-class.
422         
423 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
424         * Version 2.10.10
425         * base/loop.lisp: Add object iteration. Use :result-type
426         :auto for result-set. Remove 
427         duplicate (and non-correct) code for non-list variables by
428         simply making an atom variable into a list. 
429         * sql/package.lisp: Remove unnecessary clsql-sys package
430         and replace it with clsql.
431         * sql/metaclasses.lisp: Properly store specified-type from
432         direct-slot-definition and then store translated type in
433         effective-slot-definition
434         * sql/classes.lisp: Don't output type in sql-output
435         for SQL-IDENT-ATTRIBUTE. This is in preparation for supporting
436         [foo :integer] as fields in SELECT.
437         * sql/query.lisp: Set default for :result-types to :auto in
438         FDML QUERY.
439         * sql/objects.lisp: Use specified-type when invocating 
440         database-get-type-specifier. def-view-class macro now returns
441         the class instance.
442         * base/basic-sql.lisp: Make :AUTO the default value for
443         :RESULT-TYPES for MAP-QUERY and DO-QUERY.
444         * sql/objects.lisp: Add bigint type
445         * test/tests-basic.lisp: Add tests for :result-types for
446         MAP-QUERY and DO-QUERY
447         * test/test-fdml.lisp: Add test for result-types in LOOP
448         and also using single symbol rather than a list for variables.
449         Add test that default :result-types is auto for FDML QUERY.
450         * test/test-syntax.lisp: Don't expect TYPE in the SQL-OUTPUT
451         of SQL-IDENT-ATTRIBUTE.
452         * test/test-oodml.lisp: Enable OO loop iteration test,
453         modify it so it doesn't depend on boolean where.
454         
455 4 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
456         * Version 2.10.9
457         * sql/objects.lisp: added derived type specifier for universal time. 
458         * sql/package.lisp: added #:universal-time to clsql-sys exports. 
459         * tests/test-oodml.lisp: added test for translation of boolean slots 
460         in SELECT with object queries. 
461         
462 3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
463         * db-odbc/odbc-api.lisp: Fix changing nil to "NIL" 
464         for odbc/postgresql backend.
465         * db-odbc/odbc-sql.lisp: Fix ATTRIBUTE-TYPE so that
466         it can handle NIL values from the ODBC driver
467         * tests/benchmarks.lisp: New file with initial
468         benchmark suite
469         * sql/relations.lisp: fix to add subclassing support,
470         minor optimizations [Edi Weitz]
471         
472 3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
473         * Version 2.10.8        
474         * base/conditions.lisp: Add *backend-warning-behavior*
475         special variable.
476         * db-postgresql-socket/postgresql-socket-sql.lisp:
477         Honor value of *backend-warning-behavior*
478         * tests/test-fdml.lisp: Remove test of raw boolean value
479         since different backends handle this differently. Add
480         test for :column attribute.
481         * tests/test-oodml.lisp: Add tests for boolean slot value
482         and for :void-value attribute
483         * tests/test-init.lisp: Use *backend-warning-behavior*
484         to suppress warnings from postgresql about implicitly
485         creating primary key in tables. Add new address table.
486         
487 3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
488         * Version 2.10.7
489         * db-odbc/odbc-dbi.lisp: Convert TINYINT to integers when
490         result-types is :auto
491         * sql/objects.lisp: Properly handled writing/reading Boolean
492         values from SQL database when retrieving objects.
493         * test/test-fdml.lisp: Add another test for boolean results
494         * test/utils.lisp: Fix incorrect declaration
495         
496 2 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
497         * Version 2.10.6
498         * sql/generics.lisp: add generic function for SELECT. 
499         * sql/objects.lisp: make SELECT a method specialisation. 
500         * sql/classes.lisp: MAKE-QUERY now calls SELECT if the selections 
501         referred to are View Classes. 
502         * base/basic-sql.lisp: in DO-QUERY and MAP-QUERY, if the 
503         query-expression arg evaluates to a list, then we have an object 
504         query. 
505         * tests/test-oodml.lisp: add tests for DO-QUERY and MAP-QUERY with 
506         object queries. 
507         * TODO: remove items done and add a todo for SELECT. 
508         * sql/objects.lisp: SELECT takes a :field-names arg to pass on to 
509         QUERY. 
510         * sql/sql.lisp: add :field-names arg to QUERY. 
511         * tests/test-fdml.lisp: minor rework to use :field-names arg to 
512         SELECT. 
513
514 2 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk)
515         * sql/objects.lisp: fix bug in FIND-ALL when SELECT called with 2 
516         or more View Classes. 
517         * sql/objects.lisp: make the :flatp argument to SELECT work with 
518         object queries. 
519         * sql/objects.lisp: make SELECT accept a :result-types argument 
520         (defaults to :auto) which is passed on to QUERY.  
521         * sql/objects.lisp: SELECT returns field-names as a second value. 
522         * tests/test-ooddl.lisp: add flatp arg to SELECT calls as appropriate. 
523         * tests/test-fdml.lisp: add flatp/result-types arguments to calls 
524         to SELECT and take only first value as appropriate.
525         * tests/test-fdml.lisp: add two new tests for query result coercion 
526         and the field-names returned as a second value from SELECT. 
527         * tests/test-oodml.lisp: add flatp arg to SELECT calls as appropriate. 
528         
529 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
530         * Version 2.10.6-pre1
531         * sql/metaclasses.lisp: Add void-value slot
532         * doc/csql.xml: Update def-view-class documentation
533         * test/test-init.lisp: Change old :db-type to :db-kind.
534         Remove old :nulls-ok attributes.
535         * sql/objects.lisp: Add new universal-time and bigint
536         types. Optimize reading of integers using parse-integer
537         rather than read-from-string.
538         * */*.lisp: Merge clsql-base-sys and clsql-base packages
539         into clsql-base package
540         * classic/sql.lisp: Move large object support into base, leaving
541         classic without any functionality that is provided in the clsql
542         system.
543         * classic/package.lisp: Rename clsql-classic-sys package to
544         its former nickname of clsql-classic
545         
546 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
547         * Version 2.10.5: SQLite backend now passes all result-types tests
548         * clsql-sqlite.asd: Depend on clsql-uffi system
549         * db-sqlite/sqlite-sql.lisp: Use clsql-uffi:convert-raw-field
550         for efficiency and code reuse. 
551         * db-sqlite/sqlite-api-uffi.lisp: Change (* :char) to (* :unsigned-char)
552         for better cross-implementation compatibility.
553
554 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
555         * Version 2.10.4
556         * sql/tables.lisp: Fix typo in CACHE-TABLE-QUERIES
557         [Marcus Pearce]
558         * db-postgresql/postgresql-sql.lisp: Fix foreign-string vs. cstring
559         bug on SBCL in result-field-names function as reported by Marcus Pearce
560         * db-sqlite/sqlite-sql.lisp: Fix  in database-store-next-row
561         manifest in SBCL testing
562         
563 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
564         * Version 2.10.3
565         * sql/database.lisp: Conform more to CommonSQL output
566         for STATUS command [Marcus Pearce]
567         * sql/sqlite-sql.lisp: Rework to use result-types
568         * sql/sqlite-api-clisp.lisp: Add compatibility layer
569         with sqlite-api-uffi.lisp so that sqlite-sql.lisp can
570         be cleaned up of most clisp reader conditionals
571         * sql/test-init.lisp: Now run field type tests on sqlite
572         backend
573         
574 30 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
575         * Version 2.10.2
576         * base/basic-sql.lisp: Set default value of :result-types 
577         to :auto for more CommonSQL conformance. 
578         * test/test-fdml.lisp: Add tests for numeric value of fields
579         
580
581 30 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
582         * Version 2.10.1: New API function: CACHE-TABLE-QUERIES.
583         * base/basic-sql.lisp, db-*/*-sql.lisp: More CommonSQL conformance.
584         Return field names as second value for QUERY. This can be overridden
585         for efficiency with the new keyword :FIELD-NAMES set to NIL
586         in the QUERY invocation.
587         * test/test-fdml.lisp: Add tests for new field-name feature
588         * sql/metaclass.lisp: Remove old Lispworks cruft
589         and replace it with invocation of new code in kmr-mop.lisp
590         which actually works with Lispworks 4.2
591         * doc/ref_clsql.xml: Document new :FIELD-NAMES keyword to
592         QUERY function
593         * base/db-interface.lisp: Document the multiple values
594         returned by DATABASE-ATTRIBUTE-TYPE so matches the
595         undocumented CommonSQL behavior. 
596         * sql/table.lisp: Add *CACHE-TABLE-QUERIES-DEFAULT* and
597         *DEFAULT-UPDATE-OBJECTS-MAX-LEN* variables and export them.
598         LIST-ATTRIBUTE-TYPES now conforms to CommonSQL spec.
599         Implement CACHE-TABLE-QUERIES.
600         * db-odbc/odbc-sql.lisp: Fix attribute-type function
601         * test/test-fddl.lisp: Add tests for attribute type     
602         * db-mysql/mysql-sql.lisp: Mild optimization in accessing
603         field structures.
604         * base/classes.lisp: Add attribute-cache slot to database clas
605         * base/initialize.lisp: initialize-database-type now automatically
606         loads database-type backend as needed.
607         * base/test-init.lisp: Utilize new initialize-database-type functionality.
608         * TODO: remove items done
609         
610 30 Apr 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
611         * Version 2.9.6
612         * sql/objects.lisp: remove create/drop-sequence-from-class. 
613         * sql/objects.lisp: add INSTANCE-REFRESHED generic function. 
614         * sql/objects.lisp: improved CommonSQL compatibility for
615         UPDATE-RECORD-FROM-SLOT, UPDATE-RECORD-FROM-SLOTS,
616         UPDATE-RECORDS-FROM-INSTANCE and DELETE-INSTANCE-RECORDS. 
617         * sql/generics.lisp: move generics from objects.lisp to here. 
618         
619 29 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
620         * Version 2.9.6-pre1
621         * db-mysql/mysql-client-info.lisp: Add client version 4.1
622         detection
623         * sql/sql.lisp: Make *default-database* the default for
624         TRUNCATE-DATABASE
625         
626 28 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
627         * Version 2.9.5
628         * db-mysql/mysql-sql.lisp: Fix bug in transaction capability
629         detection
630         * sql/objects.lisp: Commit patch from Slawek Zak to allow specifying 
631         :metaclass in DEF-VIEW-CLASS invocation. This allows defining classes 
632         on a metaclass specialized from standard-db-class.
633
634         
635 24 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
636         * Version 2.9.4: Multiple changes to support Allegro's "modern"
637         lisp which uses a lowercase reader and has case-sensitive symbols
638         * sql/classes.lisp: Fix make-load-form bug for sql-ident-table
639         exposed by case-sensitive mlisp. 
640
641 22 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
642         * Version 2.9.3: All tests now pass on all platforms!
643         * LATEST-TEST-RESULTS: New file with summary of test results
644         * sql/generics.lisp: New file for generic function definitions.
645         * test/test-init.lisp: Display names of skipped tests.
646         Use unwind-protect to ensure disconnect
647         * sql/objects.lisp: Change database-type to database-underlying-type
648         so that actual database engine is properly identified
649         * db-odbc/odbc-api.lisp: Have default *time-conversion-function*
650         return an ISO timestring for compatibility with other drivers.
651         Workaround bug in MyODBC for LIST-TABLE-INDEXES
652         * test/test-fdml.lisp: Accomodate that odbc-postgresql driver
653         returns floating-point values for floor and truncate operations 
654         * db-aodbc/aodbc-sql.lisp: Implement DATABASE-LIST-VIEWS
655         * tests/test-basic.lisp: Port to regression tester
656         * test/test-init.lisp: Output to *report-stream*
657         * docs/appendix.xml: Document ODBC and SQLite backends.
658         * sql/classes.lisp: Make output-sql require a database parameter.
659         This allows SQL generation to have the proper case to support
660         the differences in case handling between CommonSQL API,
661         Postgresql, MySQL, Oracle.
662         
663 21 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
664         * Version 2.9.2: Improvments in database capability introspection
665         and querying. Support transactions in MySQL where available.
666         All tests now pass on MySQL and SQLite in addition to postgresql
667         and postgresql-socket. ODBC fails only with OODDL/TIME/1 and OODDL/TIME/2.
668         * db-odbc/odbc-sql.lisp: Add DATABASE-LIST-VIEWS. Better support
669         DATABASE-LIST-SEQUENCES.
670         * clsql-uffi.asd, clsql-mysql.asd: Improve shared library loading
671         * Database_capabilies: add HAS-VIEWS, HAS-CREATE/DESTROY-DB,
672         HAS-BOOLEAN-WHERE, TRANSACTION-CAPABLE
673         * tests/*.lisp: Check database capabilities and remove tests which
674         the database backend does not support
675         * sql/table.lisp: Add :TRANSACTIONS keyword to create table which
676         controls whether InnoDB tables will be created when supported on
677         the underlying MySQL server.
678         
679 20 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
680         * Version 2.9.0: New API function: LIST-TABLE-INDEXES,
681         supported by all database backends (except AODBC since
682         AODBC doesn't support index querying)
683         * db-obdc/odbc-sql.lisp: Support DATABASE-LIST-INDEXES
684         * db-odbc/odbc-api.lisp: Add %TABLE-STATISTICS function
685         to support index queries
686         * db-aodbc/aodbc-sql.lisp: Filter driver manager
687         "information_schema" tables from LIST-TABLES
688         * tests/test-basic.lisp: Remove table after testing
689         * tests/test-fddl.lisp: Test LIST-TABLE-INDEXES
690         * base/db-interface.lisp: Add DATABASE-UNDERLYING-TYPE
691         which gets the underlying type of database -- required
692         when dealing with ODBC databases and want to query
693         database capabilities. Added DB-USE-COLUMN-ON-DROP-TABLES?
694         as first database-backend specific feature. Is T on
695         :mysql, NIL on other backends. Change DROP-TABLE to
696         query this.
697         
698 19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
699         * Version 2.8.2: Build changes for FreeBSD [Slawek Zak]
700
701 19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
702         * Version 2.8.1
703         * db-odbc/odbc-sql.lisp: Add DATABASE-LIST function 
704         * db-odbc/odbc-dbi.lisp: Add LIST-ALL-DATA-SOURCES function 
705
706 19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
707         * Version 2.8.0: New API function: LIST-DATABASES
708         * base/utils.lisp: Fix command-output on CMUCL/SBCL
709         * db-*/*-sql.lisp: Add new database-list function
710         * base/database.lisp: Add new LIST-DATABASES command
711         
712 18 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
713         * Version 2.7.9
714         * db-sqlite/sqlite-sql.lisp: Fix sequence functions.
715         * db-sqlite/sqlite-api-uffi.lisp: Print error string
716         correctly.
717         
718 18 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
719         * Version 2.7.7
720         * doc/csql.xml, examples/clsql-tutorial.lisp: Patch for db-kind
721         from Eduardo Munoz.
722         
723 17 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
724         * Version 2.7.6
725         * base/objects.lisp, base/classes.lisp: Patch
726         for db-kind from Eduardo Munoz
727         
728 16 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
729         * Version 2.7.5
730         * base/basic-sql.lisp: Fix FLATP in QUERY
731
732 16 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
733         * Version 2.7.3: Implement RECONNECT
734
735 15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
736         * Version 2.7.2: Fix ODBC on Lispworks Windows
737
738 15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
739         * Version 2.7.1: Fix for new ODBC backend.
740         clsql-odbc now works on SBCL, CMUCL, OpenMCL
741         in addition to AllegroCL and Lispworks.
742
743 15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
744         * Version 2.7.0: New backend: ODBC. Tests as
745         well as AODBC backend on Allegro,Lispworks.
746         SBCL and CMUCL don't work quite yet.  Requires UFFI v1.4.11+
747         * db-odbc/*.lisp: Add ODBC3 function SQLSetEnvAttr
748         to explicitly set ODBC2 support. Add BIGINT support.
749         Add result-types support. Added SQLTables.
750         Fix array type in fetch-all-rows. Make width
751         changable by database or query.
752         * base/utils.lisp: Add process functions
753         * base/package.lisp: Export utils to CLSQL-BASE-SYS
754         * db-aodbc: Implement sequence functions,
755         database-list-tables, database-list-attributes
756         * tests/utils.lisp: Add support for ODBC backend,
757         rework READ-SPECS to use +all-db-types+
758         * db-mysql/mysql-sql.lisp: Use WITHOUT-INTERRUPTS
759         for SEQUENCE-NEXT
760         
761 13 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
762         * Version 2.6.13. Requires UFFI version 1.4.9
763         * db-odbc/*.lisp: Further porting.
764         Pre-alpha code! But, basic query is now working.
765
766 13 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
767         * Version 2.6.12
768         * base/transactions.lisp: Add quote for macro
769         expansion of WITH-TRANSACTIONS [Time Howe]
770         * db-sqlite/sqlite-sql.lisp: Support memory database
771         in database-probe [Ng Pheng Siong]
772         * db-odbc/*.lisp: Initial port to UFFI of SQL-ODBC.
773         The DBI layer is not finished.
774         
775 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
776         * Version 2.6.11
777         * sql/objects.lisp: add :root-class functionality for
778         list-classes and add duration type support [Marcus Pearce]
779         * db-odbc: Add mid-level [DBI] layer
780
781 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
782         * Version 2.6.10
783         * db-aodbc: Add methods for generic functions, some are
784         not yet implemented.
785         * clsql-odbc.asd, db-odbc/*.lisp: Initial start of ODBC
786         support
787
788 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
789         * Version 2.6.9
790         * base/package.lisp: Add missing symbols [Marcus Pearce]
791
792 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
793         * Version 2.6.8
794         * test/test-fddl.lisp: Cleanup fix [Marcus Pearce]
795         * utils/time.lisp: Multiple fixes [Marcus Pearce]
796         * sql/sql.lisp: Fix for truncate-database [Marcus Pearce]
797         
798 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
799         * Version 2.6.7
800         * sql/*.lisp: Remove schema versioning cruft
801         [Marcus Pearce]
802         * Makefile: Add classic subdirectory
803         
804 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
805         * Version 2.6.6
806         * sql/sql.lisp: Fix TRUNCATE command, bug reported
807         by Marcus Pearce
808         * sql/sql.lisp: Remove EXPLAIN function. Postgresql/Oracle
809         specific and easy for an application to directly support.
810         Idea from Marcus Pearce.
811         * base/basic-sql.lisp: Remove DESCRIBE-TABLE top-level 
812         API as duplicates LIST-ATTRIBUTE-TYPES [Marcus Pearce].
813         Keep low-level interface for future optimization
814         supporting LIST-ATTRIBUTE-TYPES command.
815         * Makefile: Add to db-sqlite and test directories.
816         Include them in top-level Makefile
817         
818 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
819         * Version 2.6.5
820         * sql/relations.lisp: Add missing file
821         * utils/time.lisp: Fixes/extensions [Marcus Pearce]
822         * test/test-time.lips: New file [Marcus Pearce]
823         
824 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
825         * Version 2.6.4
826         * test/test-init.lisp: Properly handle object
827         creation. Close database after use.
828         * sql/sql.lisp: Make DESCRIBE-TABLE a generic
829         function so can have methods specialized on
830         table being a string or an sql-table object.
831         * base/pool.lisp: Really fix CMUCL locking
832         
833 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
834         * Version 2.6.3
835         * test/test-init.lisp: Signal correctly
836         if any errors occurred in any test suite
837         * base/loop-extensions.lisp: Fix error
838         introduced for Lispworks
839         * base/pool.lisp: Fix locking for CMUCL
840         * base/objects.lisp: Remove schema-version cruft
841         
842 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
843         * Version 2.6.2: New CLSQL API functions:
844         DESCRIBE-TABLE AND TRUNCATE-DATABASE
845         Currently, this are only supported on :postgresql
846         and :postgresql-socket
847         * base/database.lisp: automatically load ASDF system
848         in CONNECT if not already loaded
849         * base/tests.lisp: disconnect database after testing 
850         * base/*.lisp: Remove CLOSED-DATABASE type in favor
851         of storing open/closed status in slot of database
852         * base/pool.lisp: Support locks for CMUCL, OpenMCL, SBCL
853         * db-postgresql/postgresql-sql.lisp: add DATABASE-RECONNECT,
854         DATABASE-DESCRIBE-TABLE
855         * db-sqlite/sqlite-sql.lisp: Add missing slots in database
856         * base/conditions: Remove duplicate condition
857         * db-*/*-sql.lisp: Fill new database slot DATABASE-TYPE
858         * base/recording.lisp: Add new :QUERY type for recording
859         
860 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
861         * Version 2.6.1: documentation fixes, merged
862         classic-tests into tests
863
864 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
865         * Version 2.6.0 released: New API functions
866         CREATE-DATABASE, DESTORY-DATABASE, PROBE-DATABASE
867         * doc/ref_clsql.xml: Document new functions
868         * base/database.lisp: New API functions
869         * base/conditions.lisp: Added CLSQL-ACCESS-ERROR
870         * base/utils.lisp: Fix use of position-char.
871         Add COMMAND-OUTPUT used by backends for running
872         external programs. Fix parsing of SQL*NET-compatible
873         connection-specs.
874         * base/loop-extension.lisp: Simplify package use
875         for Lispworks and Allegro
876         * db-*/*-sql.lisp: Added DATABASE-CREATE,
877         DATABASE-DESTORY, PROBE-DATABASE methods
878         * tests/test-init.lisp, clasic-tests/tests.lisp:
879         Use destroy-database and create-database to ensure 
880         testing with empty database
881         * tests/test-connection.lisp: Add tests for
882         parsing of string connection-specs
883         * examples/run-tests.sh: New file for running
884         test suite on all installed CL implementations
885         * examples/clsql-tutorial.lisp: moved from
886         doc directory
887         * examples/dot.clsql-tests.config: New file
888         giving an example test configuration
889         * test/README: Add notes about rtest/ptester
890         downloads and link to sample test configuration file.
891         
892 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
893         * Version 2.5.1 released:
894         * tests/*.lisp: Rework so tests are run
895         on multiple backends automatically based
896         on the contents of ~/.clsql-tests.config.
897         Reuse helper functions from classic-tests.
898         * base/database.lisp: Support connection-spec
899         as string for CONNECT
900         * classic-tests/tests.lisp: Automatically
901         load database backends as needed. 
902         
903 09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
904         * Version 2.5.0 released:
905         All tests for CLSQL and CLSQL-CLASSIC pass
906         on all platforms.
907         * base/loop-extension.lisp: Add Lispworks
908         loop-extension. Improve type specifying on
909         other platforms.
910         
911 09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
912         * Version 2.4.2 released:
913         loop extension now supported on Allegro, all
914         CLSQL-TESTS pass on Allegro.
915         * sql/metaclasses.lisp: Some optimization
916         of compute-slots, be selective when
917         ordered-class-slots needs to be called
918         instead of class-slots
919         * TODO: add URL with documentation on
920         extending Lispworks LOOP form
921         
922 09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
923         * Version 2.4.1 released: CLSQL-TESt suite passes
924         all tests for postgresql and CMUCL, SBCL, OpenMCL.
925         Allegro and Lispworks pass all tests except for
926         FDML/LOOP/1 since the loop extension have not yet
927         been ported to those implementions.
928         * sql/metaclasses.lisp: Added new slot to standard-db-class
929         to hold user-specified type. OpenMCL adjustments to compensate
930         for its type-predicate function. Since AllegroCL, Lispworks,
931         and OpenMCL have different slot orders, added compute-slots
932         and ordered-class-slots functions so their slot order matches
933         SBCL/CMUCL.
934
935 08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
936         * Version 2.4.0 released: All tests for clsql-classic now finish
937         correctly on Allegro, Lispworks, CMUCL, SBCL, OpenMCL for
938         mysql, postgresql, postgresql-sockets, and sqlite backends.
939         * db-mysql/mysql-sql.lisp: Fix array dereferencing
940         * classic-tests/tests.lisp: Fix package name of
941         number-to-sql-string. 
942         * clsql.asd/clsql-tests.asd: Add support for asdf:test-op
943         * db-sqlite/sqlite-api-{uffi,sql}.lisp: Multiple UFFI fixes,
944         now passes tests on all support UFFI platforms.
945         * db-postgresql-socket/postgresql-socket-api.list: Ported to 
946         SBCL and OpenMCL
947         * multiple: Finish renaming of :types keyword to :result-types for
948         greater CommonSQL compatibility, including documentation
949         * sql/basic-cmds.lisp: Remove obsolete file
950         
951 08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
952         * Version 2.3.3 released
953         * Fixes for sequences on mysql and sqlite [Marcus Pearce]
954         * Fixes for uffi sqlite backend [Aurelio Bignoli / Kevin Rosenberg]
955         * Fix for schema table [Marcus Pearce]
956         * Add loop extension support for SBCL and OpenMCL [Marcus Pearce]
957         * Fixes to test suite [Marcus Pearce]
958
959 06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
960         * db-*/*-sql.lisp: Ensure that expr in
961         database-query-result-set is a string
962         * Documentation integration
963         
964 06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
965         * With for Marcus Pearce's excellent work, I've merged
966         his clsql-usql port into clsql. The original clsql
967         interface is available in the clsql-classic package.
968
969 02 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
970         * Integrate patch from Marcus Pearce <ek735@soi.city.ac.uk>
971         adding further support for providing backend for UncommonSQL
972
973 10 Mar 2004 Kevin Rosenberg (kevin@rosenberg.net)
974         * Integrate patch from Aurelio Bignoli for SQLite backend
975
976 11 Nov 2003 Kevin Rosenberg (kevin@rosenberg.net)
977         * Converted documentation to XML format
978         * Made package installable with asdf-install
979
980 23 Jul 2003 Kevin Rosenberg (kevin@rosenberg.net)
981         * Add for-each-row macro
982
983 12 Dec 2002 Kevin Rosenberg (kevin@rosenberg.net)
984         * uffi/clsql-uffi.lisp: return NIL for numeric fields that are NULL
985         
986 16 Oct 2002 Kevin Rosenberg (kevin@rosenberg.net)
987         * Add support for SBCL, OpenMCL, and SCL
988         * Add *load-truename* to search path for clsql's
989         compiled libraries.
990
991 01 Sep 2002 Kevin Rosenberg (kevin@rosenberg.net)
992         * Rework use of file types in .asd files
993
994 17 Aug 2002 Kevin Rosenberg (kevin@rosenberg.net)
995         * Add .asd definition files for ASDF users
996
997 31 Jul 2002 Kevin Rosenberg (kevin@rosenberg.net)
998         * Restructure directories for Common Lisp Controller v3 compatibility
999
1000 25 Jul 2002 Kevin Rosenberg (kevin@rosenberg.net)
1001         * Also change case of logical host in loader files
1002         * Rework handling of logical pathnames
1003         
1004 05 Jul 2002 Kevin Rosenberg (kevin@rosenberg.net)
1005         * Change case of logical host
1006         
1007 14 May 2002 Kevin Rosenberg (kevin@rosenberg.net)
1008         * clsql-base.system: Added base package that can be used without
1009         high-level SQL commands. Used for adding support for UncommonSQL.
1010         * *.system: Reworked logical pathnames to be more consistent with
1011         Common Lisp Controller.
1012         * debian/*: Completed initial Debian support
1013         
1014 10 May 2002 Marc Battyani (marc.battyani@fractalconcept.com)
1015         * sql/classes.cl:
1016         * sql/transactions.cl:
1017         Added transaction support. Functions/macros added:
1018         with-transaction, commit-transaction, rollback-transaction,
1019         add-transaction-commit-hook, add-transaction-rollback-hook
1020
1021 04 May 2002 Marc Battyani (marc.battyani@fractalconcept.com)
1022         * sql/sql.cl:
1023         * sql/pool.cl:
1024         * sql/functional.cl:
1025         Added pool support in connect/disconnect and with-database.
1026         Removed with-db-from-pool as with-database can now works with the connections pool
1027
1028 01 May 2002 Marc Battyani (marc.battyani@fractalconcept.com)
1029         * sql/sql.cl:
1030         * sql/pool.cl:
1031         * sql/classes.cl:
1032         * sql/package.cl:
1033         Completed connection pool.
1034         Added with-db-from-pool macro.
1035         
1036 27 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
1037         * Multiple files:
1038         Added initial support for connection pool
1039         * sql/transactions.cl
1040         Took transaction code from UncommonSQL and integrated
1041         into CLSQL code. See file for disclaimer about why this
1042         was added.
1043
1044 23 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
1045         * interfaces/postgresql/postgresql-sql.cl:
1046         Fix keyword typo in database-read-large-object
1047         * interfaces/mysql/mysql-loader.cl
1048         Fix loading on Win32
1049         * test-suite/tester-clsql.cl
1050         Fix type coercion of double-float
1051         * doc/*
1052         Added debian docbook catalog, made it the default
1053         
1054 19 Apr 2002 Marc Battyani (marc.battyani@fractalconcept.com)
1055         * interface/postgresql/postgresql-api.cl:
1056         * interface/postgresql/postgresql-sql.cl:
1057         * sql/sql.cl:
1058         * sql/db-interface.cl:
1059         Added large objects support for postgresql.
1060
1061 07 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
1062         * src/postgresql-socket/postgresql-socket-api.cl:
1063         Fixed find-foreign-function call, eliminated crypt warning
1064         * Makefiles:
1065         Multiple improvements
1066         * sql/usql.cl:
1067         Moved functionality from low-level interfaces to this file
1068         via generic functions
1069         * test-suite/tester.cl:
1070         Added test with acl-compat-tester, moved others to old-tests
1071         directory.
1072         
1073 06 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
1074         * src/usql.cl:
1075         Reinstated commented out sections
1076         * interfaces/postgresql/postgresql-loader.cl:
1077         * interfaces/mysql/mysql-loader.cl:
1078         Updated find-forieign-library support.
1079         * interfaces/postgresql-socket/postgresql-socket-package.cl:
1080         Fixed require form for Lispworks (Thanks Marc Battyani!)
1081         * interfaces/postgresql-socket/postgresql-socket-api.cl:
1082         Fixed eval of def-function for crypt library.
1083                 
1084 31 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1085         * Added interface to support USQL high-level rouines
1086         
1087 29 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1088         * Separated db-interface and conditions from sql/sql.cl
1089         * Improved foreign library loading testing
1090         * interfaces/postgresql/postgresql-api.cl
1091         Added PQisBusy function
1092         * interfaces/clsql-uffi/clsql-uffi.cl
1093         Fixed sign error for 64-bit processing
1094         
1095 27 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1096         * interfaces/postgresql-socket/postgresql-socket-api.cl:
1097         Fixes to read-double-from-socket. Added 64-bit integer support.
1098         * test-suite/xptest-clsql.cl
1099         Added testint for 64-bit integers
1100         * Additons to installation docs
1101         
1102 26 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1103         * interfaces/postgresql-socket/postgresql-socket-api.cl:
1104         Implemented direct socket reading for field type :double
1105         * Added usage information for :types to documentation
1106         * interfaces/mysql/mysql-sql.cl: Fixed type specifiers in atoi,
1107         atol, atof calls
1108         * interfaces/clsql-uffi: Created new directory. Split common
1109         interface routines that use UFFI into this package. Required
1110         especially to support direct reading of 64-bit integers into
1111         bignums and bypassing temporary strings.
1112         * test-clsql.cl: Updated to test postgresql-socket's
1113         read-double-from-socket function.
1114         * test-suite/xptest-clsql.cl
1115         Started work on test suite
1116
1117 25 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1118         * interfaces/mysql/mysql-api.cl: Added mysql-fetch-fields,
1119         mysql-fetch-field-direct Got :auto types working
1120         * interfaces/postgresql/postgresql-api.cl
1121         * interfaces/postgresql-socket/postgresql-socket-api.cl
1122         Added pgsql-field-types enum. Got :auto types working.
1123         * multiple-files
1124         Renamed :field-types to :types.
1125         
1126 24 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1127         * Added field-types parameter to query, database-query,
1128         database-query-result-set, map-query. Haven't added code
1129         to utilize field types, yet.
1130         * Changed postgresql-socket result set from cons to a structure
1131         * Updated test-clsql.cl to use automated testing with a config
1132         file
1133         * Changed return types of field accessors from cstring to
1134         (* :unsigned-char).  This prepares for being able to use specified
1135         type conversions when taking field data into lisp.
1136         * Added field-type processing for most interfaces. Not done yet.
1137         
1138 23 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
1139         * doc/ref.sgml: Updated MAP-QUERY example to use
1140         *read-default-float-format* (John Foderaro)
1141         * Extensive work to foreign library loaders and .system files to
1142         check for successful loading of foreign libraries.
1143         * Modified test-clsql.cl to allow more modularity and
1144         automated testing in future release.
1145         * mysql/mysql-sql.lisp: Added field types
1146         
1147 01 Jan 2002 Kevin Rosenberg (kevin@rosenberg.net)
1148         * mysql/mysql-sql.lisp:
1149         - Added support for Allegro CL and Lispworks using UFFI layer
1150         - Changed database-connect to use mysql-real-connect. This way,
1151           can avoid using double (unwind-protect)
1152         - Changed database-connect to have MySQL library allocate space
1153           for MYSQL structure. This will make the code more robust in
1154           the event that MySQL library changes the size of the mysql-mysql
1155           structure.
1156
1157