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