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