X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fintro.xml;h=eb10c69e7f868bc00a8d27a4fac8d4044698a3ff;hb=5d5321e071c8f4d891029e7c9d1acb87c45b5a1f;hp=ac54ec4e866c6e5a45a11a97d556719cfabb8463;hpb=a35619ce17c910796b4f6f58c5916f8f513073e1;p=clsql.git
diff --git a/doc/intro.xml b/doc/intro.xml
index ac54ec4..eb10c69 100644
--- a/doc/intro.xml
+++ b/doc/intro.xml
@@ -1,7 +1,7 @@
-
+
+
%myents;
]>
@@ -11,44 +11,59 @@
Purpose
&clsql; is a Common Lisp interface to SQL databases. A number of Common
- Lisp implementations and SQL databases are supported. The general
- structure of &clsql; is based on the
- CommonSQL
- package by Xanalys.
+ linkend="gloss-sql">SQL databases. A number of Common
+ Lisp implementations and SQL databases are supported. The general
+ structure of &clsql; is based on the &commonsql; package by
+ LispWorks Ltd.
History
- &clsql; is written by Kevin M. Rosenberg and based substantially
- on Pierre R. Mai's excellent &maisql; package. The main changes from &maisql;
- are:
+ The &clsql; project was started by Kevin M. Rosenberg in 2001 to
+ support SQL access on multiple Common Lisp implementations using
+ the &uffi; library. The initial code was based substantially on
+ Pierre R. Mai's excellent &maisql; package. In late 2003, the
+ &usql; library was orphaned by its author, onShore Development,
+ Inc. In April 2004, Marcus Pearce ported the &usql; library to
+ &clsql;. The &usql; library provides a &commonsql;-compatible
+ API for &clsql;.
+
+
+ The main changes from &maisql; and &usql; are:
+
+ Port from the &cmucl; FFI to &uffi; which provide
+ compatibility with the major Common Lisp
+ implementations.
+
Optimized loading of integer and floating-point fields.
- port from the &cmucl; FFI to &uffi;.
+ Additional database backends: &odbc;, &aodbc;, &sqlite;
+ and &sqlite3;.
- new &acl; ODBC interface back-end.
+ A compatibility layer for &cmucl; specific code.
- compatibility layer for &cmucl; specific code.
+ Much improved robustness for the &mysql; back-end
+ along with version 4 client library support.
- much improved robustness for the &mysql; back-end.
+ Improved library loading and installation documentation.
- improved system loading.
+ Improved packages and symbol export.
- improved packages and symbol export.
+ Pooled connections.
- transaction support.
+ Integrated transaction support for the classic
+ &maisql; iteration macros.
@@ -58,35 +73,31 @@
Prerequisites
- &defsystem;
- &clsql; uses &asdf; to compile and load its
- components. &asdf; is included in the &cclan; collection.
+ &asdf;
+
+ &clsql; uses &asdf; to compile and load its components.
+ &asdf; is included in the &cclan;
+ collection.
&uffi;
- &clsql; uses &uffi;
- as a Foreign Function Interface (FFI) to support multiple &cl;
- implementations.
+
+ &clsql; uses &uffi;
+ as a Foreign Function Interface
+ (FFI) to support
+ multiple &cl; implementations.
-
- You can download &uffi; from its FTP site. There
- are zip files for Microsoft Windows systems and gzipped tar files for
- other systems.
-
&md5;
&clsql;'s postgresql-socket interface uses Pierre Mai's
- md5
- module. If you plan to use
- this interface please download the md5 module from ftp://clsql.b9.com.
+ md5
+ module.
@@ -96,24 +107,34 @@
implementations of &uffi;. The following implementations are supported:
- &acl; v6.2 on Debian Linux, FreeBSD 4.5, and Microsoft Windows XP.
- &lw; v4.3 on Debian Linux and Microsoft Windows XP.
- &cmucl; 18e on Debian Linux, FreeBSD 4.5, and Solaris 2.8.
- &sbcl; 0.8.5 on Debian Linux.
- &scl; 1.2 on Debian Linux.
- &openmcl; 0.14 on Debian Linux PowerPC.
+ &acl; v6.2 through 8.0 on Debian Linux x86 &
+ x86_64 & PowerPC, FreeBSD 4.5, and Microsoft Windows
+ XP.
+ &lw; v4.3 and v4.4 on Debian Linux and Microsoft
+ Windows XP.
+ &cmucl; 18e on Debian Linux, FreeBSD 4.5, and
+ Solaris 2.8. 19c on Debian Linux.
+ &sbcl; 0.8.4 through 0.9.16 on Debian
+ Linux.
+ &scl; 1.1.1 on Debian Linux.
+ &openmcl; 0.14 PowerPC and 1.0pre AMD64 on Debian Linux .
Supported &sql; Implementation
- Currently, &clsql; supports the following databases:
+ &clsql; supports the following databases:
- &mysql; v3.23.51.
- &postgresql; v7.2 with both direct API and TCP socket connections.
- Allegro's ODBC interface (&aodbc;) using iODBC ODBC manager.
+ &mysql; (tested v3.23.51, v4.0.18, 5.0.24).
+ &postgresql; (tested with v7.4 and 8.0 with both direct API and TCP
+ socket connections.
+ &sqlite;.
+ &sqlite3;.
+ Direct &odbc; interface.
+ &oracle; OCI.
+ Allegro's DB interface (&aodbc;).
@@ -123,12 +144,12 @@
Installation
- Ensure &defsystem; is loaded
+ Ensure &asdf; is loaded
- Simply load the file defsystem.lisp.
-
-(load "defsystem.lisp")
-
+ Simply load the file asdf.lisp.
+
+(load "asdf.lisp")
+
@@ -138,98 +159,107 @@
parameters and return values. The &ffi; in most &clsql;
implementations do not support 64-bit integers. Thus, C helper
libraries are required to break these 64-bit integers into two compatible
- 32-bit integers.
+ 32-bit integers. The helper libraries reside in the directories
+ uffi and db-mysql.
- Makefiles for Microsoft Windows and GNU/Solaris systems
- are supplied to build the libraries. Since many Microsoft Windows
- users don't have access to a compiler, the DLL and LIB
- files for Microsoft Windows are supplied with the distribution.
-
+
+ &mswindows;
+
+ Files named Makefile.msvc are supplied
+ for building the libraries under Microsoft Windows. Since
+ &mswindows; does not come with that compiler, compiled
+ DLL and LIB library files are
+ supplied with &clsql;.
+
+
+
+
+ &unix;
+
+ Files named Makefile are supplied for
+ building the libraries under &unix;. Loading the
+ .asd files automatically invokes
+ make when necessary. So, manual
+ building of the helper libraries is not necessary on most
+ &unix; systems. However, the location of the &mysql; library
+ files and include files may need to adjusted in
+ db-mysql/Makefile on non-Debian
+ systems.
+
+
- To build the libraries on a GNU or Solaris, use the shell and
- change to the root directory of &clsql;. You may need to edit the file
- interfaces/mysql/Makefile
- to specify the location of your
- MySQL installation. The default Makefiles are setup for shared library
- linking on Linux. If you are using FreeBSD or Solaris, you will need
- to change the linker setting as instructed in the Makefile.
- Then, you can give the command
-
-make libs
-
- in the root directory of &clsql; to build the libraries
- interfaces/mysql/clsql-mysql.so
- and interfaces/clsql-uffi/clsql-uffi.so.
-
- Load &uffi;
+ Add &uffi; path
Unzip or untar the &uffi; distribution which creates a directory
- for the &uffi; files. Add that directory to Defsystem's asdf:*central-registry*.
+ for the &uffi; files. Add that directory to &asdf;'s asdf:*central-registry*.
You can do that by pushing the pathname of the directory onto this variable.
The following example code assumes the &uffi; files reside in the
/usr/share/lisp/uffi/
directory.
-
+
(push #P"/usr/share/lisp/uffi/" asdf:*central-registry*)
-(asdf:oos 'asdf:load-op :uffi)
-
+
- Load &md5; module
+ Add &md5; path
- If you plan to use the clsql-postgresql-socket interface, you must load the md5 module.
- Unzip or untar the cl-md5 distribution, which creates a directory for the cl-md5 files.
- Add that directory to Defsystem's asdf:*central-registry*.
- You can do that by pushing the pathname of the directory onto this variable.
- The following example code assumes the cl-md5 files reside in the
- /usr/share/lisp/cl-md5/
- directory.
-
+ If you plan to use the clsql-postgresql-socket interface, you
+ must load the md5 module. Unzip or untar the cl-md5
+ distribution, which creates a directory for the cl-md5 files.
+ Add that directory to &asdf;'s
+ asdf:*central-registry*. You can do that by
+ pushing the pathname of the directory onto this variable. The
+ following example code assumes the cl-md5 files reside in the
+ /usr/share/lisp/cl-md5/ directory.
+
(push #P"/usr/share/lisp/cl-md5/" asdf:*central-registry*)
-(asdf:oos 'asdf:load-op :md5)
-
+
- Load &clsql; modules
+ Add &clsql; path and load module
- Unzip or untar the &clsql; distribution which creates a directory
- for the &clsql; files. Add that directory to Defsystem's asdf:*central-registry*.
- You can do that by pushing the pathname of the directory onto this variable.
- The following example code assumes the &clsql; files reside in the
- /usr/share/lisp/clsql/
- directory. You need to load, at a minimum,
- the main :clsql system and at least one interface system.
-
-(push #P"/usr/share/lisp/clsql/" asdf:*central-repository*)
-(asdf:oos 'asdf:load-op :clsql-base) ; base clsql package
-(asdf:oos 'asdf:load-op :clsql-mysql) ; MySQL interface
-(asdf:oos 'asdf:load-op :clsql-postgresql) ; PostgreSQL interface
-(asdf:oos 'asdf:load-op :clsql-postgresql-socket) ; Socket PGSQL interface
-(asdf:oos 'asdf:load-op :clsql-aodbc) ; Allegro ODBC interface
-(asdf:oos 'asdf:load-op :clsql) ; main clsql package
-
+ Unzip or untar the &clsql; distribution which creates a
+ directory for the &clsql; files. Add that directory to &asdf;'s
+ asdf:*central-registry*. You can do that by
+ pushing the pathname of the directory onto this variable. The
+ following example code assumes the &clsql; files reside in the
+ /usr/share/lisp/clsql/ directory. You need
+ to load the clsql system.
+
+
+(push #P"/usr/share/lisp/clsql/" asdf:*central-registry*)
+(asdf:operate 'asdf:load-op 'clsql) ; main CLSQL package
+
- Run test suite
+ Run test suite (optional)
- After loading &clsql;, you can execute the test program in
- the directory ./test-suite. The test file,
- tester-clsql
- has instructions for creating a test.config.
- After creating that file, simple load the test file with Lisp
- and the tests should automatically execute.
+ The test suite can be executed using the &asdf;
+ test-op operator. If &clsql; has not been
+ loaded with asdf:load-op, the
+ asdf:test-op operator will automatically load
+ &clsql;. A configuration file named
+ .clsql-test.config must be created in
+ your home directory. There are instructures on the format of
+ that file in the tests/README. After
+ creating .clsql-test.config, you can run
+ the test suite with &asdf;:
+
+ (asdf:operate 'asdf:test-op 'clsql)
+
-
+
+