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