Re: CLSQL-USQL
Marcus Pearce <[email protected]> Mon, 5 Apr 2004 11:58:45 +0100 (BST)
| Newsgroups | gmane.lisp.clsql.general,gmane.lisp.uncommon-sql |
|---|---|
| Message-ID | <[email protected]> |
On Sun, 4 Apr 2004, Kevin Rosenberg wrote: > To mimimize download sizes, and perhaps to reinforce the functionality > of each layer, perhaps 3 different projects should be formed: > * clsql-common: the first two layers combined Most of the database initialisation and connection stuff is common between CLSQL and CLSQL-USQL. For example: o support for connection pools is identical. o support for transactions is more or less identical except the CommonSQL spec requires separate functions for committing and rolling back transactions. o connection and disconnection are practically the same. I think this could usefully all be moved into clsql-base (or clsql-common) in order to remove code duplication. This package would then provide basic support for initialising database backends, connecting to and disconnecting from databases, and returning information about connected databases (e.g., connected-databases, status etc.). > * clsql-classic: the original CLSQL high-leve interface depending on > clsql-common > * clsql-usql: the original USQL high-level interface dependind on > clsql-common > > Alternatively, if the clsql-usql interface adds the original CLSQL > high-level interface, then perhaps that interface could be labeled > CLSQL and the original high-level interface could be named clsql-lite. I think the first of these options definitely makes sense and is a safe bet. I am not sure about the second since I'm not sure quite how cleanly the CLSQL stuff could be extracted in isolation from CLSQL-USQL and continue to support the more advanced aspects of the functional interface to be loaded seperately. I guess it depends on how 'lite' clsql-lite would want to be. > I don't feel strongly about the naming and the divisions of > projects. I'm just like to eliminate code duplication and support both > users who don't want the overhead of the USQL interface and as well as > users who want use both the original and USQL interfaces in the same > application. Likewise. I think the important think is to separate out according to functionality so as to accommodate a range of needs (rather than naming). This database connection/initialisation module with two high-level modules (e.g., clsql-classic and clsql-usql) acheives this nicely. Another thing which could be done quite easily would be to separate the functional and object-oriented interfaces in CLSQL-USQL. Only the SELECT function which is common betweent the two would need a bit of work. It seems a lot of people don't want the OO interface and it is also the least portable part of the code. Cheers, Marcus