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