r9309: fix recording reversion
[clsql.git] / ChangeLog
1 10 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
2         * sql/kmr-mop.lisp: Explicitly check slot order and
3         store as a cl:*feature*
4         * sql/recording.lisp: Remove additional types to
5         increase CommonSQL conformance.
6         * tests/test-init.lisp: Change a :column attribute
7         to test symbols as value
8         
9 9 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
10         * Version 2.10.15
11         * LATEST-TEST-RESULTS: results with current version
12         * sql/kmr-mop.lisp: Make CMUCL reader macros specific for cmu18
13         since cmu19 has opposite order of class slots.
14         * sql/objects.lisp: Fix (setf slot-value-using-class) for Lispworks
15         * tests/test-fdml.lisp: Renumber SELECT tests to avoid overwriting
16         a previous test
17         * tests/test-init.lisp: Check test-database-underlying-type for
18         ODBC/MySQL tests
19         
20 8 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
21         * sql/operations.lisp: complete remaining operations for the sql 
22         syntax: SUBSTR, SOME, ORDER-BY, GROUP-BY, NULL, DISTINCT, EXCEPT, 
23         UNION, INTERSECT, BETWEEN. 
24         * sql/classes.lisp: add new classes: SQL-BETWEEN-EXPRESSION, 
25         SQL-QUERY-MODIFIER-EXPRESSION and SQL-SET-EXPRESSION. 
26         * tests/test-syntax.lisp: add tests for new operations. 
27         * tests/test-fdml.lisp: add tests for queries based on new operations. 
28         * tests/test-init.lisp: add select/20 to tests skipped for sqlite and 
29         select/20, query/5, query/7 and query/8 to tests skipped by mysql. 
30         * TODO: removed entries done. 
31
32 8 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
33         * tests/benchmarks.lisp: Add immediate vs. deferred
34         join test.
35         
36 8 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
37         * Version 2.10.13: Now works on openmcl 0.14.2 
38         * sql/objects.lisp: Add :retrieval :immediate for
39         object selections
40         * tests/test-init.lisp: Add non-index fields for testing 
41         join class employee-addresss
42         * test/test-oodml.lisp: Add tests for retrieval immediate
43         * sql/metaclasses.lisp: Handle differences in direct-slot-definition 
44         values which are now listifed by openmcl 14.2.
45         * sql/objects.lisp: more framework for supporing immediate retrieval 
46
47 7 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
48         * docs/intro.xml: Upload location of a README file
49         * sql/metaclass.lisp: Work-around openmcl's CHANGE-CLASS
50         changing the type-specifier. Use a lisp type of (OR NULL FOO)
51         for a specified-type of FOO unless :db-constraints :not-null.
52         No need to specialize finalize-inheritance for openmcl.
53         * tests/test-*.lisp: Rename fields so that joins occur on
54         fields with different names. This ensures that join code is
55         selecting the proper name.
56         * test/test-init.lisp: Add :base-table for employee-address
57         view class for testing.
58         * sql/objects.lisp: Use view-table rather than name of table
59         in a number of places to fix errors noted with using :base-table.
60
61 6 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
62         * sql/objects.lisp: replace *update-records-on-make-instance* with 
63         *db-auto-sync* which also controls both automatic creation of 
64         new records on creation of new instance and updating of record 
65         fields on setting of instance slots (as suggested by Edi Weitz). 
66         * tests/test-init.lisp: replace *update-records-on-make-instance* 
67         with *db-auto-sync*. 
68         * sql/package.lisp: replace *update-records-on-make-instance* 
69         with *db-auto-sync*. 
70         * TODO: replace *update-records-on-make-instance* with *db-auto-sync*. 
71         * sql/objects.lisp: remove redundant rebindings of *db-initializing* 
72         and *default-database* in FIND-ALL. 
73         * sql/package.lisp: import time functions from CLSQL-BASE. 
74         * tests/test-time.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
75         * tests/test-fdml.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
76         * tests/test-init.lisp: replace CLSQl-BASE package qualifier with CLSQL. 
77         * tests/test-ooddl.lisp: replace CLSQl-BASE package qualifier with 
78         CLSQL. 
79
80 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
81         * sql/classes.lisp: Add SQL-OBJECT-QUERY type. Have [select 'class]
82         now return a sql-object-query type rather than directly performing a query.
83         This improves CommonSQL conformance.
84         * sql/sql.lisp: Add new QUERY method for SQL-OBJECT-QUERY. Move
85         from basic/basic-sql.lisp the DO-QUERY and MAP-QUERY since they now
86         depend on sql-object-query-type.
87         * sql/loop-extensions.lisp: Move from base package
88         * classic/package.lisp: remove references to map-query and do-query
89
90 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
91         * TODO: New section on optimizations, especially optimizing JOINs.
92         * sql/objects.lisp: Have :target-slot return of list of lists rather
93         than a list of cons pairs to be conformant with CommonSQL.
94         Make :target-slot much more efficient by using a SQL inner join
95         statement and just requiring one SQL query. Add :retrieval :deferrred
96         to target-slot joins. Add placeholder for update-objects-join.
97         * sql/classes.lisp: Add :inner-join and :on slots to sql-query class
98         and process them for query output-sql. 
99
100 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
101         * Version 2.10.11
102         * base/basic-sql.lisp: Avoid multiple evaluation
103         of query-expression in DO-QUERY
104         * sql/objects.lisp: Make SELECT a normal function.
105         SELECT now accepts type-modified database identifiers, such as
106         [foo :string] which means that the values in column foo are returned 
107         as Lisp strings. Add new *update-records-on-make-instance* special
108         variable controlling automatic creation of new instances. Add missing
109         RESULT-TYPES keyword to FIND-ALL. Add :target-slot support.
110         * sql/packages.lisp: Export *update-records-on-make-instance* 
111         * test/test-oodml.lisp: Add tests for :target-slot and many-to-many
112         selections.
113         * test/test-fdml.lisp: Add tests for type-modified
114         database identifiers.
115         * test/test-init.lisp: Stop using add-relation since implementing
116         many-to-many joins. Use *update-records-on-make-instance* 
117         to automatically store records on instance creation. Add many-to-many
118         employee-address view-class.
119         
120 4 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
121         * Version 2.10.10
122         * base/loop.lisp: Add object iteration. Use :result-type
123         :auto for result-set. Remove 
124         duplicate (and non-correct) code for non-list variables by
125         simply making an atom variable into a list. 
126         * sql/package.lisp: Remove unnecessary clsql-sys package
127         and replace it with clsql.
128         * sql/metaclasses.lisp: Properly store specified-type from
129         direct-slot-definition and then store translated type in
130         effective-slot-definition
131         * sql/classes.lisp: Don't output type in sql-output
132         for SQL-IDENT-ATTRIBUTE. This is in preparation for supporting
133         [foo :integer] as fields in SELECT.
134         * sql/query.lisp: Set default for :result-types to :auto in
135         FDML QUERY.
136         * sql/objects.lisp: Use specified-type when invocating 
137         database-get-type-specifier. def-view-class macro now returns
138         the class instance.
139         * base/basic-sql.lisp: Make :AUTO the default value for
140         :RESULT-TYPES for MAP-QUERY and DO-QUERY.
141         * sql/objects.lisp: Add bigint type
142         * test/tests-basic.lisp: Add tests for :result-types for
143         MAP-QUERY and DO-QUERY
144         * test/test-fdml.lisp: Add test for result-types in LOOP
145         and also using single symbol rather than a list for variables.
146         Add test that default :result-types is auto for FDML QUERY.
147         * test/test-syntax.lisp: Don't expect TYPE in the SQL-OUTPUT
148         of SQL-IDENT-ATTRIBUTE.
149         * test/test-oodml.lisp: Enable OO loop iteration test,
150         modify it so it doesn't depend on boolean where.
151         
152 4 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
153         * Version 2.10.9
154         * sql/objects.lisp: added derived type specifier for universal time. 
155         * sql/package.lisp: added #:universal-time to clsql-sys exports. 
156         * tests/test-oodml.lisp: added test for translation of boolean slots 
157         in SELECT with object queries. 
158         
159 3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
160         * db-odbc/odbc-api.lisp: Fix changing nil to "NIL" 
161         for odbc/postgresql backend.
162         * db-odbc/odbc-sql.lisp: Fix ATTRIBUTE-TYPE so that
163         it can handle NIL values from the ODBC driver
164         * tests/benchmarks.lisp: New file with initial
165         benchmark suite
166         * sql/relations.lisp: fix to add subclassing support,
167         minor optimizations [Edi Weitz]
168         
169 3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
170         * Version 2.10.8        
171         * base/conditions.lisp: Add *backend-warning-behavior*
172         special variable.
173         * db-postgresql-socket/postgresql-socket-sql.lisp:
174         Honor value of *backend-warning-behavior*
175         * tests/test-fdml.lisp: Remove test of raw boolean value
176         since different backends handle this differently. Add
177         test for :column attribute.
178         * tests/test-oodml.lisp: Add tests for boolean slot value
179         and for :void-value attribute
180         * tests/test-init.lisp: Use *backend-warning-behavior*
181         to suppress warnings from postgresql about implicitly
182         creating primary key in tables. Add new address table.
183         
184 3 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
185         * Version 2.10.7
186         * db-odbc/odbc-dbi.lisp: Convert TINYINT to integers when
187         result-types is :auto
188         * sql/objects.lisp: Properly handled writing/reading Boolean
189         values from SQL database when retrieving objects.
190         * test/test-fdml.lisp: Add another test for boolean results
191         * test/utils.lisp: Fix incorrect declaration
192         
193 2 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
194         * Version 2.10.6
195         * sql/generics.lisp: add generic function for SELECT. 
196         * sql/objects.lisp: make SELECT a method specialisation. 
197         * sql/classes.lisp: MAKE-QUERY now calls SELECT if the selections 
198         referred to are View Classes. 
199         * base/basic-sql.lisp: in DO-QUERY and MAP-QUERY, if the 
200         query-expression arg evaluates to a list, then we have an object 
201         query. 
202         * tests/test-oodml.lisp: add tests for DO-QUERY and MAP-QUERY with 
203         object queries. 
204         * TODO: remove items done and add a todo for SELECT. 
205         * sql/objects.lisp: SELECT takes a :field-names arg to pass on to 
206         QUERY. 
207         * sql/sql.lisp: add :field-names arg to QUERY. 
208         * tests/test-fdml.lisp: minor rework to use :field-names arg to 
209         SELECT. 
210
211 2 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk)
212         * sql/objects.lisp: fix bug in FIND-ALL when SELECT called with 2 
213         or more View Classes. 
214         * sql/objects.lisp: make the :flatp argument to SELECT work with 
215         object queries. 
216         * sql/objects.lisp: make SELECT accept a :result-types argument 
217         (defaults to :auto) which is passed on to QUERY.  
218         * sql/objects.lisp: SELECT returns field-names as a second value. 
219         * tests/test-ooddl.lisp: add flatp arg to SELECT calls as appropriate. 
220         * tests/test-fdml.lisp: add flatp/result-types arguments to calls 
221         to SELECT and take only first value as appropriate.
222         * tests/test-fdml.lisp: add two new tests for query result coercion 
223         and the field-names returned as a second value from SELECT. 
224         * tests/test-oodml.lisp: add flatp arg to SELECT calls as appropriate. 
225         
226 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
227         * Version 2.10.6-pre1
228         * sql/metaclasses.lisp: Add void-value slot
229         * doc/csql.xml: Update def-view-class documentation
230         * test/test-init.lisp: Change old :db-type to :db-kind.
231         Remove old :nulls-ok attributes.
232         * sql/objects.lisp: Add new universal-time and bigint
233         types. Optimize reading of integers using parse-integer
234         rather than read-from-string.
235         * */*.lisp: Merge clsql-base-sys and clsql-base packages
236         into clsql-base package
237         * classic/sql.lisp: Move large object support into base, leaving
238         classic without any functionality that is provided in the clsql
239         system.
240         * classic/package.lisp: Rename clsql-classic-sys package to
241         its former nickname of clsql-classic
242         
243 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
244         * Version 2.10.5: SQLite backend now passes all result-types tests
245         * clsql-sqlite.asd: Depend on clsql-uffi system
246         * db-sqlite/sqlite-sql.lisp: Use clsql-uffi:convert-raw-field
247         for efficiency and code reuse. 
248         * db-sqlite/sqlite-api-uffi.lisp: Change (* :char) to (* :unsigned-char)
249         for better cross-implementation compatibility.
250
251 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
252         * Version 2.10.4
253         * sql/tables.lisp: Fix typo in CACHE-TABLE-QUERIES
254         [Marcus Pearce]
255         * db-postgresql/postgresql-sql.lisp: Fix foreign-string vs. cstring
256         bug on SBCL in result-field-names function as reported by Marcus Pearce
257         * db-sqlite/sqlite-sql.lisp: Fix  in database-store-next-row
258         manifest in SBCL testing
259         
260 1 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
261         * Version 2.10.3
262         * sql/database.lisp: Conform more to CommonSQL output
263         for STATUS command [Marcus Pearce]
264         * sql/sqlite-sql.lisp: Rework to use result-types
265         * sql/sqlite-api-clisp.lisp: Add compatibility layer
266         with sqlite-api-uffi.lisp so that sqlite-sql.lisp can
267         be cleaned up of most clisp reader conditionals
268         * sql/test-init.lisp: Now run field type tests on sqlite
269         backend
270         
271 30 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
272         * Version 2.10.2
273         * base/basic-sql.lisp: Set default value of :result-types 
274         to :auto for more CommonSQL conformance. 
275         * test/test-fdml.lisp: Add tests for numeric value of fields
276         
277
278 30 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
279         * Version 2.10.1: New API function: CACHE-TABLE-QUERIES.
280         * base/basic-sql.lisp, db-*/*-sql.lisp: More CommonSQL conformance.
281         Return field names as second value for QUERY. This can be overridden
282         for efficiency with the new keyword :FIELD-NAMES set to NIL
283         in the QUERY invocation.
284         * test/test-fdml.lisp: Add tests for new field-name feature
285         * sql/metaclass.lisp: Remove old Lispworks cruft
286         and replace it with invocation of new code in kmr-mop.lisp
287         which actually works with Lispworks 4.2
288         * doc/ref_clsql.xml: Document new :FIELD-NAMES keyword to
289         QUERY function
290         * base/db-interface.lisp: Document the multiple values
291         returned by DATABASE-ATTRIBUTE-TYPE so matches the
292         undocumented CommonSQL behavior. 
293         * sql/table.lisp: Add *CACHE-TABLE-QUERIES-DEFAULT* and
294         *DEFAULT-UPDATE-OBJECTS-MAX-LEN* variables and export them.
295         LIST-ATTRIBUTE-TYPES now conforms to CommonSQL spec.
296         Implement CACHE-TABLE-QUERIES.
297         * db-odbc/odbc-sql.lisp: Fix attribute-type function
298         * test/test-fddl.lisp: Add tests for attribute type     
299         * db-mysql/mysql-sql.lisp: Mild optimization in accessing
300         field structures.
301         * base/classes.lisp: Add attribute-cache slot to database clas
302         * base/initialize.lisp: initialize-database-type now automatically
303         loads database-type backend as needed.
304         * base/test-init.lisp: Utilize new initialize-database-type functionality.
305         * TODO: remove items done
306         
307 30 Apr 2004 Marcus Pearce (m.t.pearce@city.ac.uk) 
308         * Version 2.9.6
309         * sql/objects.lisp: remove create/drop-sequence-from-class. 
310         * sql/objects.lisp: add INSTANCE-REFRESHED generic function. 
311         * sql/objects.lisp: improved CommonSQL compatibility for
312         UPDATE-RECORD-FROM-SLOT, UPDATE-RECORD-FROM-SLOTS,
313         UPDATE-RECORDS-FROM-INSTANCE and DELETE-INSTANCE-RECORDS. 
314         * sql/generics.lisp: move generics from objects.lisp to here. 
315         
316 29 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
317         * Version 2.9.6-pre1
318         * db-mysql/mysql-client-info.lisp: Add client version 4.1
319         detection
320         * sql/sql.lisp: Make *default-database* the default for
321         TRUNCATE-DATABASE
322         
323 28 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
324         * Version 2.9.5
325         * db-mysql/mysql-sql.lisp: Fix bug in transaction capability
326         detection
327         * sql/objects.lisp: Commit patch from Slawek Zak to allow specifying 
328         :metaclass in DEF-VIEW-CLASS invocation. This allows defining classes 
329         on a metaclass specialized from standard-db-class.
330
331         
332 24 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
333         * Version 2.9.4: Multiple changes to support Allegro's "modern"
334         lisp which uses a lowercase reader and has case-sensitive symbols
335         * sql/classes.lisp: Fix make-load-form bug for sql-ident-table
336         exposed by case-sensitive mlisp. 
337
338 22 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
339         * Version 2.9.3: All tests now pass on all platforms!
340         * LATEST-TEST-RESULTS: New file with summary of test results
341         * sql/generics.lisp: New file for generic function definitions.
342         * test/test-init.lisp: Display names of skipped tests.
343         Use unwind-protect to ensure disconnect
344         * sql/objects.lisp: Change database-type to database-underlying-type
345         so that actual database engine is properly identified
346         * db-odbc/odbc-api.lisp: Have default *time-conversion-function*
347         return an ISO timestring for compatibility with other drivers.
348         Workaround bug in MyODBC for LIST-TABLE-INDEXES
349         * test/test-fdml.lisp: Accomodate that odbc-postgresql driver
350         returns floating-point values for floor and truncate operations 
351         * db-aodbc/aodbc-sql.lisp: Implement DATABASE-LIST-VIEWS
352         * tests/test-basic.lisp: Port to regression tester
353         * test/test-init.lisp: Output to *report-stream*
354         * docs/appendix.xml: Document ODBC and SQLite backends.
355         * sql/classes.lisp: Make output-sql require a database parameter.
356         This allows SQL generation to have the proper case to support
357         the differences in case handling between CommonSQL API,
358         Postgresql, MySQL, Oracle.
359         
360 21 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
361         * Version 2.9.2: Improvments in database capability introspection
362         and querying. Support transactions in MySQL where available.
363         All tests now pass on MySQL and SQLite in addition to postgresql
364         and postgresql-socket. ODBC fails only with OODDL/TIME/1 and OODDL/TIME/2.
365         * db-odbc/odbc-sql.lisp: Add DATABASE-LIST-VIEWS. Better support
366         DATABASE-LIST-SEQUENCES.
367         * clsql-uffi.asd, clsql-mysql.asd: Improve shared library loading
368         * Database_capabilies: add HAS-VIEWS, HAS-CREATE/DESTROY-DB,
369         HAS-BOOLEAN-WHERE, TRANSACTION-CAPABLE
370         * tests/*.lisp: Check database capabilities and remove tests which
371         the database backend does not support
372         * sql/table.lisp: Add :TRANSACTIONS keyword to create table which
373         controls whether InnoDB tables will be created when supported on
374         the underlying MySQL server.
375         
376 20 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
377         * Version 2.9.0: New API function: LIST-TABLE-INDEXES,
378         supported by all database backends (except AODBC since
379         AODBC doesn't support index querying)
380         * db-obdc/odbc-sql.lisp: Support DATABASE-LIST-INDEXES
381         * db-odbc/odbc-api.lisp: Add %TABLE-STATISTICS function
382         to support index queries
383         * db-aodbc/aodbc-sql.lisp: Filter driver manager
384         "information_schema" tables from LIST-TABLES
385         * tests/test-basic.lisp: Remove table after testing
386         * tests/test-fddl.lisp: Test LIST-TABLE-INDEXES
387         * base/db-interface.lisp: Add DATABASE-UNDERLYING-TYPE
388         which gets the underlying type of database -- required
389         when dealing with ODBC databases and want to query
390         database capabilities. Added DB-USE-COLUMN-ON-DROP-TABLES?
391         as first database-backend specific feature. Is T on
392         :mysql, NIL on other backends. Change DROP-TABLE to
393         query this.
394         
395 19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
396         * Version 2.8.2: Build changes for FreeBSD [Slawek Zak]
397
398 19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
399         * Version 2.8.1
400         * db-odbc/odbc-sql.lisp: Add DATABASE-LIST function 
401         * db-odbc/odbc-dbi.lisp: Add LIST-ALL-DATA-SOURCES function 
402
403 19 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
404         * Version 2.8.0: New API function: LIST-DATABASES
405         * base/utils.lisp: Fix command-output on CMUCL/SBCL
406         * db-*/*-sql.lisp: Add new database-list function
407         * base/database.lisp: Add new LIST-DATABASES command
408         
409 18 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
410         * Version 2.7.9
411         * db-sqlite/sqlite-sql.lisp: Fix sequence functions.
412         * db-sqlite/sqlite-api-uffi.lisp: Print error string
413         correctly.
414         
415 18 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
416         * Version 2.7.7
417         * doc/csql.xml, examples/clsql-tutorial.lisp: Patch for db-kind
418         from Eduardo Munoz.
419         
420 17 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
421         * Version 2.7.6
422         * base/objects.lisp, base/classes.lisp: Patch
423         for db-kind from Eduardo Munoz
424         
425 16 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
426         * Version 2.7.5
427         * base/basic-sql.lisp: Fix FLATP in QUERY
428
429 16 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
430         * Version 2.7.3: Implement RECONNECT
431
432 15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
433         * Version 2.7.2: Fix ODBC on Lispworks Windows
434
435 15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
436         * Version 2.7.1: Fix for new ODBC backend.
437         clsql-odbc now works on SBCL, CMUCL, OpenMCL
438         in addition to AllegroCL and Lispworks.
439
440 15 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
441         * Version 2.7.0: New backend: ODBC. Tests as
442         well as AODBC backend on Allegro,Lispworks.
443         SBCL and CMUCL don't work quite yet.  Requires UFFI v1.4.11+
444         * db-odbc/*.lisp: Add ODBC3 function SQLSetEnvAttr
445         to explicitly set ODBC2 support. Add BIGINT support.
446         Add result-types support. Added SQLTables.
447         Fix array type in fetch-all-rows. Make width
448         changable by database or query.
449         * base/utils.lisp: Add process functions
450         * base/package.lisp: Export utils to CLSQL-BASE-SYS
451         * db-aodbc: Implement sequence functions,
452         database-list-tables, database-list-attributes
453         * tests/utils.lisp: Add support for ODBC backend,
454         rework READ-SPECS to use +all-db-types+
455         * db-mysql/mysql-sql.lisp: Use WITHOUT-INTERRUPTS
456         for SEQUENCE-NEXT
457         
458 13 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
459         * Version 2.6.13. Requires UFFI version 1.4.9
460         * db-odbc/*.lisp: Further porting.
461         Pre-alpha code! But, basic query is now working.
462
463 13 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
464         * Version 2.6.12
465         * base/transactions.lisp: Add quote for macro
466         expansion of WITH-TRANSACTIONS [Time Howe]
467         * db-sqlite/sqlite-sql.lisp: Support memory database
468         in database-probe [Ng Pheng Siong]
469         * db-odbc/*.lisp: Initial port to UFFI of SQL-ODBC.
470         The DBI layer is not finished.
471         
472 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
473         * Version 2.6.11
474         * sql/objects.lisp: add :root-class functionality for
475         list-classes and add duration type support [Marcus Pearce]
476         * db-odbc: Add mid-level [DBI] layer
477
478 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
479         * Version 2.6.10
480         * db-aodbc: Add methods for generic functions, some are
481         not yet implemented.
482         * clsql-odbc.asd, db-odbc/*.lisp: Initial start of ODBC
483         support
484
485 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
486         * Version 2.6.9
487         * base/package.lisp: Add missing symbols [Marcus Pearce]
488
489 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
490         * Version 2.6.8
491         * test/test-fddl.lisp: Cleanup fix [Marcus Pearce]
492         * utils/time.lisp: Multiple fixes [Marcus Pearce]
493         * sql/sql.lisp: Fix for truncate-database [Marcus Pearce]
494         
495 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
496         * Version 2.6.7
497         * sql/*.lisp: Remove schema versioning cruft
498         [Marcus Pearce]
499         * Makefile: Add classic subdirectory
500         
501 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
502         * Version 2.6.6
503         * sql/sql.lisp: Fix TRUNCATE command, bug reported
504         by Marcus Pearce
505         * sql/sql.lisp: Remove EXPLAIN function. Postgresql/Oracle
506         specific and easy for an application to directly support.
507         Idea from Marcus Pearce.
508         * base/basic-sql.lisp: Remove DESCRIBE-TABLE top-level 
509         API as duplicates LIST-ATTRIBUTE-TYPES [Marcus Pearce].
510         Keep low-level interface for future optimization
511         supporting LIST-ATTRIBUTE-TYPES command.
512         * Makefile: Add to db-sqlite and test directories.
513         Include them in top-level Makefile
514         
515 12 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
516         * Version 2.6.5
517         * sql/relations.lisp: Add missing file
518         * utils/time.lisp: Fixes/extensions [Marcus Pearce]
519         * test/test-time.lips: New file [Marcus Pearce]
520         
521 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
522         * Version 2.6.4
523         * test/test-init.lisp: Properly handle object
524         creation. Close database after use.
525         * sql/sql.lisp: Make DESCRIBE-TABLE a generic
526         function so can have methods specialized on
527         table being a string or an sql-table object.
528         * base/pool.lisp: Really fix CMUCL locking
529         
530 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
531         * Version 2.6.3
532         * test/test-init.lisp: Signal correctly
533         if any errors occurred in any test suite
534         * base/loop-extensions.lisp: Fix error
535         introduced for Lispworks
536         * base/pool.lisp: Fix locking for CMUCL
537         * base/objects.lisp: Remove schema-version cruft
538         
539 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
540         * Version 2.6.2: New CLSQL API functions:
541         DESCRIBE-TABLE AND TRUNCATE-DATABASE
542         Currently, this are only supported on :postgresql
543         and :postgresql-socket
544         * base/database.lisp: automatically load ASDF system
545         in CONNECT if not already loaded
546         * base/tests.lisp: disconnect database after testing 
547         * base/*.lisp: Remove CLOSED-DATABASE type in favor
548         of storing open/closed status in slot of database
549         * base/pool.lisp: Support locks for CMUCL, OpenMCL, SBCL
550         * db-postgresql/postgresql-sql.lisp: add DATABASE-RECONNECT,
551         DATABASE-DESCRIBE-TABLE
552         * db-sqlite/sqlite-sql.lisp: Add missing slots in database
553         * base/conditions: Remove duplicate condition
554         * db-*/*-sql.lisp: Fill new database slot DATABASE-TYPE
555         * base/recording.lisp: Add new :QUERY type for recording
556         
557 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
558         * Version 2.6.1: documentation fixes, merged
559         classic-tests into tests
560
561 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
562         * Version 2.6.0 released: New API functions
563         CREATE-DATABASE, DESTORY-DATABASE, PROBE-DATABASE
564         * doc/ref_clsql.xml: Document new functions
565         * base/database.lisp: New API functions
566         * base/conditions.lisp: Added CLSQL-ACCESS-ERROR
567         * base/utils.lisp: Fix use of position-char.
568         Add COMMAND-OUTPUT used by backends for running
569         external programs. Fix parsing of SQL*NET-compatible
570         connection-specs.
571         * base/loop-extension.lisp: Simplify package use
572         for Lispworks and Allegro
573         * db-*/*-sql.lisp: Added DATABASE-CREATE,
574         DATABASE-DESTORY, PROBE-DATABASE methods
575         * tests/test-init.lisp, clasic-tests/tests.lisp:
576         Use destroy-database and create-database to ensure 
577         testing with empty database
578         * tests/test-connection.lisp: Add tests for
579         parsing of string connection-specs
580         * examples/run-tests.sh: New file for running
581         test suite on all installed CL implementations
582         * examples/clsql-tutorial.lisp: moved from
583         doc directory
584         * examples/dot.clsql-tests.config: New file
585         giving an example test configuration
586         * test/README: Add notes about rtest/ptester
587         downloads and link to sample test configuration file.
588         
589 10 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
590         * Version 2.5.1 released:
591         * tests/*.lisp: Rework so tests are run
592         on multiple backends automatically based
593         on the contents of ~/.clsql-tests.config.
594         Reuse helper functions from classic-tests.
595         * base/database.lisp: Support connection-spec
596         as string for CONNECT
597         * classic-tests/tests.lisp: Automatically
598         load database backends as needed. 
599         
600 09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
601         * Version 2.5.0 released:
602         All tests for CLSQL and CLSQL-CLASSIC pass
603         on all platforms.
604         * base/loop-extension.lisp: Add Lispworks
605         loop-extension. Improve type specifying on
606         other platforms.
607         
608 09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
609         * Version 2.4.2 released:
610         loop extension now supported on Allegro, all
611         CLSQL-TESTS pass on Allegro.
612         * sql/metaclasses.lisp: Some optimization
613         of compute-slots, be selective when
614         ordered-class-slots needs to be called
615         instead of class-slots
616         * TODO: add URL with documentation on
617         extending Lispworks LOOP form
618         
619 09 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
620         * Version 2.4.1 released: CLSQL-TESt suite passes
621         all tests for postgresql and CMUCL, SBCL, OpenMCL.
622         Allegro and Lispworks pass all tests except for
623         FDML/LOOP/1 since the loop extension have not yet
624         been ported to those implementions.
625         * sql/metaclasses.lisp: Added new slot to standard-db-class
626         to hold user-specified type. OpenMCL adjustments to compensate
627         for its type-predicate function. Since AllegroCL, Lispworks,
628         and OpenMCL have different slot orders, added compute-slots
629         and ordered-class-slots functions so their slot order matches
630         SBCL/CMUCL.
631
632 08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
633         * Version 2.4.0 released: All tests for clsql-classic now finish
634         correctly on Allegro, Lispworks, CMUCL, SBCL, OpenMCL for
635         mysql, postgresql, postgresql-sockets, and sqlite backends.
636         * db-mysql/mysql-sql.lisp: Fix array dereferencing
637         * classic-tests/tests.lisp: Fix package name of
638         number-to-sql-string. 
639         * clsql.asd/clsql-tests.asd: Add support for asdf:test-op
640         * db-sqlite/sqlite-api-{uffi,sql}.lisp: Multiple UFFI fixes,
641         now passes tests on all support UFFI platforms.
642         * db-postgresql-socket/postgresql-socket-api.list: Ported to 
643         SBCL and OpenMCL
644         * multiple: Finish renaming of :types keyword to :result-types for
645         greater CommonSQL compatibility, including documentation
646         * sql/basic-cmds.lisp: Remove obsolete file
647         
648 08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
649         * Version 2.3.3 released
650         * Fixes for sequences on mysql and sqlite [Marcus Pearce]
651         * Fixes for uffi sqlite backend [Aurelio Bignoli / Kevin Rosenberg]
652         * Fix for schema table [Marcus Pearce]
653         * Add loop extension support for SBCL and OpenMCL [Marcus Pearce]
654         * Fixes to test suite [Marcus Pearce]
655
656 06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
657         * db-*/*-sql.lisp: Ensure that expr in
658         database-query-result-set is a string
659         * Documentation integration
660         
661 06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
662         * With for Marcus Pearce's excellent work, I've merged
663         his clsql-usql port into clsql. The original clsql
664         interface is available in the clsql-classic package.
665
666 02 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
667         * Integrate patch from Marcus Pearce <ek735@soi.city.ac.uk>
668         adding further support for providing backend for UncommonSQL
669
670 10 Mar 2004 Kevin Rosenberg (kevin@rosenberg.net)
671         * Integrate patch from Aurelio Bignoli for SQLite backend
672
673 11 Nov 2003 Kevin Rosenberg (kevin@rosenberg.net)
674         * Converted documentation to XML format
675         * Made package installable with asdf-install
676
677 23 Jul 2003 Kevin Rosenberg (kevin@rosenberg.net)
678         * Add for-each-row macro
679
680 12 Dec 2002 Kevin Rosenberg (kevin@rosenberg.net)
681         * uffi/clsql-uffi.lisp: return NIL for numeric fields that are NULL
682         
683 16 Oct 2002 Kevin Rosenberg (kevin@rosenberg.net)
684         * Add support for SBCL, OpenMCL, and SCL
685         * Add *load-truename* to search path for clsql's
686         compiled libraries.
687
688 01 Sep 2002 Kevin Rosenberg (kevin@rosenberg.net)
689         * Rework use of file types in .asd files
690
691 17 Aug 2002 Kevin Rosenberg (kevin@rosenberg.net)
692         * Add .asd definition files for ASDF users
693
694 31 Jul 2002 Kevin Rosenberg (kevin@rosenberg.net)
695         * Restructure directories for Common Lisp Controller v3 compatibility
696
697 25 Jul 2002 Kevin Rosenberg (kevin@rosenberg.net)
698         * Also change case of logical host in loader files
699         * Rework handling of logical pathnames
700         
701 05 Jul 2002 Kevin Rosenberg (kevin@rosenberg.net)
702         * Change case of logical host
703         
704 14 May 2002 Kevin Rosenberg (kevin@rosenberg.net)
705         * clsql-base.system: Added base package that can be used without
706         high-level SQL commands. Used for adding support for UncommonSQL.
707         * *.system: Reworked logical pathnames to be more consistent with
708         Common Lisp Controller.
709         * debian/*: Completed initial Debian support
710         
711 10 May 2002 Marc Battyani (marc.battyani@fractalconcept.com)
712         * sql/classes.cl:
713         * sql/transactions.cl:
714         Added transaction support. Functions/macros added:
715         with-transaction, commit-transaction, rollback-transaction,
716         add-transaction-commit-hook, add-transaction-rollback-hook
717
718 04 May 2002 Marc Battyani (marc.battyani@fractalconcept.com)
719         * sql/sql.cl:
720         * sql/pool.cl:
721         * sql/functional.cl:
722         Added pool support in connect/disconnect and with-database.
723         Removed with-db-from-pool as with-database can now works with the connections pool
724
725 01 May 2002 Marc Battyani (marc.battyani@fractalconcept.com)
726         * sql/sql.cl:
727         * sql/pool.cl:
728         * sql/classes.cl:
729         * sql/package.cl:
730         Completed connection pool.
731         Added with-db-from-pool macro.
732         
733 27 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
734         * Multiple files:
735         Added initial support for connection pool
736         * sql/transactions.cl
737         Took transaction code from UncommonSQL and integrated
738         into CLSQL code. See file for disclaimer about why this
739         was added.
740
741 23 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
742         * interfaces/postgresql/postgresql-sql.cl:
743         Fix keyword typo in database-read-large-object
744         * interfaces/mysql/mysql-loader.cl
745         Fix loading on Win32
746         * test-suite/tester-clsql.cl
747         Fix type coercion of double-float
748         * doc/*
749         Added debian docbook catalog, made it the default
750         
751 19 Apr 2002 Marc Battyani (marc.battyani@fractalconcept.com)
752         * interface/postgresql/postgresql-api.cl:
753         * interface/postgresql/postgresql-sql.cl:
754         * sql/sql.cl:
755         * sql/db-interface.cl:
756         Added large objects support for postgresql.
757
758 07 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
759         * src/postgresql-socket/postgresql-socket-api.cl:
760         Fixed find-foreign-function call, eliminated crypt warning
761         * Makefiles:
762         Multiple improvements
763         * sql/usql.cl:
764         Moved functionality from low-level interfaces to this file
765         via generic functions
766         * test-suite/tester.cl:
767         Added test with acl-compat-tester, moved others to old-tests
768         directory.
769         
770 06 Apr 2002 Kevin Rosenberg (kevin@rosenberg.net)
771         * src/usql.cl:
772         Reinstated commented out sections
773         * interfaces/postgresql/postgresql-loader.cl:
774         * interfaces/mysql/mysql-loader.cl:
775         Updated find-forieign-library support.
776         * interfaces/postgresql-socket/postgresql-socket-package.cl:
777         Fixed require form for Lispworks (Thanks Marc Battyani!)
778         * interfaces/postgresql-socket/postgresql-socket-api.cl:
779         Fixed eval of def-function for crypt library.
780                 
781 31 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
782         * Added interface to support USQL high-level rouines
783         
784 29 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
785         * Separated db-interface and conditions from sql/sql.cl
786         * Improved foreign library loading testing
787         * interfaces/postgresql/postgresql-api.cl
788         Added PQisBusy function
789         * interfaces/clsql-uffi/clsql-uffi.cl
790         Fixed sign error for 64-bit processing
791         
792 27 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
793         * interfaces/postgresql-socket/postgresql-socket-api.cl:
794         Fixes to read-double-from-socket. Added 64-bit integer support.
795         * test-suite/xptest-clsql.cl
796         Added testint for 64-bit integers
797         * Additons to installation docs
798         
799 26 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
800         * interfaces/postgresql-socket/postgresql-socket-api.cl:
801         Implemented direct socket reading for field type :double
802         * Added usage information for :types to documentation
803         * interfaces/mysql/mysql-sql.cl: Fixed type specifiers in atoi,
804         atol, atof calls
805         * interfaces/clsql-uffi: Created new directory. Split common
806         interface routines that use UFFI into this package. Required
807         especially to support direct reading of 64-bit integers into
808         bignums and bypassing temporary strings.
809         * test-clsql.cl: Updated to test postgresql-socket's
810         read-double-from-socket function.
811         * test-suite/xptest-clsql.cl
812         Started work on test suite
813
814 25 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
815         * interfaces/mysql/mysql-api.cl: Added mysql-fetch-fields,
816         mysql-fetch-field-direct Got :auto types working
817         * interfaces/postgresql/postgresql-api.cl
818         * interfaces/postgresql-socket/postgresql-socket-api.cl
819         Added pgsql-field-types enum. Got :auto types working.
820         * multiple-files
821         Renamed :field-types to :types.
822         
823 24 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
824         * Added field-types parameter to query, database-query,
825         database-query-result-set, map-query. Haven't added code
826         to utilize field types, yet.
827         * Changed postgresql-socket result set from cons to a structure
828         * Updated test-clsql.cl to use automated testing with a config
829         file
830         * Changed return types of field accessors from cstring to
831         (* :unsigned-char).  This prepares for being able to use specified
832         type conversions when taking field data into lisp.
833         * Added field-type processing for most interfaces. Not done yet.
834         
835 23 Mar 2002 Kevin Rosenberg (kevin@rosenberg.net)
836         * doc/ref.sgml: Updated MAP-QUERY example to use
837         *read-default-float-format* (John Foderaro)
838         * Extensive work to foreign library loaders and .system files to
839         check for successful loading of foreign libraries.
840         * Modified test-clsql.cl to allow more modularity and
841         automated testing in future release.
842         * mysql/mysql-sql.lisp: Added field types
843         
844 01 Jan 2002 Kevin Rosenberg (kevin@rosenberg.net)
845         * mysql/mysql-sql.lisp:
846         - Added support for Allegro CL and Lispworks using UFFI layer
847         - Changed database-connect to use mysql-real-connect. This way,
848           can avoid using double (unwind-protect)
849         - Changed database-connect to have MySQL library allocate space
850           for MYSQL structure. This will make the code more robust in
851           the event that MySQL library changes the size of the mysql-mysql
852           structure.
853
854