From: Kevin M. Rosenberg Date: Tue, 23 Apr 2002 21:31:51 +0000 (+0000) Subject: r1792: *** empty log message *** X-Git-Tag: v1.6.1~484 X-Git-Url: http://git.kpe.io/?p=uffi.git;a=commitdiff_plain;h=b43879c2667bcf156d92c6962753ab501d5e92be r1792: *** empty log message *** --- diff --git a/ChangeLog b/ChangeLog index f71a69d..fdfd35d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2002-04-23 Kevin Rosenberg (kevin@rosenberg.net) + * doc/* + Updated to debian docbook catalog + 2002-04-06 Kevin Rosenberg (kevin@rosenberg.net) * src/mcl/libraries.cl: Removed unnecessary function and added find-foreign-library diff --git a/doc/Makefile b/doc/Makefile index 5123a72..f49d1f0 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -5,7 +5,7 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile,v 1.12 2002/04/07 09:17:51 kevin Exp $ +# CVS Id: $Id: Makefile,v 1.13 2002/04/23 21:30:27 kevin Exp $ # # This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg # @@ -13,26 +13,17 @@ # as governed by the terms of the Lisp Lesser GNU Public License # (http://opensource.franz.com/preamble.html), also known as the LLGPL. +# System variable to select catalog file +SYSTEM=debian +# SYSTEM=redhat +# Nothing to configure beyond this point -# Set to DSSSL -# For RedHat 6.x -#DSSSL_HTML=/usr/lib/sgml/stylesheets/nwalsh-modular/html/docbook.dsl -#DSSL_PRINT=/usr/lib/sgml/stylesheets/nwalsh-modular/print/docbook.dsl - -# For RedHat 7.2 -DSSSL_HTML=/usr/share/sgml/docbook/dsssl-stylesheets-1.64/html/docbook.dsl -DSSSL_PRINT=/usr/share/sgml/docbook/dsssl-stylesheets-1.64/print/docbook.dsl - -# Latest version -#DSSSL_HTML=/usr/share/sgml/docbook/dsssl-stylesheets-1.76/html/docbook.dsl -#DSSSL_PRINT=/usr/share/sgml/docbook/dsssl-stylesheets-1.76/print/docbook.dsl - -# Custom version -#DSSSL_HTML=/home/kevin/lisp/docbook/html/lisp.dsl -#DSSSL_PRINT=/home/kevin/lisp/docbook/print/lisp.dsl +CATALOG=catalog.$(SYSTEM) -# Nothing to configure beyond this point +# Custom DSSSL's +DSSSL_HTML=../dsssl/html/docbook.dsl +DSSSL_PRINT=dsssl/print/docbook.dsl DOCFILE_BASE_DEFAULT=uffi DOCFILE_EXT_DEFAULT=sgml @@ -55,57 +46,56 @@ DVIFILE=${DOCFILE_BASE}.dvi TMPFILES=${DOCFILE_BASE}.aux ${DOCFILE_BASE}.out ${DOCFILE_BASE}.log DOCFILES=$(shell echo *.sgml) -.PHONY: all dist check html tex pdf ps distclean +.PHONY: all dist check html tex pdf ps clean distclean all: html pdf ps dvi dist: html pdf -CHECK=nsgmls -s -C catalog || exit 1 +CHECK=nsgmls -s -C ${CATALOG} || exit 1 check: - @$(CHECK) + $(CHECK) html: html/book1.htm html/book1.htm: ${DOCFILES} - @$(CHECK) - @( rm -rf html ; mkdir html; cd html ; jade -t sgml -c ../catalog -d ${DSSSL_HTML} ../${DOCFILE}; cd ..) + $(CHECK) + ( rm -rf html ; mkdir html; cd html ; jade -t sgml -c ../${CATALOG} -d ${DSSSL_HTML} ../${DOCFILE}; cd ..) tex: ${TEXFILE} -${TEXFILE}: ${DOCFILES} - @$(CHECK) - @jade -t tex -c catalog -d ${DSSSL_PRINT} ${DOCFILE} +${TEXFILE}: ${DOCFILES} + $(CHECK) + @jade -t tex -c ${CATALOG} -d ${DSSSL_PRINT} ${DOCFILE} pdf: ${PDFFILE} ${PDFFILE}: ${TEXFILE} - @pdfjadetex '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null - @pdfjadetex '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null - @pdfjadetex '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null - @pdfjadetex '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null + @pdfjadetex -interaction=batchmode '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null + @pdfjadetex -interaction=batchmode '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null + @pdfjadetex -interaction=batchmode '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null + @pdfjadetex -interaction=batchmode '\pdfcompresslevel=9' '\input ${TEXFILE}' > /dev/null dvi: ${DVIFILE} ${DVIFILE}: ${TEXFILE} - @jadetex ${TEXFILE} - @jadetex ${TEXFILE} - @jadetex ${TEXFILE} - @jadetex ${TEXFILE} + jadetex ${TEXFILE} + jadetex ${TEXFILE} + jadetex ${TEXFILE} + jadetex ${TEXFILE} ps: ${PSFILE} ${PSFILE}: ${DVIFILE} - @dvips -o ${PSFILE} ${DVIFILE} + dvips -o ${PSFILE} ${DVIFILE} clean: @rm -rf html @rm -f ${PSFILE} ${PDFFILE} ${DVIFILE} ${TEXFILE} - @rm -f ${TMPFILES} *~ - @rm -f - -distclean: clean + @rm -f ${TMPFILES} +realclean: clean + @rm -f *~ diff --git a/doc/catalog b/doc/catalog deleted file mode 100644 index 4588500..0000000 --- a/doc/catalog +++ /dev/null @@ -1,2 +0,0 @@ -CATALOG /etc/sgml/sgml-docbook-4.1.cat -DOCUMENT uffi.sgml diff --git a/doc/catalog.debian b/doc/catalog.debian new file mode 100644 index 0000000..404a9ef --- /dev/null +++ b/doc/catalog.debian @@ -0,0 +1,4 @@ +CATALOG /etc/sgml/docbook.cat +CATALOG /etc/sgml/docbook-dsssl.cat +CATALOG /etc/sgml/openjade.cat +DOCUMENT clsql.sgml diff --git a/doc/catalog.redhat b/doc/catalog.redhat new file mode 100644 index 0000000..29d65f0 --- /dev/null +++ b/doc/catalog.redhat @@ -0,0 +1,2 @@ +CATALOG /etc/sgml/sgml-docbook-4.1.cat +DOCUMENT clsql.sgml diff --git a/doc/catalog.redhat~ b/doc/catalog.redhat~ new file mode 100644 index 0000000..5bf6501 --- /dev/null +++ b/doc/catalog.redhat~ @@ -0,0 +1,2 @@ +CATALOG sgml-docbook-4.1.cat +DOCUMENT clsql.sgml diff --git a/doc/dsssl/COPYRIGHT b/doc/dsssl/COPYRIGHT new file mode 100644 index 0000000..871b60b --- /dev/null +++ b/doc/dsssl/COPYRIGHT @@ -0,0 +1,5 @@ +These stylesheets are written and Copyright (c) 1999-2002 by Pierre +R. Mai. + +He has graciously placed them in the public domain without +restrictions. diff --git a/doc/dsssl/html/docbook.dsl b/doc/dsssl/html/docbook.dsl new file mode 100644 index 0000000..e0f1668 --- /dev/null +++ b/doc/dsssl/html/docbook.dsl @@ -0,0 +1,30 @@ + +]> + + + + +(element envar ($mono-seq$)) +(element symbol ($mono-seq$)) +(element type ($mono-seq$)) +(element errortype ($mono-seq$)) +(element returnvalue ($italic-mono-seq$)) +(define (book-titlepage-recto-elements) + (list (normalize "title") + (normalize "subtitle") + (normalize "graphic") + (normalize "corpauthor") + (normalize "authorgroup") + (normalize "author") + (normalize "editor") + (normalize "printhistory") + (normalize "copyright") + (normalize "abstract") + (normalize "legalnotice"))) +(define %use-id-as-filename% #t) +(define use-output-dir #t) + + + + diff --git a/doc/dsssl/print/docbook.dsl b/doc/dsssl/print/docbook.dsl new file mode 100644 index 0000000..a114d93 --- /dev/null +++ b/doc/dsssl/print/docbook.dsl @@ -0,0 +1,30 @@ + +]> + + + + +(element envar ($mono-seq$)) +(element symbol ($mono-seq$)) +(element type ($mono-seq$)) +(element errortype ($mono-seq$)) +(element returnvalue ($italic-mono-seq$)) +(define (book-titlepage-verso-elements) + (list (normalize "title") + (normalize "subtitle") + (normalize "corpauthor") + (normalize "authorgroup") + (normalize "author") + (normalize "editor") + (normalize "edition") + (normalize "pubdate") + (normalize "printhistory") + (normalize "copyright") + (normalize "abstract") + (normalize "legalnotice") + (normalize "revhistory"))) + + + + diff --git a/doc/dsssl/print/docbook.tex b/doc/dsssl/print/docbook.tex new file mode 100644 index 0000000..74530ff --- /dev/null +++ b/doc/dsssl/print/docbook.tex @@ -0,0 +1,5576 @@ +\FOT{3}\Node% +{}\Node% +{\def\Element% +{0:0}}\Node% +{\def\Element% +{0:1}}\Node% +{\def\Element% +{0:2}}\Node% +{\def\Element% +{0:3}}\Node% +{\def\Element% +{0:4}}CLSQL\endNode{}\endNode{} Users' Guide\endNode{}\Node% +{\def\Element% +{0:5}}\Node% +{\def\Element% +{0:6}}\Node% +{\def\Element% +{0:7}}Kevin\endNode{}\Node% +{\def\Element% +{0:8}}M.\endNode{}\Node% +{\def\Element% +{0:9}}Rosenberg\endNode{}\Node% +{\def\Element% +{0:10}}\Node% +{\def\Element% +{0:11}}Maintainer of CLSQL\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:12}}\Node% +{\def\Element% +{0:13}}Pierre\endNode{}\Node% +{\def\Element% +{0:14}}R.\endNode{}\Node% +{\def\Element% +{0:15}}Mai\endNode{}\Node% +{\def\Element% +{0:16}}\Node% +{\def\Element% +{0:17}}Author of Original MaiSQL Code\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:18}}\Node% +{\def\Element% +{0:19}}\$Date: 2002/04/23 21:30:27 $\endNode{}\Node% +{\def\Element% +{0:20}}\$Id: docbook.tex,v 1.1 2002/04/23 21:30:27 kevin Exp $\endNode{}\endNode{}\Node% +{\def\Element% +{0:21}}\Node% +{\def\Element% +{0:22}}\Node% +{\def\Element% +{0:23}}\Node% +{\def\Element% +{0:24}}\Node% +{\def\Element% +{0:25}}\Node% +{\def\Element% +{0:26}}CLSQL\endNode{}\endNode{} is Copyright \Entity{copy} 2002 by Kevin M. Rosenberg and + Copyright \Entity{copy} 1999-\/2001 by Pierre R. Mai.\endNode{}\endNode{}\Node% +{\def\Element% +{0:27}}\Node% +{\def\Element% +{0:28}}\Node% +{\def\Element% +{0:29}}Allegro CL\endNode{}\Entity{reg} is a registered + trademark of Franz Inc.\endNode{}\endNode{}\Node% +{\def\Element% +{0:30}}\Node% +{\def\Element% +{0:31}}\Node% +{\def\Element% +{0:32}}Common SQL\endNode{}, + \Node% +{\def\Element% +{0:33}}LispWorks\endNode{} and + \Node% +{\def\Element% +{0:34}}Xanalys\endNode{} are trademarks or + registered trademarks of Xanalys Inc.\endNode{}\endNode{}\Node% +{\def\Element% +{0:35}}\Node% +{\def\Element% +{0:36}}\Node% +{\def\Element% +{0:37}}Microsoft + Windows\endNode{}\Entity{reg} is a registered trademark of + Microsoft Inc.\endNode{}\endNode{}\Node% +{\def\Element% +{0:38}}\Node% +{\def\Element% +{0:39}}Other brand or + product names are the registered trademarks or trademarks of + their respective holders.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:40}}\Node% +{\def\Element% +{0:41}}Preface\endNode{}\Node% +{\def\Element% +{0:42}}This guide provides reference + to the features of \Node% +{\def\Element% +{0:43}}\Node% +{\def\Element% +{0:44}}CLSQL\endNode{}\endNode{}. The first + chapter provides an introduction to \Node% +{\def\Element% +{0:45}}\Node% +{\def\Element% +{0:46}}CLSQL\endNode{}\endNode{} and installation + instructions. + Following that chapter is the reference section for all user + accessible symbols of \Node% +{\def\Element% +{0:47}}\Node% +{\def\Element% +{0:48}}CLSQL\endNode{}\endNode{} with examples of usage, + followed by the reference section for all accessible symbols of + the database back-\/end interface. At the end there you will find + a glossary of commonly used terms with their + definitions.\endNode{}\endNode{}\Node% +{\def\Element% +{0:49}}\Node% +{\def\Element% +{0:50}}Introduction\endNode{}\Node% +{\def\Element% +{0:51}}\Node% +{\def\Element% +{0:52}}Purpose\endNode{}\Node% +{\def\Element% +{0:53}}\Node% +{\def\Element% +{0:54}}\Node% +{\def\Element% +{0:55}}CLSQL\endNode{}\endNode{} is a Common Lisp interface to \Node% +{\def\Element% +{0:56}}SQL\endNode{} databases. A number of Common +Lisp implementations and SQL databases are supported.The general +structure of \Node% +{\def\Element% +{0:57}}\Node% +{\def\Element% +{0:58}}CLSQL\endNode{}\endNode{} is based on the +\Node% +{\def\Element% +{0:59}}CommonSQL\endNode{} package by Xanalys.\endNode{}\endNode{}\Node% +{\def\Element% +{0:60}}\Node% +{\def\Element% +{0:61}}History\endNode{}\Node% +{\def\Element% +{0:62}} \Node% +{\def\Element% +{0:63}}\Node% +{\def\Element% +{0:64}}CLSQL\endNode{}\endNode{} is written by Kevin M. Rosenberg and based substantially +on Pierre R. Mai's excellent \Node% +{\def\Element% +{0:65}}\Node% +{\def\Element% +{0:66}}MaiSQL\endNode{}\endNode{} package. The main changes from \Node% +{\def\Element% +{0:67}}\Node% +{\def\Element% +{0:68}}MaiSQL\endNode{}\endNode{} +are: +\Node% +{\def\Element% +{0:69}}\Node% +{\def\Element% +{0:70}}\Node% +{\def\Element% +{0:71}}port from the \Node% +{\def\Element% +{0:72}}CMUCL\endNode{} FFI to \Node% +{\def\Element% +{0:73}}\Node% +{\def\Element% +{0:74}}UFFI\endNode{}\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:75}}\Node% +{\def\Element% +{0:76}}new \Node% +{\def\Element% +{0:77}}AllegroCL\endNode{} ODBC interface back-\/end.\endNode{}\endNode{}\Node% +{\def\Element% +{0:78}}\Node% +{\def\Element% +{0:79}}compatibility layer for \Node% +{\def\Element% +{0:80}}CMUCL\endNode{} specific code.\endNode{}\endNode{}\Node% +{\def\Element% +{0:81}}\Node% +{\def\Element% +{0:82}}much improved robustness for the \Node% +{\def\Element% +{0:83}}MySQL\endNode{} back-\/end.\endNode{}\endNode{}\Node% +{\def\Element% +{0:84}}\Node% +{\def\Element% +{0:85}}improved system loading.\endNode{}\endNode{}\Node% +{\def\Element% +{0:86}}\Node% +{\def\Element% +{0:87}}improved packages and symbol export.\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:88}}\Node% +{\def\Element% +{0:89}}Prerequisites\endNode{}\Node% +{\def\Element% +{0:90}}\Node% +{\def\Element% +{0:91}}\Node% +{\def\Element% +{0:92}}Defsystem\endNode{}\endNode{}\Node% +{\def\Element% +{0:93}} \Node% +{\def\Element% +{0:94}}\Node% +{\def\Element% +{0:95}}CLSQL\endNode{}\endNode{} uses \Node% +{\def\Element% +{0:96}}Defsystem\endNode{} to compile and load its +components. \Node% +{\def\Element% +{0:97}}Defsystem\endNode{} is included in the \Node% +{\def\Element% +{0:98}}\Node% +{\def\Element% +{0:99}}\Node% +{\def\Element% +{0:100}}\Node% +{\def\Element% +{0:101}}CLOCC\endNode{}\endNode{}\endNode{}\endNode{} collection. The +version in the pre-\/packaged distribution is rather old and +may not function well. The version in CVS tree tree works quite +well. For convenience, a copy of the latest \Node% +{\def\Element% +{0:102}}Defsystem\endNode{} at the FTP +\Node% +{\def\Element% +{0:103}}\Node% +{\def\Element% +{0:104}}site\endNode{}\endNode{} +of \Node% +{\def\Element% +{0:105}}\Node% +{\def\Element% +{0:106}}CLSQL\endNode{}\endNode{}. + \endNode{}\endNode{}\Node% +{\def\Element% +{0:107}}\Node% +{\def\Element% +{0:108}}\Node% +{\def\Element% +{0:109}}\Node% +{\def\Element% +{0:110}}UFFI\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:111}}\Node% +{\def\Element% +{0:112}}\Node% +{\def\Element% +{0:113}}CLSQL\endNode{}\endNode{} uses \Node% +{\def\Element% +{0:114}}\Node% +{\def\Element% +{0:115}}\Node% +{\def\Element% +{0:116}}\Node% +{\def\Element% +{0:117}}UFFI\endNode{}\endNode{}\endNode{}\endNode{} +as a \Node% +{\def\Element% +{0:118}}Foreign Function Interface\endNode{} (\Node% +{\def\Element% +{0:119}}FFI\endNode{}) to support multiple \Node% +{\def\Element% +{0:120}}ANSI Common Lisp\endNode{} +implementations.\endNode{}\Node% +{\def\Element% +{0:121}}You can download \Node% +{\def\Element% +{0:122}}\Node% +{\def\Element% +{0:123}}UFFI\endNode{}\endNode{} from its FTP \Node% +{\def\Element% +{0:124}}\Node% +{\def\Element% +{0:125}}site\endNode{}\endNode{}. There +are zip files for Microsoft Windows systems and gzipped tar files for +other systems.\endNode{}\endNode{}\Node% +{\def\Element% +{0:126}}\Node% +{\def\Element% +{0:127}}Supported Common Lisp Implementation\endNode{}\Node% +{\def\Element% +{0:128}}The implementations that support \Node% +{\def\Element% +{0:129}}\Node% +{\def\Element% +{0:130}}CLSQL\endNode{}\endNode{} is governed by the supported +implementations of \Node% +{\def\Element% +{0:131}}\Node% +{\def\Element% +{0:132}}UFFI\endNode{}\endNode{}. The following implementations are supported: + \endNode{}\Node% +{\def\Element% +{0:133}}\Node% +{\def\Element% +{0:134}}\Node% +{\def\Element% +{0:135}}\Node% +{\def\Element% +{0:136}}AllegroCL\endNode{} v6.1 on Redhat Linux 7.2, FreeBSD 4.5, and Microsoft Windows XP.\endNode{}\endNode{}\Node% +{\def\Element% +{0:137}}\Node% +{\def\Element% +{0:138}}\Node% +{\def\Element% +{0:139}}Lispworks\endNode{} v4.2 on Redhat Linux 7.2 and Microsoft Windows XP.\endNode{}\endNode{}\Node% +{\def\Element% +{0:140}}\Node% +{\def\Element% +{0:141}}\Node% +{\def\Element% +{0:142}}CMUCL\endNode{} 18d-\/pre on Redhat Linux 7.2, FreeBSD 4.5, and Solaris 2.8.\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:143}}\Node% +{\def\Element% +{0:144}}Supported \Node% +{\def\Element% +{0:145}}SQL\endNode{} Implementation\endNode{}\Node% +{\def\Element% +{0:146}} Currently, \Node% +{\def\Element% +{0:147}}\Node% +{\def\Element% +{0:148}}CLSQL\endNode{}\endNode{} supports the following databases: + \endNode{}\Node% +{\def\Element% +{0:149}}\Node% +{\def\Element% +{0:150}}\Node% +{\def\Element% +{0:151}}\Node% +{\def\Element% +{0:152}}MySQL\endNode{} v3.23.49.\endNode{}\endNode{}\Node% +{\def\Element% +{0:153}}\Node% +{\def\Element% +{0:154}}\Node% +{\def\Element% +{0:155}}PostgreSQL\endNode{} v7.2 with both direct API and TCP socket connections.\endNode{}\endNode{}\Node% +{\def\Element% +{0:156}}\Node% +{\def\Element% +{0:157}}Allegro's ODBC interface (\Node% +{\def\Element% +{0:158}}AODBC\endNode{}) using iODBC ODBC manager.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:159}}\Node% +{\def\Element% +{0:160}}Installation\endNode{}\Node% +{\def\Element% +{0:161}}\Node% +{\def\Element% +{0:162}}Ensure \Node% +{\def\Element% +{0:163}}Defsystem\endNode{} is loaded\endNode{}\Node% +{\def\Element% +{0:164}} Simply load the file \Node% +{\def\Element% +{0:165}}defsystem.lisp\endNode{}. + \Node% +{\def\Element% +{0:166}}(load "defsystem.lisp") + \endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:167}}\Node% +{\def\Element% +{0:168}}Build \Node% +{\def\Element% +{0:169}}C\endNode{} helper libraries\endNode{}\Node% +{\def\Element% +{0:170}}\Node% +{\def\Element% +{0:171}}\Node% +{\def\Element% +{0:172}}CLSQL\endNode{}\endNode{} uses functions that require 64-\/bit integer +parameters and return values. The \Node% +{\def\Element% +{0:173}}FFI\endNode{} in most \Node% +{\def\Element% +{0:174}}\Node% +{\def\Element% +{0:175}}CLSQL\endNode{}\endNode{} +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.\endNode{}\Node% +{\def\Element% +{0:176}}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 \Node% +{\def\Element% +{0:177}}DLL\endNode{} and \Node% +{\def\Element% +{0:178}}LIB\endNode{} +files for Microsoft Windows are supplied with the distribution.\endNode{}\Node% +{\def\Element% +{0:179}}To build the libraries on a GNU or Solaris, use the shell and +change to the root directory of \Node% +{\def\Element% +{0:180}}\Node% +{\def\Element% +{0:181}}CLSQL\endNode{}\endNode{}. You may need to edit the file +\Node% +{\def\Element% +{0:182}}interfaces/mysql/Makefile\endNode{} 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 +\Node% +{\def\Element% +{0:183}}make libs\endNode{} +in the root directory of \Node% +{\def\Element% +{0:184}}\Node% +{\def\Element% +{0:185}}CLSQL\endNode{}\endNode{} to build the libraries +\Node% +{\def\Element% +{0:186}}interfaces/mysql/clsql-\/mysql.so\endNode{} and +\Node% +{\def\Element% +{0:187}}interfaces/clsql-\/uffi/clsql-\/uffi.so\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:188}}\Node% +{\def\Element% +{0:189}}Load \Node% +{\def\Element% +{0:190}}\Node% +{\def\Element% +{0:191}}UFFI\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:192}} Unzip or untar the \Node% +{\def\Element% +{0:193}}\Node% +{\def\Element% +{0:194}}UFFI\endNode{}\endNode{} distribution which creates a directory +for the \Node% +{\def\Element% +{0:195}}\Node% +{\def\Element% +{0:196}}UFFI\endNode{}\endNode{} files. Add that directory to Defsystem's \Node% +{\def\Element% +{0:197}}mk:*central-\/registry*\endNode{}. +You can do that by either pushing the pathname of the directory onto this variable, or +use the new \Node% +{\def\Element% +{0:198}}add-\/registry-\/location\endNode{} present in the newest versions of +\Node% +{\def\Element% +{0:199}}Defsystem\endNode{}. The following example code assumes the \Node% +{\def\Element% +{0:200}}\Node% +{\def\Element% +{0:201}}UFFI\endNode{}\endNode{} files reside in the +\Node% +{\def\Element% +{0:202}}/usr/local/src/lisp/uffi\endNode{} directory. + \Node% +{\def\Element% +{0:203}}(mk:add-\/registry-\/location \#P"/usr/local/src/lisp/uffi") +(mk:load-\/system :uffi) + \endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:204}}\Node% +{\def\Element% +{0:205}}Load \Node% +{\def\Element% +{0:206}}\Node% +{\def\Element% +{0:207}}CLSQL\endNode{}\endNode{} modules\endNode{}\Node% +{\def\Element% +{0:208}} Unzip or untar the \Node% +{\def\Element% +{0:209}}\Node% +{\def\Element% +{0:210}}CLSQL\endNode{}\endNode{} distribution which creates a directory +for the \Node% +{\def\Element% +{0:211}}\Node% +{\def\Element% +{0:212}}CLSQL\endNode{}\endNode{} files. Add that directory to Defsystem's \Node% +{\def\Element% +{0:213}}mk:*central-\/registry*\endNode{}. +You can do that by either pushing the pathname of the directory onto this variable, or +use the new \Node% +{\def\Element% +{0:214}}add-\/registry-\/location\endNode{} present in the newest versions of +\Node% +{\def\Element% +{0:215}}Defsystem\endNode{}. The following example code assumes the \Node% +{\def\Element% +{0:216}}\Node% +{\def\Element% +{0:217}}CLSQL\endNode{}\endNode{} files reside in the +\Node% +{\def\Element% +{0:218}}/usr/local/src/lisp/clsql\endNode{} directory. You need to load, at a minimum, +the main \Node% +{\def\Element% +{0:219}}:clsql\endNode{} system and at least one interface system. + \Node% +{\def\Element% +{0:220}}(mk:add-\/registry-\/location \#P"/usr/local/src/lisp/clsql") +(mk:load-\/system :clsql) ; main clsql package +(mk:load-\/system :clsql-\/mysql) ; MySQL interface +(mk:load-\/system :clsql-\/postgresql) ; PostgreSQL interface +(mk:load-\/system :clsql-\/postgresql-\/socket) ; Socket PGSQL interface +(mk:load-\/system :clsql-\/aodbc) ; Allegro ODBC interface + \endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:221}}\Node% +{\def\Element% +{0:222}}Run test suite\endNode{}\Node% +{\def\Element% +{0:223}} After loading \Node% +{\def\Element% +{0:224}}\Node% +{\def\Element% +{0:225}}CLSQL\endNode{}\endNode{}, you can execute the test program in +the directory \Node% +{\def\Element% +{0:226}}./test-\/suite\endNode{}. The test file, +\Node% +{\def\Element% +{0:227}}tester-\/clsql\endNode{} +has instructions for creating a \Node% +{\def\Element% +{0:228}}test.config\endNode{}. +After creating that file, simple load the test file with Lisp +and the tests should automatically execute. + \endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:229}}\Node% +{\def\Element% +{0:230}}\Node% +{\def\Element% +{0:231}}CLSQL\endNode{}\endNode{}\Node% +{\def\Element% +{0:232}}\Node% +{\def\Element% +{0:233}}This part gives a reference to all the symbols exported + from the package \Node% +{\def\Element% +{0:234}}CLSQL-\/SYS\endNode{}, which are also + re-\/exported from the package \Node% +{\def\Element% +{0:235}}CLSQL\endNode{}. These + symbols constitute the normal user-\/interface of + \Node% +{\def\Element% +{0:236}}\Node% +{\def\Element% +{0:237}}CLSQL\endNode{}\endNode{}.\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-CONDITION}}\Node% +{\def\Element% +{0:239}}\Node% +{\def\Element% +{0:240}}CLSQL-\/CONDITION\endNode{}\Node% +{\def\Element% +{0:241}}the super-\/type of all + \Node% +{\def\Element% +{0:242}}\Node% +{\def\Element% +{0:243}}CLSQL\endNode{}\endNode{}-\/specific + conditions\endNode{}\Node% +{\def\Element% +{0:244}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:245}}\Node% +{\def\Element% +{0:246}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:247}} \Node% +{\def\Element% +{0:248}}\Node% +{\def\Element% +{0:249}}\Node% +{\def\Element% +{0:250}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:251}}\Node% +{\def\Element% +{0:252}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:253}}\Node% +{\def\Element% +{0:254}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:255}}\Node% +{\def\Element% +{0:256}}Description\endNode{}\Node% +{\def\Element% +{0:257}}This is the super-\/type of all + \Node% +{\def\Element% +{0:258}}\Node% +{\def\Element% +{0:259}}CLSQL\endNode{}\endNode{}-\/specific conditions + defined by \Node% +{\def\Element% +{0:260}}\Node% +{\def\Element% +{0:261}}CLSQL\endNode{}\endNode{}, or any of it's + database-\/specific interfaces. There are no defined + initialization arguments nor any accessors.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-ERROR}}\Node% +{\def\Element% +{0:263}}\Node% +{\def\Element% +{0:264}}CLSQL-\/ERROR\endNode{}\Node% +{\def\Element% +{0:265}}the super-\/type of all + \Node% +{\def\Element% +{0:266}}\Node% +{\def\Element% +{0:267}}CLSQL\endNode{}\endNode{}-\/specific + errors\endNode{}\Node% +{\def\Element% +{0:268}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:269}}\Node% +{\def\Element% +{0:270}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:271}} \Node% +{\def\Element% +{0:272}}\Node% +{\def\Element% +{0:273}}\Node% +{\def\Element% +{0:274}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:275}}\Node% +{\def\Element% +{0:276}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:277}}\Node% +{\def\Element% +{0:278}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:279}}\Node% +{\def\Element% +{0:280}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:281}}\Node% +{\def\Element% +{0:282}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:283}}\Node% +{\def\Element% +{0:284}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:285}}\Node% +{\def\Element% +{0:286}}Description\endNode{}\Node% +{\def\Element% +{0:287}}This is the super-\/type of all + \Node% +{\def\Element% +{0:288}}\Node% +{\def\Element% +{0:289}}CLSQL\endNode{}\endNode{}-\/specific conditions that + represent errors, as defined by + \Node% +{\def\Element% +{0:290}}\Node% +{\def\Element% +{0:291}}CLSQL\endNode{}\endNode{}, or any of it's + database-\/specific interfaces. There are no defined + initialization arguments nor any accessors.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-SIMPLE-ERROR}}\Node% +{\def\Element% +{0:293}}\Node% +{\def\Element% +{0:294}}CLSQL-\/SIMPLE-\/ERROR\endNode{}\Node% +{\def\Element% +{0:295}}Unspecific simple + \Node% +{\def\Element% +{0:296}}\Node% +{\def\Element% +{0:297}}CLSQL\endNode{}\endNode{} errors\endNode{}\Node% +{\def\Element% +{0:298}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:299}}\Node% +{\def\Element% +{0:300}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:301}} \Node% +{\def\Element% +{0:302}}\Node% +{\def\Element% +{0:303}}\Node% +{\def\Element% +{0:304}}maisql-\/simple-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:305}}\Node% +{\def\Element% +{0:306}}simple-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:307}}\Node% +{\def\Element% +{0:308}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:309}}\Node% +{\def\Element% +{0:310}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:311}}\Node% +{\def\Element% +{0:312}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:313}}\Node% +{\def\Element% +{0:314}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:315}}\Node% +{\def\Element% +{0:316}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:317}}\Node% +{\def\Element% +{0:318}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:319}}\Node% +{\def\Element% +{0:320}}Description\endNode{}\Node% +{\def\Element% +{0:321}}This condition is used in all instances of errors, where + there exists no \Node% +{\def\Element% +{0:322}}\Node% +{\def\Element% +{0:323}}CLSQL\endNode{}\endNode{}-\/specific + condition that is more specific. The valid initialization + arguments and accessors are the same as for + \Node% +{\def\Element% +{0:324}}simple-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-WARNING}}\Node% +{\def\Element% +{0:326}}\Node% +{\def\Element% +{0:327}}CLSQL-\/WARNING\endNode{}\Node% +{\def\Element% +{0:328}}the super-\/type of all + \Node% +{\def\Element% +{0:329}}\Node% +{\def\Element% +{0:330}}CLSQL\endNode{}\endNode{}-\/specific + warnings\endNode{}\Node% +{\def\Element% +{0:331}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:332}}\Node% +{\def\Element% +{0:333}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:334}} \Node% +{\def\Element% +{0:335}}\Node% +{\def\Element% +{0:336}}\Node% +{\def\Element% +{0:337}}maisql-\/warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:338}}\Node% +{\def\Element% +{0:339}}warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:340}}\Node% +{\def\Element% +{0:341}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:342}}\Node% +{\def\Element% +{0:343}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:344}}\Node% +{\def\Element% +{0:345}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:346}}\Node% +{\def\Element% +{0:347}}Description\endNode{}\Node% +{\def\Element% +{0:348}}This is the super-\/type of all + \Node% +{\def\Element% +{0:349}}\Node% +{\def\Element% +{0:350}}CLSQL\endNode{}\endNode{}-\/specific conditions that + represent warnings, as defined by + \Node% +{\def\Element% +{0:351}}\Node% +{\def\Element% +{0:352}}CLSQL\endNode{}\endNode{}, or any of it's + database-\/specific interfaces. There are no defined + initialization arguments nor any accessors.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-SIMPLE-WARNING}}\Node% +{\def\Element% +{0:354}}\Node% +{\def\Element% +{0:355}}CLSQL-\/SIMPLE-\/WARNING\endNode{}\Node% +{\def\Element% +{0:356}}Unspecific simple + \Node% +{\def\Element% +{0:357}}\Node% +{\def\Element% +{0:358}}CLSQL\endNode{}\endNode{} warnings\endNode{}\Node% +{\def\Element% +{0:359}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:360}}\Node% +{\def\Element% +{0:361}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:362}} \Node% +{\def\Element% +{0:363}}\Node% +{\def\Element% +{0:364}}\Node% +{\def\Element% +{0:365}}maisql-\/simple-\/warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:366}}\Node% +{\def\Element% +{0:367}}simple-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:368}}\Node% +{\def\Element% +{0:369}}maisql-\/warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:370}}\Node% +{\def\Element% +{0:371}}warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:372}}\Node% +{\def\Element% +{0:373}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:374}}\Node% +{\def\Element% +{0:375}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:376}}\Node% +{\def\Element% +{0:377}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:378}}\Node% +{\def\Element% +{0:379}}Description\endNode{}\Node% +{\def\Element% +{0:380}}This condition is used in all instances of warnings, + where there exists no + \Node% +{\def\Element% +{0:381}}\Node% +{\def\Element% +{0:382}}CLSQL\endNode{}\endNode{}-\/specific condition that is + more specific. The valid initialization arguments and + accessors are the same as for + \Node% +{\def\Element% +{0:383}}simple-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-INVALID-SPEC-ERROR}}\Node% +{\def\Element% +{0:385}}\Node% +{\def\Element% +{0:386}}CLSQL-\/INVALID-\/SPEC-\/ERROR\endNode{}\Node% +{\def\Element% +{0:387}}condition representing errors because of invalid + connection specifications\endNode{}\Node% +{\def\Element% +{0:388}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:389}}\Node% +{\def\Element% +{0:390}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:391}} \Node% +{\def\Element% +{0:392}}\Node% +{\def\Element% +{0:393}}\Node% +{\def\Element% +{0:394}}maisql-\/invalid-\/spec-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:395}}\Node% +{\def\Element% +{0:396}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:397}}\Node% +{\def\Element% +{0:398}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:399}}\Node% +{\def\Element% +{0:400}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:401}}\Node% +{\def\Element% +{0:402}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:403}}\Node% +{\def\Element% +{0:404}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:405}}\Node% +{\def\Element% +{0:406}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:407}}\Node% +{\def\Element% +{0:408}}Description\endNode{}\Node% +{\def\Element% +{0:409}}This condition represents errors that occur because the + user supplies an invalid connection specification to either + \Node% +{\def\Element% +{0:410}}database-\/name-\/from-\/spec\endNode{} or + \Node% +{\def\Element% +{0:411}}connect\endNode{}. The following initialization + arguments and accessors exist:\endNode{}\Node% +{\def\Element% +{0:412}}\Node% +{\def\Element% +{0:413}}Initarg\endNode{}\Node% +{\def\Element% +{0:414}}Accessor\endNode{}\Node% +{\def\Element% +{0:415}}Description\endNode{}\Node% +{\def\Element% +{0:416}}\Node% +{\def\Element% +{0:417}}\Node% +{\def\Element% +{0:418}}:connection-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:419}}\Node% +{\def\Element% +{0:420}}maisql-\/invalid-\/spec-\/error-\/connection-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:421}}The invalid connection specification used.\endNode{}\endNode{}\Node% +{\def\Element% +{0:422}}\Node% +{\def\Element% +{0:423}}\Node% +{\def\Element% +{0:424}}:database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:425}}\Node% +{\def\Element% +{0:426}}maisql-\/invalid-\/spec-\/error-\/database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:427}}The Database type used in the attempt.\endNode{}\endNode{}\Node% +{\def\Element% +{0:428}}\Node% +{\def\Element% +{0:429}}\Node% +{\def\Element% +{0:430}}:template\endNode{}\endNode{}\Node% +{\def\Element% +{0:431}}\Node% +{\def\Element% +{0:432}}maisql-\/invalid-\/spec-\/error-\/template\endNode{}\endNode{}\Node% +{\def\Element% +{0:433}}An argument describing the template that a valid + connection specification must match for this database type.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-CONNECT-ERROR}}\Node% +{\def\Element% +{0:435}}\Node% +{\def\Element% +{0:436}}CLSQL-\/CONNECT-\/ERROR\endNode{}\Node% +{\def\Element% +{0:437}}condition representing errors during + connection\endNode{}\Node% +{\def\Element% +{0:438}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:439}}\Node% +{\def\Element% +{0:440}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:441}} \Node% +{\def\Element% +{0:442}}\Node% +{\def\Element% +{0:443}}\Node% +{\def\Element% +{0:444}}maisql-\/connect-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:445}}\Node% +{\def\Element% +{0:446}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:447}}\Node% +{\def\Element% +{0:448}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:449}}\Node% +{\def\Element% +{0:450}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:451}}\Node% +{\def\Element% +{0:452}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:453}}\Node% +{\def\Element% +{0:454}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:455}}\Node% +{\def\Element% +{0:456}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:457}}\Node% +{\def\Element% +{0:458}}Description\endNode{}\Node% +{\def\Element% +{0:459}}This condition represents errors that occur while trying + to connect to a database. The following initialization + arguments and accessors exist:\endNode{}\Node% +{\def\Element% +{0:460}}\Node% +{\def\Element% +{0:461}}Initarg\endNode{}\Node% +{\def\Element% +{0:462}}Accessor\endNode{}\Node% +{\def\Element% +{0:463}}Description\endNode{}\Node% +{\def\Element% +{0:464}}\Node% +{\def\Element% +{0:465}}\Node% +{\def\Element% +{0:466}}:database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:467}}\Node% +{\def\Element% +{0:468}}maisql-\/connect-\/error-\/database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:469}}Database type for the connection attempt\endNode{}\endNode{}\Node% +{\def\Element% +{0:470}}\Node% +{\def\Element% +{0:471}}\Node% +{\def\Element% +{0:472}}:connection-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:473}}\Node% +{\def\Element% +{0:474}}maisql-\/connect-\/error-\/connection-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:475}}The connection specification used in the + connection attempt.\endNode{}\endNode{}\Node% +{\def\Element% +{0:476}}\Node% +{\def\Element% +{0:477}}\Node% +{\def\Element% +{0:478}}:errno\endNode{}\endNode{}\Node% +{\def\Element% +{0:479}}\Node% +{\def\Element% +{0:480}}maisql-\/connect-\/error-\/errno\endNode{}\endNode{}\Node% +{\def\Element% +{0:481}}The numeric or symbolic error specification + returned by the database back-\/end. The values and + semantics of this are interface specific.\endNode{}\endNode{}\Node% +{\def\Element% +{0:482}}\Node% +{\def\Element% +{0:483}}\Node% +{\def\Element% +{0:484}}:error\endNode{}\endNode{}\Node% +{\def\Element% +{0:485}}\Node% +{\def\Element% +{0:486}}maisql-\/connect-\/error-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:487}}A string describing the problem that occurred, + possibly one returned by the database back-\/end.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-SQL-ERROR}}\Node% +{\def\Element% +{0:489}}\Node% +{\def\Element% +{0:490}}CLSQL-\/SQL-\/ERROR\endNode{}\Node% +{\def\Element% +{0:491}}condition representing errors during query or + command execution\endNode{}\Node% +{\def\Element% +{0:492}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:493}}\Node% +{\def\Element% +{0:494}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:495}} \Node% +{\def\Element% +{0:496}}\Node% +{\def\Element% +{0:497}}\Node% +{\def\Element% +{0:498}}maisql-\/sql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:499}}\Node% +{\def\Element% +{0:500}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:501}}\Node% +{\def\Element% +{0:502}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:503}}\Node% +{\def\Element% +{0:504}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:505}}\Node% +{\def\Element% +{0:506}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:507}}\Node% +{\def\Element% +{0:508}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:509}}\Node% +{\def\Element% +{0:510}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:511}}\Node% +{\def\Element% +{0:512}}Description\endNode{}\Node% +{\def\Element% +{0:513}}This condition represents errors that occur while + executing SQL statements, either as part of query operations + or command execution, either explicitly or implicitly, as + caused e.g. by \Node% +{\def\Element% +{0:514}}with-\/transaction\endNode{}. + The following initialization arguments and accessors exist:\endNode{}\Node% +{\def\Element% +{0:515}}\Node% +{\def\Element% +{0:516}}Initarg\endNode{}\Node% +{\def\Element% +{0:517}}Accessor\endNode{}\Node% +{\def\Element% +{0:518}}Description\endNode{}\Node% +{\def\Element% +{0:519}}\Node% +{\def\Element% +{0:520}}\Node% +{\def\Element% +{0:521}}:database\endNode{}\endNode{}\Node% +{\def\Element% +{0:522}}\Node% +{\def\Element% +{0:523}}maisql-\/sql-\/error-\/database\endNode{}\endNode{}\Node% +{\def\Element% +{0:524}}The database object that was involved in the + incident.\endNode{}\endNode{}\Node% +{\def\Element% +{0:525}}\Node% +{\def\Element% +{0:526}}\Node% +{\def\Element% +{0:527}}:expression\endNode{}\endNode{}\Node% +{\def\Element% +{0:528}}\Node% +{\def\Element% +{0:529}}maisql-\/sql-\/error-\/expression\endNode{}\endNode{}\Node% +{\def\Element% +{0:530}}The SQL expression whose execution caused the error.\endNode{}\endNode{}\Node% +{\def\Element% +{0:531}}\Node% +{\def\Element% +{0:532}}\Node% +{\def\Element% +{0:533}}:errno\endNode{}\endNode{}\Node% +{\def\Element% +{0:534}}\Node% +{\def\Element% +{0:535}}maisql-\/sql-\/error-\/errno\endNode{}\endNode{}\Node% +{\def\Element% +{0:536}}The numeric or symbolic error specification + returned by the database back-\/end. The values and + semantics of this are interface specific.\endNode{}\endNode{}\Node% +{\def\Element% +{0:537}}\Node% +{\def\Element% +{0:538}}\Node% +{\def\Element% +{0:539}}:error\endNode{}\endNode{}\Node% +{\def\Element% +{0:540}}\Node% +{\def\Element% +{0:541}}maisql-\/sql-\/error-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:542}}A string describing the problem that occurred, + possibly one returned by the database back-\/end.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-EXISTS-CONDITION}}\Node% +{\def\Element% +{0:544}}\Node% +{\def\Element% +{0:545}}CLSQL-\/EXISTS-\/CONDITION\endNode{}\Node% +{\def\Element% +{0:546}}condition indicating situations arising because of + existing connections\endNode{}\Node% +{\def\Element% +{0:547}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:548}}\Node% +{\def\Element% +{0:549}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:550}} \Node% +{\def\Element% +{0:551}}\Node% +{\def\Element% +{0:552}}\Node% +{\def\Element% +{0:553}}maisql-\/exists-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:554}}\Node% +{\def\Element% +{0:555}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:556}}\Node% +{\def\Element% +{0:557}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:558}}\Node% +{\def\Element% +{0:559}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:560}}\Node% +{\def\Element% +{0:561}}Description\endNode{}\Node% +{\def\Element% +{0:562}}This condition is the super-\/type of all conditions which + represents problems that occur during calls to + \Node% +{\def\Element% +{0:563}}connect\endNode{}, if a connection to the + database exists already. Depending on the value of + \Node% +{\def\Element% +{0:564}}if-\/exists\endNode{} to the call of + \Node% +{\def\Element% +{0:565}}connect\endNode{}, either a warning, an error or + no condition at all is signalled. If a warning or error is + signalled, either + \Node% +{\def\Element% +{0:566}}maisql-\/exists-\/warning\endNode{} or + \Node% +{\def\Element% +{0:567}}maisql-\/exists-\/error\endNode{} is signalled, + which are subtypes of + \Node% +{\def\Element% +{0:568}}maisql-\/exists-\/condition\endNode{} and + \Node% +{\def\Element% +{0:569}}maisql-\/warning\endNode{} or + \Node% +{\def\Element% +{0:570}}maisql-\/error\endNode{}. + \Node% +{\def\Element% +{0:571}}maisql-\/exists-\/condition\endNode{} is never + signalled itself.\endNode{}\Node% +{\def\Element% +{0:572}} The following initialization arguments and accessors exist:\endNode{}\Node% +{\def\Element% +{0:573}}\Node% +{\def\Element% +{0:574}}Initarg\endNode{}\Node% +{\def\Element% +{0:575}}Accessor\endNode{}\Node% +{\def\Element% +{0:576}}Description\endNode{}\Node% +{\def\Element% +{0:577}}\Node% +{\def\Element% +{0:578}}\Node% +{\def\Element% +{0:579}}:old-\/db\endNode{}\endNode{}\Node% +{\def\Element% +{0:580}}\Node% +{\def\Element% +{0:581}}maisql-\/exists-\/condition-\/old-\/db\endNode{}\endNode{}\Node% +{\def\Element% +{0:582}}The database object that represents the existing + connection. This slot is always filled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:583}}\Node% +{\def\Element% +{0:584}}\Node% +{\def\Element% +{0:585}}:new-\/db\endNode{}\endNode{}\Node% +{\def\Element% +{0:586}}\Node% +{\def\Element% +{0:587}}maisql-\/exists-\/condition-\/new-\/db\endNode{}\endNode{}\Node% +{\def\Element% +{0:588}}The database object that will be used and returned by + this call to connect, if execution continues normally. + This can be either \Node% +{\def\Element% +{0:589}}nil\endNode{}, indicating that + a new database object is to be created on continuation, + or a database object representing the newly created + continuation, or the same database object as + \Node% +{\def\Element% +{0:590}}old-\/db\endNode{}, indicating that the existing + database object will be reused. This slot is always + filled and defaults to \Node% +{\def\Element% +{0:591}}nil\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-EXISTS-WARNING}}\Node% +{\def\Element% +{0:593}}\Node% +{\def\Element% +{0:594}}CLSQL-\/EXISTS-\/WARNING\endNode{}\Node% +{\def\Element% +{0:595}}condition representing warnings arising because of + existing connections\endNode{}\Node% +{\def\Element% +{0:596}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:597}}\Node% +{\def\Element% +{0:598}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:599}} \Node% +{\def\Element% +{0:600}}\Node% +{\def\Element% +{0:601}}\Node% +{\def\Element% +{0:602}}maisql-\/exists-\/warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:603}}\Node% +{\def\Element% +{0:604}}maisql-\/exists-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:605}}\Node% +{\def\Element% +{0:606}}maisql-\/warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:607}}\Node% +{\def\Element% +{0:608}}warning\endNode{}\endNode{}\Node% +{\def\Element% +{0:609}}\Node% +{\def\Element% +{0:610}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:611}}\Node% +{\def\Element% +{0:612}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:613}}\Node% +{\def\Element% +{0:614}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:615}}\Node% +{\def\Element% +{0:616}}Description\endNode{}\Node% +{\def\Element% +{0:617}}This condition is a subtype of + \Node% +{\def\Element% +{0:618}}maisql-\/exists-\/condition\endNode{}, and is + signalled during calls to \Node% +{\def\Element% +{0:619}}connect\endNode{} when + there is an existing connection, and + \Node% +{\def\Element% +{0:620}}if-\/exists\endNode{} is either + \Node% +{\def\Element% +{0:621}}:warn-\/new\endNode{} or \Node% +{\def\Element% +{0:622}}:warn-\/old\endNode{}. + In the former case, \Node% +{\def\Element% +{0:623}}new-\/db\endNode{} will be the + newly created database object, in the latter case it will be + the existing old database object.\endNode{}\Node% +{\def\Element% +{0:624}} The initialization arguments and accessors are the same as + for \Node% +{\def\Element% +{0:625}}maisql-\/exists-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-EXISTS-ERROR}}\Node% +{\def\Element% +{0:627}}\Node% +{\def\Element% +{0:628}}CLSQL-\/EXISTS-\/ERROR\endNode{}\Node% +{\def\Element% +{0:629}}condition representing errors arising because of + existing connections\endNode{}\Node% +{\def\Element% +{0:630}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:631}}\Node% +{\def\Element% +{0:632}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:633}} \Node% +{\def\Element% +{0:634}}\Node% +{\def\Element% +{0:635}}\Node% +{\def\Element% +{0:636}}maisql-\/exists-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:637}}\Node% +{\def\Element% +{0:638}}maisql-\/exists-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:639}}\Node% +{\def\Element% +{0:640}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:641}}\Node% +{\def\Element% +{0:642}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:643}}\Node% +{\def\Element% +{0:644}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:645}}\Node% +{\def\Element% +{0:646}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:647}}\Node% +{\def\Element% +{0:648}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:649}}\Node% +{\def\Element% +{0:650}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:651}}\Node% +{\def\Element% +{0:652}}Description\endNode{}\Node% +{\def\Element% +{0:653}}This condition is a subtype of + \Node% +{\def\Element% +{0:654}}maisql-\/exists-\/condition\endNode{}, and is + signalled during calls to \Node% +{\def\Element% +{0:655}}connect\endNode{} when + there is an existing connection, and + \Node% +{\def\Element% +{0:656}}if-\/exists\endNode{} is \Node% +{\def\Element% +{0:657}}:error\endNode{}. + In this case, \Node% +{\def\Element% +{0:658}}new-\/db\endNode{} will be + \Node% +{\def\Element% +{0:659}}nil\endNode{}, indicating that the database object to + be returned by \Node% +{\def\Element% +{0:660}}connect\endNode{} depends on user + action in continuing from this correctable error.\endNode{}\Node% +{\def\Element% +{0:661}} The initialization arguments and accessors are the same as + for \Node% +{\def\Element% +{0:662}}maisql-\/exists-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAISQL-CLOSED-ERROR}}\Node% +{\def\Element% +{0:664}}\Node% +{\def\Element% +{0:665}}CLSQL-\/CLOSED-\/ERROR\endNode{}\Node% +{\def\Element% +{0:666}}condition representing errors because the database + has already been closed\endNode{}\Node% +{\def\Element% +{0:667}}Condition Type\endNode{}\endNode{}\Node% +{\def\Element% +{0:668}}\Node% +{\def\Element% +{0:669}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:670}} \Node% +{\def\Element% +{0:671}}\Node% +{\def\Element% +{0:672}}\Node% +{\def\Element% +{0:673}}maisql-\/closed-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:674}}\Node% +{\def\Element% +{0:675}}maisql-\/error\endNode{}\endNode{}\Node% +{\def\Element% +{0:676}}\Node% +{\def\Element% +{0:677}}error\endNode{}\endNode{}\Node% +{\def\Element% +{0:678}}\Node% +{\def\Element% +{0:679}}serious-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:680}}\Node% +{\def\Element% +{0:681}}maisql-\/condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:682}}\Node% +{\def\Element% +{0:683}}condition\endNode{}\endNode{}\Node% +{\def\Element% +{0:684}}\Node% +{\def\Element% +{0:685}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:686}}\Node% +{\def\Element% +{0:687}}Description\endNode{}\Node% +{\def\Element% +{0:688}}This condition represents errors that occur because the + user invokes an operation on the given database object, + although the database is invalid because + \Node% +{\def\Element% +{0:689}}disconnect\endNode{} has already been called on + this database object.\endNode{}\Node% +{\def\Element% +{0:690}}Functions which signal this error when called with a + closed database will usually provide a + \Node% +{\def\Element% +{0:691}}continue\endNode{} restart, that will just return nil + from the function.\endNode{}\Node% +{\def\Element% +{0:692}} The following initialization arguments and accessors exist:\endNode{}\Node% +{\def\Element% +{0:693}}\Node% +{\def\Element% +{0:694}}Initarg\endNode{}\Node% +{\def\Element% +{0:695}}Accessor\endNode{}\Node% +{\def\Element% +{0:696}}Description\endNode{}\Node% +{\def\Element% +{0:697}}\Node% +{\def\Element% +{0:698}}\Node% +{\def\Element% +{0:699}}:database\endNode{}\endNode{}\Node% +{\def\Element% +{0:700}}\Node% +{\def\Element% +{0:701}}maisql-\/closed-\/error-\/database\endNode{}\endNode{}\Node% +{\def\Element% +{0:702}}The database object that was involved in the + incident.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DEFAULT-DATABASE-TYPE}}\Node% +{\def\Element% +{0:704}}\Node% +{\def\Element% +{0:705}}*DEFAULT-\/DATABASE-\/TYPE*\endNode{}\Node% +{\def\Element% +{0:706}}The default database type to use\endNode{}\Node% +{\def\Element% +{0:707}}Variable\endNode{}\endNode{}\Node% +{\def\Element% +{0:708}}\Node% +{\def\Element% +{0:709}}Value Type\endNode{}\Node% +{\def\Element% +{0:710}}Any keyword representing a valid database back-\/end of + \Node% +{\def\Element% +{0:711}}\Node% +{\def\Element% +{0:712}}CLSQL\endNode{}\endNode{}, or + \Node% +{\def\Element% +{0:713}}nil\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:714}}\Node% +{\def\Element% +{0:715}}Initial Value\endNode{}\Node% +{\def\Element% +{0:716}}\Node% +{\def\Element% +{0:717}}nil\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:718}}\Node% +{\def\Element% +{0:719}}Description\endNode{}\Node% +{\def\Element% +{0:720}}The value of this variable is used in calls to + \Node% +{\def\Element% +{0:721}}initialize-\/database-\/type\endNode{} and + \Node% +{\def\Element% +{0:722}}connect\endNode{} as the default + value of the \Node% +{\def\Element% +{0:723}}database-\/type\endNode{} + parameter.\endNode{}\Node% +{\def\Element% +{0:724}}\Node% +{\def\Element% +{0:725}}If the value of this variable is \Node% +{\def\Element% +{0:726}}nil\endNode{}, + then all calls to + \Node% +{\def\Element% +{0:727}}initialize-\/database-\/type\endNode{} or + \Node% +{\def\Element% +{0:728}}connect\endNode{} will have to specify the + \Node% +{\def\Element% +{0:729}}database-\/type\endNode{} to use, or a + general-\/purpose error will be signalled.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:730}}\Node% +{\def\Element% +{0:731}}Examples\endNode{}\Node% +{\def\Element% +{0:732}}(setf *default-\/database-\/type* :mysql) +=>\/ :mysql +(initialize-\/database-\/type) +=>\/ t + \endNode{}\endNode{}\Node% +{\def\Element% +{0:733}}\Node% +{\def\Element% +{0:734}}Affected By\endNode{}\Node% +{\def\Element% +{0:735}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:736}}\Node% +{\def\Element% +{0:737}}See Also\endNode{}\Node% +{\def\Element% +{0:738}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:739}}\Node% +{\def\Element% +{0:740}}Notes\endNode{}\Node% +{\def\Element% +{0:741}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:INITIALIZED-DATABASE-TYPES}}\Node% +{\def\Element% +{0:743}}\Node% +{\def\Element% +{0:744}}*INITIALIZED-\/DATABASE-\/TYPES*\endNode{}\Node% +{\def\Element% +{0:745}}List of all initialized database types\endNode{}\Node% +{\def\Element% +{0:746}}Variable\endNode{}\endNode{}\Node% +{\def\Element% +{0:747}}\Node% +{\def\Element% +{0:748}}Value Type\endNode{}\Node% +{\def\Element% +{0:749}}A list of all initialized database types, each of which + represented by it's corresponding keyword.\endNode{}\endNode{}\Node% +{\def\Element% +{0:750}}\Node% +{\def\Element% +{0:751}}Initial Value\endNode{}\Node% +{\def\Element% +{0:752}}\Node% +{\def\Element% +{0:753}}nil\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:754}}\Node% +{\def\Element% +{0:755}}Description\endNode{}\Node% +{\def\Element% +{0:756}}This variable is updated whenever + \Node% +{\def\Element% +{0:757}}initialize-\/database-\/type\endNode{} is called for a + database type which hasn't already been initialized before, + as determined by this variable. In that case the keyword + representing the database type is pushed onto the list + stored in + \Node% +{\def\Element% +{0:758}}*INITIALIZED-\/DATABASE-\/TYPES*\endNode{}.\endNode{}\Node% +{\def\Element% +{0:759}}\Node% +{\def\Element% +{0:760}}Attempts to modify the value of this variable will + result in undefined behaviour.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:761}}\Node% +{\def\Element% +{0:762}}Examples\endNode{}\Node% +{\def\Element% +{0:763}}(setf *default-\/database-\/type* :mysql) +=>\/ :mysql +(initialize-\/database-\/type) +=>\/ t +*initialized-\/database-\/types* +=>\/ (:MYSQL) + \endNode{}\endNode{}\Node% +{\def\Element% +{0:764}}\Node% +{\def\Element% +{0:765}}Affected By\endNode{}\Node% +{\def\Element% +{0:766}} \Node% +{\def\Element% +{0:767}}\Node% +{\def\Element% +{0:768}}\Node% +{\def\Element% +{0:769}}initialize-\/database-\/type\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:770}}\Node% +{\def\Element% +{0:771}}See Also\endNode{}\Node% +{\def\Element% +{0:772}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:773}}\Node% +{\def\Element% +{0:774}}Notes\endNode{}\Node% +{\def\Element% +{0:775}}Direct access to this variable is primarily provided + because of compatibility with Harlequin's \Node% +{\def\Element% +{0:776}}Common + SQL\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:INITIALIZE-DATABASE-TYPE}}\Node% +{\def\Element% +{0:778}}\Node% +{\def\Element% +{0:779}}INITIALIZE-\/DATABASE-\/TYPE\endNode{}\Node% +{\def\Element% +{0:780}}Initializes a database type\endNode{}\Node% +{\def\Element% +{0:781}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:782}}\Node% +{\def\Element% +{0:783}}Syntax\endNode{}\Node% +{\def\Element% +{0:784}}\Node% +{\def\Element% +{0:785}}initialize-\/database-\/type\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:786}}database-\/type\endNode{} =>\/ \Node% +{\def\Element% +{0:787}}result\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:788}}\Node% +{\def\Element% +{0:789}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:790}}\Node% +{\def\Element% +{0:791}}\Node% +{\def\Element% +{0:792}}\Node% +{\def\Element% +{0:793}}database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:794}}\Node% +{\def\Element% +{0:795}}The database type to initialize, i.e. a keyword + symbol denoting a known database back-\/end. Defaults to + the value of + \Node% +{\def\Element% +{0:796}}*default-\/database-\/type*\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:797}}\Node% +{\def\Element% +{0:798}}\Node% +{\def\Element% +{0:799}}result\endNode{}\endNode{}\Node% +{\def\Element% +{0:800}}\Node% +{\def\Element% +{0:801}}Either \Node% +{\def\Element% +{0:802}}nil\endNode{} if the initialization + attempt fails, or \Node% +{\def\Element% +{0:803}}t\endNode{} otherwise.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:804}}\Node% +{\def\Element% +{0:805}}Description\endNode{}\Node% +{\def\Element% +{0:806}}If the back-\/end specified by + \Node% +{\def\Element% +{0:807}}database-\/type\endNode{} has not already been + initialized, as seen from + \Node% +{\def\Element% +{0:808}}*initialized-\/database-\/types*\endNode{}, an attempt is + made to initialize the database. If this attempt succeeds, + or the back-\/end has already been initialized, the function + returns t, and places the keyword denoting the database type + onto the list stored in + \Node% +{\def\Element% +{0:809}}*initialized-\/database-\/types*\endNode{}, if not + already present.\endNode{}\Node% +{\def\Element% +{0:810}}If initialization fails, the function returns + \Node% +{\def\Element% +{0:811}}nil\endNode{}, and/or signals an error of type + \Node% +{\def\Element% +{0:812}}maisql-\/error\endNode{}. The kind of action + taken depends on the back-\/end and the cause of the + problem.\endNode{}\endNode{}\Node% +{\def\Element% +{0:813}}\Node% +{\def\Element% +{0:814}}Examples\endNode{}\Node% +{\def\Element% +{0:815}}*initialized-\/database-\/types* +=>\/ NIL +(setf *default-\/database-\/type* :mysql) +=>\/ :MYSQL +(initialize-\/database-\/type) +>\/>\/ Compiling LAMBDA (\#:G897 \#:G898 \#:G901 \#:G902): +>\/>\/ Compiling Top-\/Level Form: +>\/>\/ +=>\/ T +*initialized-\/database-\/types* +=>\/ (:MYSQL) +(initialize-\/database-\/type) +=>\/ T +*initialized-\/database-\/types* +=>\/ (:MYSQL) + \endNode{}\endNode{}\Node% +{\def\Element% +{0:816}}\Node% +{\def\Element% +{0:817}}Side Effects\endNode{}\Node% +{\def\Element% +{0:818}}The database back-\/end corresponding to the database type + specified is initialized, unless it has already been + initialized. This can involve any number of other side + effects, as determined by the back-\/end implementation (like + e.g. loading of foreign code, calling of foreign code, + networking operations, etc.). If initialization is + attempted and succeeds, the + \Node% +{\def\Element% +{0:819}}database-\/type\endNode{} is pushed onto the list + stored in + \Node% +{\def\Element% +{0:820}}*initialized-\/database-\/types*\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:821}}\Node% +{\def\Element% +{0:822}}Affected by\endNode{}\Node% +{\def\Element% +{0:823}} \Node% +{\def\Element% +{0:824}}\Node% +{\def\Element% +{0:825}}\Node% +{\def\Element% +{0:826}}*default-\/database-\/type*\endNode{}\endNode{}\Node% +{\def\Element% +{0:827}}\Node% +{\def\Element% +{0:828}}*initialized-\/database-\/types*\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:829}}\Node% +{\def\Element% +{0:830}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:831}}If an error is encountered during the initialization + attempt, the back-\/end may signal errors of kind + \Node% +{\def\Element% +{0:832}}maisql-\/error\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:833}}\Node% +{\def\Element% +{0:834}}See Also\endNode{}\Node% +{\def\Element% +{0:835}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:836}}\Node% +{\def\Element% +{0:837}}Notes\endNode{}\Node% +{\def\Element% +{0:838}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:CONNECT-IF-EXISTS}}\Node% +{\def\Element% +{0:840}}\Node% +{\def\Element% +{0:841}}*CONNECT-\/IF-\/EXISTS*\endNode{}\Node% +{\def\Element% +{0:842}}Default value for the + \Node% +{\def\Element% +{0:843}}if-\/exists\endNode{} parameter of + \Node% +{\def\Element% +{0:844}}connect\endNode{}.\endNode{}\Node% +{\def\Element% +{0:845}}Variable\endNode{}\endNode{}\Node% +{\def\Element% +{0:846}}\Node% +{\def\Element% +{0:847}}Value Type\endNode{}\Node% +{\def\Element% +{0:848}}A valid argument to the \Node% +{\def\Element% +{0:849}}if-\/exists\endNode{} + parameter of \Node% +{\def\Element% +{0:850}}connect\endNode{}, i.e. one of + \Node% +{\def\Element% +{0:851}}\Node% +{\def\Element% +{0:852}}\Node% +{\def\Element% +{0:853}}:new\endNode{}\endNode{}\Node% +{\def\Element% +{0:854}}\Node% +{\def\Element% +{0:855}}:warn-\/new\endNode{}\endNode{}\Node% +{\def\Element% +{0:856}}\Node% +{\def\Element% +{0:857}}:error\endNode{}\endNode{}\Node% +{\def\Element% +{0:858}}\Node% +{\def\Element% +{0:859}}:warn-\/old\endNode{}\endNode{}\Node% +{\def\Element% +{0:860}}\Node% +{\def\Element% +{0:861}}:old\endNode{}\endNode{}\endNode{}. + \endNode{}\endNode{}\Node% +{\def\Element% +{0:862}}\Node% +{\def\Element% +{0:863}}Initial Value\endNode{}\Node% +{\def\Element% +{0:864}}\Node% +{\def\Element% +{0:865}}:error\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:866}}\Node% +{\def\Element% +{0:867}}Description\endNode{}\Node% +{\def\Element% +{0:868}}The value of this variable is used in calls to + \Node% +{\def\Element% +{0:869}}connect\endNode{} as the default + value of the \Node% +{\def\Element% +{0:870}}if-\/exists\endNode{} + parameter. See \Node% +{\def\Element% +{0:871}}\Node% +{\def\Element% +{0:872}}connect\endNode{}\endNode{} for + the semantics of the valid values for this variable.\endNode{}\endNode{}\Node% +{\def\Element% +{0:873}}\Node% +{\def\Element% +{0:874}}Examples\endNode{}\Node% +{\def\Element% +{0:875}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:876}}\Node% +{\def\Element% +{0:877}}Affected By\endNode{}\Node% +{\def\Element% +{0:878}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:879}}\Node% +{\def\Element% +{0:880}}See Also\endNode{}\Node% +{\def\Element% +{0:881}} \Node% +{\def\Element% +{0:882}}\Node% +{\def\Element% +{0:883}}\Node% +{\def\Element% +{0:884}}\Node% +{\def\Element% +{0:885}}connect\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:886}}\Node% +{\def\Element% +{0:887}}Notes\endNode{}\Node% +{\def\Element% +{0:888}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:CONNECTED-DATABASES}}\Node% +{\def\Element% +{0:890}}\Node% +{\def\Element% +{0:891}}CONNECTED-\/DATABASES\endNode{}\Node% +{\def\Element% +{0:892}}Return the list of active database + objects.\endNode{}\Node% +{\def\Element% +{0:893}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:894}}\Node% +{\def\Element% +{0:895}}Syntax\endNode{}\Node% +{\def\Element% +{0:896}}\Node% +{\def\Element% +{0:897}}connected-\/databases\endNode{} =>\/ \Node% +{\def\Element% +{0:898}}databases\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:899}}\Node% +{\def\Element% +{0:900}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:901}}\Node% +{\def\Element% +{0:902}}\Node% +{\def\Element% +{0:903}}\Node% +{\def\Element% +{0:904}}databases\endNode{}\endNode{}\Node% +{\def\Element% +{0:905}}\Node% +{\def\Element% +{0:906}}The list of active database objects.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:907}}\Node% +{\def\Element% +{0:908}}Description\endNode{}\Node% +{\def\Element% +{0:909}}This function returns the list of active database + objects, i.e. all those database objects created by calls to + \Node% +{\def\Element% +{0:910}}connect\endNode{}, which have not been closed by + calling \Node% +{\def\Element% +{0:911}}disconnect\endNode{} on them.\endNode{}\Node% +{\def\Element% +{0:912}}\Node% +{\def\Element% +{0:913}}The consequences of modifying the list returned by + \Node% +{\def\Element% +{0:914}}connected-\/databases\endNode{} are + undefined.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:915}}\Node% +{\def\Element% +{0:916}}Examples\endNode{}\Node% +{\def\Element% +{0:917}}(connected-\/databases) +=>\/ NIL +(connect '(nil "template1" "dent" nil) :database-\/type :postgresql) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{4830BC65\}>\/ +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{4830C5AD\}>\/ +(connected-\/databases) +=>\/ (\#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{4830C5AD\}>\/ + \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{4830BC65\}>\/) +(disconnect) +=>\/ T +(connected-\/databases) +=>\/ (\#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{4830BC65\}>\/) +(disconnect) +=>\/ T +(connected-\/databases) +=>\/ NIL + \endNode{}\endNode{}\Node% +{\def\Element% +{0:918}}\Node% +{\def\Element% +{0:919}}Side Effects\endNode{}\Node% +{\def\Element% +{0:920}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:921}}\Node% +{\def\Element% +{0:922}}Affected By\endNode{}\Node% +{\def\Element% +{0:923}} \Node% +{\def\Element% +{0:924}}\Node% +{\def\Element% +{0:925}}\Node% +{\def\Element% +{0:926}}connect\endNode{}\endNode{}\Node% +{\def\Element% +{0:927}}\Node% +{\def\Element% +{0:928}}disconnect\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:929}}\Node% +{\def\Element% +{0:930}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:931}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:932}}\Node% +{\def\Element% +{0:933}}See Also\endNode{}\Node% +{\def\Element% +{0:934}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:935}}\Node% +{\def\Element% +{0:936}}Notes\endNode{}\Node% +{\def\Element% +{0:937}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DEFAULT-DATABASE}}\Node% +{\def\Element% +{0:939}}\Node% +{\def\Element% +{0:940}}*DEFAULT-\/DATABASE*\endNode{}\Node% +{\def\Element% +{0:941}}The default database object to use\endNode{}\Node% +{\def\Element% +{0:942}}Variable\endNode{}\endNode{}\Node% +{\def\Element% +{0:943}}\Node% +{\def\Element% +{0:944}}Value Type\endNode{}\Node% +{\def\Element% +{0:945}}Any object of type \Node% +{\def\Element% +{0:946}}database\endNode{}, or nil to + indicate no default database.\endNode{}\endNode{}\Node% +{\def\Element% +{0:947}}\Node% +{\def\Element% +{0:948}}Initial Value\endNode{}\Node% +{\def\Element% +{0:949}}\Node% +{\def\Element% +{0:950}}nil\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:951}}\Node% +{\def\Element% +{0:952}}Description\endNode{}\Node% +{\def\Element% +{0:953}}Any function or macro in + \Node% +{\def\Element% +{0:954}}\Node% +{\def\Element% +{0:955}}CLSQL\endNode{}\endNode{} that operates on a + database uses the value of this variable as the default + value for it's \Node% +{\def\Element% +{0:956}}database\endNode{} + parameter.\endNode{}\Node% +{\def\Element% +{0:957}}The value of this parameter is changed by calls to + \Node% +{\def\Element% +{0:958}}connect\endNode{}, which sets + \Node% +{\def\Element% +{0:959}}*default-\/database*\endNode{} to the database object + it returns. It is also changed by calls to + \Node% +{\def\Element% +{0:960}}disconnect\endNode{}, when the database object + being disconnected is the same as the value of + \Node% +{\def\Element% +{0:961}}*default-\/database*\endNode{}. In this case + \Node% +{\def\Element% +{0:962}}disconnect\endNode{} sets + \Node% +{\def\Element% +{0:963}}*default-\/database*\endNode{} to the first database + that remains in the list of active databases as returned by + \Node% +{\def\Element% +{0:964}}connected-\/databases\endNode{}, or + \Node% +{\def\Element% +{0:965}}nil\endNode{} if no further active databases + exist.\endNode{}\Node% +{\def\Element% +{0:966}}The user may change \Node% +{\def\Element% +{0:967}}*default-\/database*\endNode{} + at any time to a valid value of his choice.\endNode{}\Node% +{\def\Element% +{0:968}}\Node% +{\def\Element% +{0:969}}If the value of \Node% +{\def\Element% +{0:970}}*default-\/database*\endNode{} is + \Node% +{\def\Element% +{0:971}}nil\endNode{}, then all calls to + \Node% +{\def\Element% +{0:972}}\Node% +{\def\Element% +{0:973}}CLSQL\endNode{}\endNode{} functions on databases + must provide a suitable \Node% +{\def\Element% +{0:974}}database\endNode{} + parameter, or an error will be signalled.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:975}}\Node% +{\def\Element% +{0:976}}Examples\endNode{}\Node% +{\def\Element% +{0:977}}(connected-\/databases) +=>\/ NIL +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48385F55\}>\/ +(connect '(nil "template1" "dent" nil) :database-\/type :postgresql) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{483868FD\}>\/ +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql :if-\/exists :new) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48387265\}>\/ +*default-\/database* +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48387265\}>\/ +(disconnect) +=>\/ T +*default-\/database* +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{483868FD\}>\/ +(disconnect) +=>\/ T +*default-\/database* +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48385F55\}>\/ +(disconnect) +=>\/ T +*default-\/database* +=>\/ NIL +(connected-\/databases) +=>\/ NIL + \endNode{}\endNode{}\Node% +{\def\Element% +{0:978}}\Node% +{\def\Element% +{0:979}}Affected By\endNode{}\Node% +{\def\Element% +{0:980}} \Node% +{\def\Element% +{0:981}}\Node% +{\def\Element% +{0:982}}\Node% +{\def\Element% +{0:983}}\Node% +{\def\Element% +{0:984}}connect\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:985}}\Node% +{\def\Element% +{0:986}}\Node% +{\def\Element% +{0:987}}disconnect\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:988}}\Node% +{\def\Element% +{0:989}}See Also\endNode{}\Node% +{\def\Element% +{0:990}} \Node% +{\def\Element% +{0:991}}\Node% +{\def\Element% +{0:992}}\Node% +{\def\Element% +{0:993}}\Node% +{\def\Element% +{0:994}}connected-\/databases\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:995}}\Node% +{\def\Element% +{0:996}}Notes\endNode{}\Node% +{\def\Element% +{0:997}}\Node% +{\def\Element% +{0:998}}This variable is intended to facilitate working with + \Node% +{\def\Element% +{0:999}}\Node% +{\def\Element% +{0:1000}}CLSQL\endNode{}\endNode{} in an interactive + fashion at the top-\/level loop, and because of this, + \Node% +{\def\Element% +{0:1001}}connect\endNode{} and + \Node% +{\def\Element% +{0:1002}}disconnect\endNode{} provide some fairly + complex behaviour to keep + \Node% +{\def\Element% +{0:1003}}*default-\/database*\endNode{} set to useful values. + Programmatic use of \Node% +{\def\Element% +{0:1004}}\Node% +{\def\Element% +{0:1005}}CLSQL\endNode{}\endNode{} + should never depend on the value of + \Node% +{\def\Element% +{0:1006}}*default-\/database*\endNode{} and should provide + correct database objects via the + \Node% +{\def\Element% +{0:1007}}database\endNode{} parameter to functions + called.\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DATABASE}}\Node% +{\def\Element% +{0:1009}}\Node% +{\def\Element% +{0:1010}}DATABASE\endNode{}\Node% +{\def\Element% +{0:1011}}The super-\/type of all + \Node% +{\def\Element% +{0:1012}}\Node% +{\def\Element% +{0:1013}}CLSQL\endNode{}\endNode{} databases\endNode{}\Node% +{\def\Element% +{0:1014}}Class\endNode{}\endNode{}\Node% +{\def\Element% +{0:1015}}\Node% +{\def\Element% +{0:1016}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:1017}} \Node% +{\def\Element% +{0:1018}}\Node% +{\def\Element% +{0:1019}}\Node% +{\def\Element% +{0:1020}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1021}}\Node% +{\def\Element% +{0:1022}}standard-\/object\endNode{}\endNode{}\Node% +{\def\Element% +{0:1023}}\Node% +{\def\Element% +{0:1024}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1025}}\Node% +{\def\Element% +{0:1026}}Description\endNode{}\Node% +{\def\Element% +{0:1027}}This class is the superclass of all + \Node% +{\def\Element% +{0:1028}}\Node% +{\def\Element% +{0:1029}}CLSQL\endNode{}\endNode{} databases. The different + database back-\/ends derive subclasses of this class to + implement their databases. No instances of this class are + ever created by \Node% +{\def\Element% +{0:1030}}\Node% +{\def\Element% +{0:1031}}CLSQL\endNode{}\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:CLOSED-DATABASE}}\Node% +{\def\Element% +{0:1033}}\Node% +{\def\Element% +{0:1034}}CLOSED-\/DATABASE\endNode{}\Node% +{\def\Element% +{0:1035}}The class representing all closed + \Node% +{\def\Element% +{0:1036}}\Node% +{\def\Element% +{0:1037}}CLSQL\endNode{}\endNode{} databases\endNode{}\Node% +{\def\Element% +{0:1038}}Class\endNode{}\endNode{}\Node% +{\def\Element% +{0:1039}}\Node% +{\def\Element% +{0:1040}}Class Precedence List\endNode{}\Node% +{\def\Element% +{0:1041}} \Node% +{\def\Element% +{0:1042}}\Node% +{\def\Element% +{0:1043}}\Node% +{\def\Element% +{0:1044}}closed-\/database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1045}}\Node% +{\def\Element% +{0:1046}}standard-\/object\endNode{}\endNode{}\Node% +{\def\Element% +{0:1047}}\Node% +{\def\Element% +{0:1048}}t\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1049}}\Node% +{\def\Element% +{0:1050}}Description\endNode{}\Node% +{\def\Element% +{0:1051}}\Node% +{\def\Element% +{0:1052}}\Node% +{\def\Element% +{0:1053}}CLSQL\endNode{}\endNode{} \Node% +{\def\Element% +{0:1054}}database\endNode{} + instances are changed to this class via + \Node% +{\def\Element% +{0:1055}}change-\/class\endNode{} after they are closed via + \Node% +{\def\Element% +{0:1056}}disconnect\endNode{}. All functions and generic + functions that take database objects as arguments will + signal errors of type + \Node% +{\def\Element% +{0:1057}}maisql-\/closed-\/error\endNode{} when they are + called on instances of \Node% +{\def\Element% +{0:1058}}closed-\/database\endNode{}, with + the exception of \Node% +{\def\Element% +{0:1059}}database-\/name\endNode{}, which + will continue to work as for instances of + \Node% +{\def\Element% +{0:1060}}database\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DATABASE-NAME}}\Node% +{\def\Element% +{0:1062}}\Node% +{\def\Element% +{0:1063}}DATABASE-\/NAME\endNode{}\Node% +{\def\Element% +{0:1064}}Get the name of a database object\endNode{}\Node% +{\def\Element% +{0:1065}}Generic Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1066}}\Node% +{\def\Element% +{0:1067}}Syntax\endNode{}\Node% +{\def\Element% +{0:1068}}\Node% +{\def\Element% +{0:1069}}database-\/name\endNode{} \Node% +{\def\Element% +{0:1070}}database\endNode{} =>\/ \Node% +{\def\Element% +{0:1071}}name\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1072}}\Node% +{\def\Element% +{0:1073}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1074}}\Node% +{\def\Element% +{0:1075}}\Node% +{\def\Element% +{0:1076}}\Node% +{\def\Element% +{0:1077}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1078}}\Node% +{\def\Element% +{0:1079}}A database object, either of type + \Node% +{\def\Element% +{0:1080}}database\endNode{} or of type + \Node% +{\def\Element% +{0:1081}}closed-\/database\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1082}}\Node% +{\def\Element% +{0:1083}}\Node% +{\def\Element% +{0:1084}}name\endNode{}\endNode{}\Node% +{\def\Element% +{0:1085}}\Node% +{\def\Element% +{0:1086}}A string describing the identity of the database + to which this database object is connected to.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1087}}\Node% +{\def\Element% +{0:1088}}Description\endNode{}\Node% +{\def\Element% +{0:1089}}This function returns the database name of the given + database. The database name is a string which somehow + describes the identity of the database to which this + database object is or has been connected. The database name + of a database object is determined at + \Node% +{\def\Element% +{0:1090}}connect\endNode{} time, when a call to + \Node% +{\def\Element% +{0:1091}}database-\/name-\/from-\/spec\endNode{} derives the + database name from the connection specification passed to + \Node% +{\def\Element% +{0:1092}}connect\endNode{} in the + \Node% +{\def\Element% +{0:1093}}connection-\/spec\endNode{} parameter.\endNode{}\Node% +{\def\Element% +{0:1094}}The database name is used via + \Node% +{\def\Element% +{0:1095}}find-\/database\endNode{} in + \Node% +{\def\Element% +{0:1096}}connect\endNode{} to determine whether database + connections to the specified database exist already.\endNode{}\Node% +{\def\Element% +{0:1097}}Usually the database name string will include + indications of the host, database name, user, or port that + where used during the connection attempt. The only + important thing is that this string shall try to identify + the database at the other end of the connection. Connection + specifications parts like passwords and credentials shall + not be used as part of the database name.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1098}}\Node% +{\def\Element% +{0:1099}}Examples\endNode{}\Node% +{\def\Element% +{0:1100}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql) +=>\/ "dent/newesim/dent" +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48391DCD\}>\/ +(database-\/name *default-\/database*) +=>\/ "dent/newesim/dent" + +(database-\/name-\/from-\/spec '(nil "template1" "dent" nil) :postgresql) +=>\/ "/template1/dent" +(connect '(nil "template1" "dent" nil) :database-\/type :postgresql) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ +(database-\/name *default-\/database*) +=>\/ "/template1/dent" + +(database-\/name-\/from-\/spec '("www.pmsf.de" "template1" "dent" nil) :postgresql) +=>\/ "www.pmsf.de/template1/dent" + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1101}}\Node% +{\def\Element% +{0:1102}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1103}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1104}}\Node% +{\def\Element% +{0:1105}}Affected By\endNode{}\Node% +{\def\Element% +{0:1106}} \Node% +{\def\Element% +{0:1107}}\Node% +{\def\Element% +{0:1108}}\Node% +{\def\Element% +{0:1109}}\Node% +{\def\Element% +{0:1110}}database-\/name-\/from-\/spec\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1111}}\Node% +{\def\Element% +{0:1112}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1113}}Will signal an error if the object passed as the + \Node% +{\def\Element% +{0:1114}}database\endNode{} parameter is neither of type + \Node% +{\def\Element% +{0:1115}}database\endNode{} nor of type + \Node% +{\def\Element% +{0:1116}}closed-\/database\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1117}}\Node% +{\def\Element% +{0:1118}}See Also\endNode{}\Node% +{\def\Element% +{0:1119}} \Node% +{\def\Element% +{0:1120}}\Node% +{\def\Element% +{0:1121}}\Node% +{\def\Element% +{0:1122}}\Node% +{\def\Element% +{0:1123}}connect\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1124}}\Node% +{\def\Element% +{0:1125}}\Node% +{\def\Element% +{0:1126}}find-\/database\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1127}}\Node% +{\def\Element% +{0:1128}}Notes\endNode{}\Node% +{\def\Element% +{0:1129}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:FIND-DATABASE}}\Node% +{\def\Element% +{0:1131}}\Node% +{\def\Element% +{0:1132}}FIND-\/DATABASE\endNode{}\Node% +{\def\Element% +{0:1133}}Locate a database object through it's + name.\endNode{}\Node% +{\def\Element% +{0:1134}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1135}}\Node% +{\def\Element% +{0:1136}}Syntax\endNode{}\Node% +{\def\Element% +{0:1137}}\Node% +{\def\Element% +{0:1138}}find-\/database\endNode{} \Node% +{\def\Element% +{0:1139}}database\endNode{} \Entity{amp}optional \Node% +{\def\Element% +{0:1140}}errorp\endNode{} =>\/ \Node% +{\def\Element% +{0:1141}}result\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1142}}\Node% +{\def\Element% +{0:1143}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1144}}\Node% +{\def\Element% +{0:1145}}\Node% +{\def\Element% +{0:1146}}\Node% +{\def\Element% +{0:1147}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1148}}\Node% +{\def\Element% +{0:1149}}A database object or a string, denoting a database + name.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1150}}\Node% +{\def\Element% +{0:1151}}\Node% +{\def\Element% +{0:1152}}errorp\endNode{}\endNode{}\Node% +{\def\Element% +{0:1153}}\Node% +{\def\Element% +{0:1154}}A generalized boolean. Defaults to + \Node% +{\def\Element% +{0:1155}}t\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1156}}\Node% +{\def\Element% +{0:1157}}\Node% +{\def\Element% +{0:1158}}result\endNode{}\endNode{}\Node% +{\def\Element% +{0:1159}}\Node% +{\def\Element% +{0:1160}}Either a database object, or, if + \Node% +{\def\Element% +{0:1161}}errorp\endNode{} is \Node% +{\def\Element% +{0:1162}}nil\endNode{}, + possibly \Node% +{\def\Element% +{0:1163}}nil\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1164}}\Node% +{\def\Element% +{0:1165}}Description\endNode{}\Node% +{\def\Element% +{0:1166}}\Node% +{\def\Element% +{0:1167}}find-\/database\endNode{} locates an active + database object given the specification in + \Node% +{\def\Element% +{0:1168}}database\endNode{}. If + \Node% +{\def\Element% +{0:1169}}database\endNode{} is an object of type + \Node% +{\def\Element% +{0:1170}}database\endNode{}, \Node% +{\def\Element% +{0:1171}}find-\/database\endNode{} + returns this. Otherwise it will search the active databases + as indicated by the list returned by + \Node% +{\def\Element% +{0:1172}}connected-\/databases\endNode{} for a database + whose name (as returned by + \Node% +{\def\Element% +{0:1173}}database-\/name\endNode{} is equal as per + \Node% +{\def\Element% +{0:1174}}string=\endNode{} to the string passed as + \Node% +{\def\Element% +{0:1175}}database\endNode{}. If it succeeds, it returns + the first database found.\endNode{}\Node% +{\def\Element% +{0:1176}}If it fails to find a matching database, it will signal + an error of type \Node% +{\def\Element% +{0:1177}}maisql-\/error\endNode{} if + \Node% +{\def\Element% +{0:1178}}errorp\endNode{} is true. If + \Node% +{\def\Element% +{0:1179}}errorp\endNode{} is \Node% +{\def\Element% +{0:1180}}nil\endNode{}, it + will return \Node% +{\def\Element% +{0:1181}}nil\endNode{} instead.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1182}}\Node% +{\def\Element% +{0:1183}}Examples\endNode{}\Node% +{\def\Element% +{0:1184}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql) +=>\/ "dent/newesim/dent" +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48391DCD\}>\/ +(database-\/name *default-\/database*) +=>\/ "dent/newesim/dent" + +(database-\/name-\/from-\/spec '(nil "template1" "dent" nil) :postgresql) +=>\/ "/template1/dent" +(connect '(nil "template1" "dent" nil) :database-\/type :postgresql) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ +(database-\/name *default-\/database*) +=>\/ "/template1/dent" + +(database-\/name-\/from-\/spec '("www.pmsf.de" "template1" "dent" nil) :postgresql) +=>\/ "www.pmsf.de/template1/dent" + +(find-\/database "dent/newesim/dent") +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{484E91C5\}>\/ +(find-\/database "/template1/dent") +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ +(find-\/database "www.pmsf.de/template1/dent" nil) +=>\/ NIL +(find-\/database **) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1185}}\Node% +{\def\Element% +{0:1186}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1187}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1188}}\Node% +{\def\Element% +{0:1189}}Affected By\endNode{}\Node% +{\def\Element% +{0:1190}} \Node% +{\def\Element% +{0:1191}}\Node% +{\def\Element% +{0:1192}}\Node% +{\def\Element% +{0:1193}}\Node% +{\def\Element% +{0:1194}}connected-\/databases\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1195}}\Node% +{\def\Element% +{0:1196}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1197}}Will signal an error of type + \Node% +{\def\Element% +{0:1198}}maisql-\/error\endNode{} if no matching database + can be found, and \Node% +{\def\Element% +{0:1199}}errorp\endNode{} is true. + Will signal an error if the value of + \Node% +{\def\Element% +{0:1200}}database\endNode{} is neither an object of type + \Node% +{\def\Element% +{0:1201}}database\endNode{} nor a string.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1202}}\Node% +{\def\Element% +{0:1203}}See Also\endNode{}\Node% +{\def\Element% +{0:1204}} \Node% +{\def\Element% +{0:1205}}\Node% +{\def\Element% +{0:1206}}\Node% +{\def\Element% +{0:1207}}\Node% +{\def\Element% +{0:1208}}database-\/name\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1209}}\Node% +{\def\Element% +{0:1210}}\Node% +{\def\Element% +{0:1211}}database-\/name-\/from-\/spec\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1212}}\Node% +{\def\Element% +{0:1213}}Notes\endNode{}\Node% +{\def\Element% +{0:1214}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:CONNECT}}\Node% +{\def\Element% +{0:1216}}\Node% +{\def\Element% +{0:1217}}CONNECT\endNode{}\Node% +{\def\Element% +{0:1218}}create a connection to a database\endNode{}\Node% +{\def\Element% +{0:1219}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1220}}\Node% +{\def\Element% +{0:1221}}Syntax\endNode{}\Node% +{\def\Element% +{0:1222}}\Node% +{\def\Element% +{0:1223}}connect\endNode{} \Node% +{\def\Element% +{0:1224}}connection-\/spec\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:1225}}if-\/exists\endNode{} \Node% +{\def\Element% +{0:1226}}database-\/type\endNode{} =>\/ \Node% +{\def\Element% +{0:1227}}database\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1228}}\Node% +{\def\Element% +{0:1229}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1230}}\Node% +{\def\Element% +{0:1231}}\Node% +{\def\Element% +{0:1232}}\Node% +{\def\Element% +{0:1233}}connection-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:1234}}\Node% +{\def\Element% +{0:1235}}A connection specification\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1236}}\Node% +{\def\Element% +{0:1237}}\Node% +{\def\Element% +{0:1238}}if-\/exists\endNode{}\endNode{}\Node% +{\def\Element% +{0:1239}}\Node% +{\def\Element% +{0:1240}}This indicates the action to take if a connection + to the same database exists already. See below for the + legal values and actions. It defaults to the value of + \Node% +{\def\Element% +{0:1241}}*connect-\/if-\/exists*\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1242}}\Node% +{\def\Element% +{0:1243}}\Node% +{\def\Element% +{0:1244}}database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:1245}}\Node% +{\def\Element% +{0:1246}}A database type specifier, i.e. a keyword. + This defaults to the value of + \Node% +{\def\Element% +{0:1247}}*default-\/database-\/type*\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1248}}\Node% +{\def\Element% +{0:1249}}\Node% +{\def\Element% +{0:1250}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1251}}\Node% +{\def\Element% +{0:1252}}The database object representing the connection.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1253}}\Node% +{\def\Element% +{0:1254}}Description\endNode{}\Node% +{\def\Element% +{0:1255}}This function takes a connection specification and + a database type and creates a connection to the database + specified by those. The type and structure of the + connection specification depend on the database type.\endNode{}\Node% +{\def\Element% +{0:1256}}The parameter \Node% +{\def\Element% +{0:1257}}if-\/exists\endNode{} specifies + what to do if a connection to the database specified exists + already, which is checked by calling + \Node% +{\def\Element% +{0:1258}}find-\/database\endNode{} on the database name + returned by \Node% +{\def\Element% +{0:1259}}database-\/name-\/from-\/spec\endNode{} + when called with the \Node% +{\def\Element% +{0:1260}}connection-\/spec\endNode{} + and \Node% +{\def\Element% +{0:1261}}database-\/type\endNode{} parameters. The + possible values of \Node% +{\def\Element% +{0:1262}}if-\/exists\endNode{} are: + \Node% +{\def\Element% +{0:1263}}\Node% +{\def\Element% +{0:1264}}\Node% +{\def\Element% +{0:1265}}\Node% +{\def\Element% +{0:1266}}:new\endNode{}\endNode{}\Node% +{\def\Element% +{0:1267}}\Node% +{\def\Element% +{0:1268}}Go ahead and create a new connection.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1269}}\Node% +{\def\Element% +{0:1270}}\Node% +{\def\Element% +{0:1271}}:warn-\/new\endNode{}\endNode{}\Node% +{\def\Element% +{0:1272}}\Node% +{\def\Element% +{0:1273}}This is just like \Node% +{\def\Element% +{0:1274}}:new\endNode{}, but + also signals a warning of type + \Node% +{\def\Element% +{0:1275}}maisql-\/exists-\/warning\endNode{}, + indicating the old and newly created + databases.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1276}}\Node% +{\def\Element% +{0:1277}}\Node% +{\def\Element% +{0:1278}}:error\endNode{}\endNode{}\Node% +{\def\Element% +{0:1279}}\Node% +{\def\Element% +{0:1280}}This will cause \Node% +{\def\Element% +{0:1281}}connect\endNode{} to + signal a correctable error of type + \Node% +{\def\Element% +{0:1282}}maisql-\/exists-\/error\endNode{}. The + user may choose to proceed, either by indicating + that a new connection shall be created, via the + restart \Node% +{\def\Element% +{0:1283}}create-\/new\endNode{}, or by + indicating that the existing connection shall be + used, via the restart + \Node% +{\def\Element% +{0:1284}}use-\/old\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1285}}\Node% +{\def\Element% +{0:1286}}\Node% +{\def\Element% +{0:1287}}:old\endNode{}\endNode{}\Node% +{\def\Element% +{0:1288}}\Node% +{\def\Element% +{0:1289}}This will cause \Node% +{\def\Element% +{0:1290}}connect\endNode{} to + use an old connection if one exists.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1291}}\Node% +{\def\Element% +{0:1292}}\Node% +{\def\Element% +{0:1293}}:warn-\/old\endNode{}\endNode{}\Node% +{\def\Element% +{0:1294}}\Node% +{\def\Element% +{0:1295}}This is just like \Node% +{\def\Element% +{0:1296}}:old\endNode{}, but + also signals a warning of type + \Node% +{\def\Element% +{0:1297}}maisql-\/exists-\/warning\endNode{}, + indicating the old database used, via the slots + \Node% +{\def\Element% +{0:1298}}old-\/db\endNode{} and + \Node% +{\def\Element% +{0:1299}}new-\/db\endNode{}\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\Node% +{\def\Element% +{0:1300}}The database name of the returned database object will + be the same under \Node% +{\def\Element% +{0:1301}}string=\endNode{} as that which + would be returned by a call to + \Node% +{\def\Element% +{0:1302}}database-\/name-\/from-\/spec\endNode{} with the given + \Node% +{\def\Element% +{0:1303}}connection-\/spec\endNode{} and + \Node% +{\def\Element% +{0:1304}}database-\/type\endNode{} parameters.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1305}}\Node% +{\def\Element% +{0:1306}}Examples\endNode{}\Node% +{\def\Element% +{0:1307}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql) +=>\/ "dent/newesim/dent" +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48036F6D\}>\/ +(database-\/name *) +=>\/ "dent/newesim/dent" + +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +>\/>\/ In call to CONNECT: +>\/>\/ There is an existing connection \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48036F6D\}>\/ to database dent/newesim/dent. +>\/>\/ +>\/>\/ Restarts: +>\/>\/ 0: [CREATE-\/NEW] Create a new connection. +>\/>\/ 1: [USE-\/OLD ] Use the existing connection. +>\/>\/ 2: [ABORT ] Return to Top-\/Level. +>\/>\/ +>\/>\/ Debug (type H for help) +>\/>\/ +>\/>\/ (CONNECT ("dent" "newesim" "dent" "dent") :IF-\/EXISTS NIL :DATABASE-\/TYPE ...) +>\/>\/ Source: +>\/>\/ ; File: /prj/CLSQL/sql/sql.cl +>\/>\/ (RESTART-\/CASE (ERROR 'CLSQL-\/EXISTS-\/ERROR :OLD-\/DB OLD-\/DB) +>\/>\/ (CREATE-\/NEW NIL :REPORT "Create a new connection." +>\/>\/ (SETQ RESULT \#)) +>\/>\/ (USE-\/OLD NIL :REPORT "Use the existing connection." +>\/>\/ (SETQ RESULT OLD-\/DB))) +>\/>\/ 0] 0 +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{480451F5\}>\/ + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1308}}\Node% +{\def\Element% +{0:1309}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1310}}A database connection is established, and the resultant + database object is registered, so as to appear in the list + returned by \Node% +{\def\Element% +{0:1311}}connected-\/databases\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1312}}\Node% +{\def\Element% +{0:1313}}Affected by\endNode{}\Node% +{\def\Element% +{0:1314}} \Node% +{\def\Element% +{0:1315}}\Node% +{\def\Element% +{0:1316}}\Node% +{\def\Element% +{0:1317}}*default-\/database-\/type*\endNode{}\endNode{}\Node% +{\def\Element% +{0:1318}}\Node% +{\def\Element% +{0:1319}}*connect-\/if-\/exists*\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1320}}\Node% +{\def\Element% +{0:1321}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1322}}If the connection specification is not syntactically or + semantically correct for the given database type, an error + of type \Node% +{\def\Element% +{0:1323}}maisql-\/invalid-\/spec-\/error\endNode{} is + signalled. If during the connection attempt an error is + detected (e.g. because of permission problems, network + trouble or any other cause), an error of type + \Node% +{\def\Element% +{0:1324}}maisql-\/connect-\/error\endNode{} is + signalled.\endNode{}\Node% +{\def\Element% +{0:1325}}If a connection to the database specified by + \Node% +{\def\Element% +{0:1326}}connection-\/spec\endNode{} exists already, + conditions are signalled according to the + \Node% +{\def\Element% +{0:1327}}if-\/exists\endNode{} parameter, as described + above.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1328}}\Node% +{\def\Element% +{0:1329}}See Also\endNode{}\Node% +{\def\Element% +{0:1330}} \Node% +{\def\Element% +{0:1331}}\Node% +{\def\Element% +{0:1332}}\Node% +{\def\Element% +{0:1333}}connected-\/databases\endNode{}\endNode{}\Node% +{\def\Element% +{0:1334}}\Node% +{\def\Element% +{0:1335}}\Node% +{\def\Element% +{0:1336}}disconnect\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1337}}\Node% +{\def\Element% +{0:1338}}Notes\endNode{}\Node% +{\def\Element% +{0:1339}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DISCONNECT}}\Node% +{\def\Element% +{0:1341}}\Node% +{\def\Element% +{0:1342}}DISCONNECT\endNode{}\Node% +{\def\Element% +{0:1343}}close a database connection\endNode{}\Node% +{\def\Element% +{0:1344}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1345}}\Node% +{\def\Element% +{0:1346}}Syntax\endNode{}\Node% +{\def\Element% +{0:1347}}\Node% +{\def\Element% +{0:1348}}disconnect\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:1349}}database\endNode{} =>\/ \Node% +{\def\Element% +{0:1350}}t\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1351}}\Node% +{\def\Element% +{0:1352}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1353}}\Node% +{\def\Element% +{0:1354}}\Node% +{\def\Element% +{0:1355}}\Node% +{\def\Element% +{0:1356}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1357}}\Node% +{\def\Element% +{0:1358}}The database to disconnect, which defaults to the + database indicated by + \Node% +{\def\Element% +{0:1359}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1360}}\Node% +{\def\Element% +{0:1361}}Description\endNode{}\Node% +{\def\Element% +{0:1362}}This function takes a \Node% +{\def\Element% +{0:1363}}database\endNode{} object as + returned by \Node% +{\def\Element% +{0:1364}}connect\endNode{}, and closes the + connection. The class of the object passed is changed to + \Node% +{\def\Element% +{0:1365}}closed-\/database\endNode{} after the disconnection + succeeds, thereby preventing further use of the object as + an argument to \Node% +{\def\Element% +{0:1366}}\Node% +{\def\Element% +{0:1367}}CLSQL\endNode{}\endNode{} functions, + with the exception of \Node% +{\def\Element% +{0:1368}}database-\/name\endNode{}. + If the user does pass a closed database object to any other + \Node% +{\def\Element% +{0:1369}}\Node% +{\def\Element% +{0:1370}}CLSQL\endNode{}\endNode{} function, an error of type + \Node% +{\def\Element% +{0:1371}}maisql-\/closed-\/error\endNode{} is + signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1372}}\Node% +{\def\Element% +{0:1373}}Examples\endNode{}\Node% +{\def\Element% +{0:1374}}(disconnect :database (find-\/database "dent/newesim/dent")) +=>\/ T + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1375}}\Node% +{\def\Element% +{0:1376}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1377}}The database connection is closed, and the database + object is removed from the list of connected databases as + returned by \Node% +{\def\Element% +{0:1378}}connected-\/databases\endNode{}.\endNode{}\Node% +{\def\Element% +{0:1379}}The class of the database object is changed to + \Node% +{\def\Element% +{0:1380}}closed-\/database\endNode{}.\endNode{}\Node% +{\def\Element% +{0:1381}}If the database object passed is the same under + \Node% +{\def\Element% +{0:1382}}eq\endNode{} as the value of + \Node% +{\def\Element% +{0:1383}}*default-\/database*\endNode{}, then + \Node% +{\def\Element% +{0:1384}}*default-\/database*\endNode{} is set to the first + remaining database from + \Node% +{\def\Element% +{0:1385}}connected-\/databases\endNode{} or to nil if no + further active database exists.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1386}}\Node% +{\def\Element% +{0:1387}}Affected by\endNode{}\Node% +{\def\Element% +{0:1388}} \Node% +{\def\Element% +{0:1389}}\Node% +{\def\Element% +{0:1390}}\Node% +{\def\Element% +{0:1391}}*default-\/database*\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1392}}\Node% +{\def\Element% +{0:1393}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1394}}If during the disconnection attempt an error is + detected (e.g. because of network trouble or any other + cause), an error of type \Node% +{\def\Element% +{0:1395}}maisql-\/error\endNode{} + might be signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1396}}\Node% +{\def\Element% +{0:1397}}See Also\endNode{}\Node% +{\def\Element% +{0:1398}} \Node% +{\def\Element% +{0:1399}}\Node% +{\def\Element% +{0:1400}}\Node% +{\def\Element% +{0:1401}}\Node% +{\def\Element% +{0:1402}}connect\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1403}}\Node% +{\def\Element% +{0:1404}}\Node% +{\def\Element% +{0:1405}}closed-\/database\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1406}}\Node% +{\def\Element% +{0:1407}}Notes\endNode{}\Node% +{\def\Element% +{0:1408}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DATABASE-NAME-FROM-SPEC}}\Node% +{\def\Element% +{0:1410}}\Node% +{\def\Element% +{0:1411}}DATABASE-\/NAME-\/FROM-\/SPEC\endNode{}\Node% +{\def\Element% +{0:1412}}Return the database name string corresponding to + the given connection specification.\endNode{}\Node% +{\def\Element% +{0:1413}}Generic Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1414}}\Node% +{\def\Element% +{0:1415}}Syntax\endNode{}\Node% +{\def\Element% +{0:1416}} \Node% +{\def\Element% +{0:1417}}database-\/name-\/from-\/spec\endNode{} \Node% +{\def\Element% +{0:1418}}connection-\/spec\endNode{} \Node% +{\def\Element% +{0:1419}}database-\/type\endNode{} =>\/ \Node% +{\def\Element% +{0:1420}}name\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1421}}\Node% +{\def\Element% +{0:1422}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1423}}\Node% +{\def\Element% +{0:1424}}\Node% +{\def\Element% +{0:1425}}\Node% +{\def\Element% +{0:1426}}connection-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:1427}}\Node% +{\def\Element% +{0:1428}}A connection specification, whose structure and + interpretation are dependent on the + \Node% +{\def\Element% +{0:1429}}database-\/type\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1430}}\Node% +{\def\Element% +{0:1431}}\Node% +{\def\Element% +{0:1432}}database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:1433}}\Node% +{\def\Element% +{0:1434}}A database type specifier, i.e. a keyword.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1435}}\Node% +{\def\Element% +{0:1436}}\Node% +{\def\Element% +{0:1437}}name\endNode{}\endNode{}\Node% +{\def\Element% +{0:1438}}\Node% +{\def\Element% +{0:1439}}A string denoting a database name.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1440}}\Node% +{\def\Element% +{0:1441}}Description\endNode{}\Node% +{\def\Element% +{0:1442}}This generic function takes a connection specification + and a database type and returns the database name of the + database object that would be created had + \Node% +{\def\Element% +{0:1443}}connect\endNode{} been called with the given + connection specification and database types.\endNode{}\Node% +{\def\Element% +{0:1444}}This function is useful in determining a database name + from the connection specification, since the way the + connection specification is converted into a database name + is dependent on the database type.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1445}}\Node% +{\def\Element% +{0:1446}}Examples\endNode{}\Node% +{\def\Element% +{0:1447}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql) +=>\/ "dent/newesim/dent" +(connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql) +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48391DCD\}>\/ +(database-\/name *default-\/database*) +=>\/ "dent/newesim/dent" + +(database-\/name-\/from-\/spec '(nil "template1" "dent" nil) :postgresql) +=>\/ "/template1/dent" +(connect '(nil "template1" "dent" nil) :database-\/type :postgresql) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ +(database-\/name *default-\/database*) +=>\/ "/template1/dent" + +(database-\/name-\/from-\/spec '("www.pmsf.de" "template1" "dent" nil) :postgresql) +=>\/ "www.pmsf.de/template1/dent" + +(find-\/database "dent/newesim/dent") +=>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{484E91C5\}>\/ +(find-\/database "/template1/dent") +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ +(find-\/database "www.pmsf.de/template1/dent" nil) +=>\/ NIL +(find-\/database **) +=>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/ + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1448}}\Node% +{\def\Element% +{0:1449}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1450}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1451}}\Node% +{\def\Element% +{0:1452}}Affected by\endNode{}\Node% +{\def\Element% +{0:1453}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1454}}\Node% +{\def\Element% +{0:1455}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1456}}If the value of \Node% +{\def\Element% +{0:1457}}connection-\/spec\endNode{} + is not a valid connection specification for the given + database type, an error of type + \Node% +{\def\Element% +{0:1458}}maisql-\/invalid-\/spec-\/error\endNode{} might be + signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1459}}\Node% +{\def\Element% +{0:1460}}See Also\endNode{}\Node% +{\def\Element% +{0:1461}} \Node% +{\def\Element% +{0:1462}}\Node% +{\def\Element% +{0:1463}}\Node% +{\def\Element% +{0:1464}}\Node% +{\def\Element% +{0:1465}}connect\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1466}}\Node% +{\def\Element% +{0:1467}}Notes\endNode{}\Node% +{\def\Element% +{0:1468}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:EXECUTE-COMMAND}}\Node% +{\def\Element% +{0:1470}}\Node% +{\def\Element% +{0:1471}}EXECUTE-\/COMMAND\endNode{}\Node% +{\def\Element% +{0:1472}}Execute an SQL command which returns no + values.\endNode{}\Node% +{\def\Element% +{0:1473}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1474}}\Node% +{\def\Element% +{0:1475}}Syntax\endNode{}\Node% +{\def\Element% +{0:1476}}\Node% +{\def\Element% +{0:1477}}execute-\/command\endNode{} \Node% +{\def\Element% +{0:1478}}sql-\/expression\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:1479}}database\endNode{} =>\/ \Node% +{\def\Element% +{0:1480}}t\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1481}}\Node% +{\def\Element% +{0:1482}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1483}}\Node% +{\def\Element% +{0:1484}}\Node% +{\def\Element% +{0:1485}}\Node% +{\def\Element% +{0:1486}}sql-\/expression\endNode{}\endNode{}\Node% +{\def\Element% +{0:1487}}\Node% +{\def\Element% +{0:1488}}An \Node% +{\def\Element% +{0:1489}}sql + expression\endNode{} that represents an SQL + statement which will return no values.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1490}}\Node% +{\def\Element% +{0:1491}}\Node% +{\def\Element% +{0:1492}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1493}}\Node% +{\def\Element% +{0:1494}}A + \Node% +{\def\Element% +{0:1495}}database + object\endNode{}. This will default to the value + of \Node% +{\def\Element% +{0:1496}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1497}}\Node% +{\def\Element% +{0:1498}}Description\endNode{}\Node% +{\def\Element% +{0:1499}}This will execute the command given by + \Node% +{\def\Element% +{0:1500}}sql-\/expression\endNode{} in the + \Node% +{\def\Element% +{0:1501}}database\endNode{} specified. If the execution + succeeds it will return \Node% +{\def\Element% +{0:1502}}t\endNode{}, otherwise an + error of type \Node% +{\def\Element% +{0:1503}}maisql-\/sql-\/error\endNode{} will + be signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1504}}\Node% +{\def\Element% +{0:1505}}Examples\endNode{}\Node% +{\def\Element% +{0:1506}}(execute-\/command "create table eventlog (time char(30),event char(70))") +=>\/ T + +(execute-\/command "create table eventlog (time char(30),event char(70))") +>\/>\/ +>\/>\/ While accessing database \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{480B2B6D\}>\/ +>\/>\/ with expression "create table eventlog (time char(30),event char(70))": +>\/>\/ Error NIL: ERROR: amcreate: eventlog relation already exists +>\/>\/ has occurred. +>\/>\/ +>\/>\/ Restarts: +>\/>\/ 0: [ABORT] Return to Top-\/Level. +>\/>\/ +>\/>\/ Debug (type H for help) +>\/>\/ +>\/>\/ (CLSQL-\/POSTGRESQL::|(PCL::FAST-\/METHOD DATABASE-\/EXECUTE-\/COMMAND (T POSTGRESQL-\/DATABASE))| +>\/>\/ \#\Entity{lt}unused-\/arg>\/ +>\/>\/ \#\Entity{lt}unused-\/arg>\/ +>\/>\/ \#\Entity{lt}unavailable-\/arg>\/ +>\/>\/ \#\Entity{lt}unavailable-\/arg>\/) +>\/>\/ Source: (ERROR 'CLSQL-\/SQL-\/ERROR :DATABASE DATABASE :EXPRESSION ...) +>\/>\/ 0] 0 + +(execute-\/command "drop table eventlog") +=>\/ T + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1507}}\Node% +{\def\Element% +{0:1508}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1509}}Whatever effects the execution of the SQL statement has + on the underlying database, if any.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1510}}\Node% +{\def\Element% +{0:1511}}Affected by\endNode{}\Node% +{\def\Element% +{0:1512}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1513}}\Node% +{\def\Element% +{0:1514}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1515}}If the execution of the SQL statement leads to any + errors, an error of type + \Node% +{\def\Element% +{0:1516}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1517}}\Node% +{\def\Element% +{0:1518}}See Also\endNode{}\Node% +{\def\Element% +{0:1519}} \Node% +{\def\Element% +{0:1520}}\Node% +{\def\Element% +{0:1521}}\Node% +{\def\Element% +{0:1522}}\Node% +{\def\Element% +{0:1523}}query\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1524}}\Node% +{\def\Element% +{0:1525}}Notes\endNode{}\Node% +{\def\Element% +{0:1526}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:QUERY}}\Node% +{\def\Element% +{0:1528}}\Node% +{\def\Element% +{0:1529}}QUERY\endNode{}\Node% +{\def\Element% +{0:1530}}Execute an SQL query and return the tuples as a + list\endNode{}\Node% +{\def\Element% +{0:1531}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1532}}\Node% +{\def\Element% +{0:1533}}Syntax\endNode{}\Node% +{\def\Element% +{0:1534}}\Node% +{\def\Element% +{0:1535}}query\endNode{} \Node% +{\def\Element% +{0:1536}}query-\/expression\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:1537}}database\endNode{} \Node% +{\def\Element% +{0:1538}}types\endNode{} =>\/ \Node% +{\def\Element% +{0:1539}}result\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1540}}\Node% +{\def\Element% +{0:1541}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1542}}\Node% +{\def\Element% +{0:1543}}\Node% +{\def\Element% +{0:1544}}\Node% +{\def\Element% +{0:1545}}query-\/expression\endNode{}\endNode{}\Node% +{\def\Element% +{0:1546}}\Node% +{\def\Element% +{0:1547}}An \Node% +{\def\Element% +{0:1548}}sql + expression\endNode{} that represents an SQL + query which is expected to return a (possibly empty) + result set.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1549}}\Node% +{\def\Element% +{0:1550}}\Node% +{\def\Element% +{0:1551}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1552}}\Node% +{\def\Element% +{0:1553}}A + \Node% +{\def\Element% +{0:1554}}database + object\endNode{}. This will default to the value + of \Node% +{\def\Element% +{0:1555}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1556}}\Node% +{\def\Element% +{0:1557}}\Node% +{\def\Element% +{0:1558}}types\endNode{}\endNode{}\Node% +{\def\Element% +{0:1559}}\Node% +{\def\Element% +{0:1560}}A + \Node% +{\def\Element% +{0:1561}}field type + specififier\endNode{}. The default is \Node% +{\def\Element% +{0:1562}}NIL\endNode{}. + \endNode{}\Node% +{\def\Element% +{0:1563}} The purpose of this argument is cause \Node% +{\def\Element% +{0:1564}}\Node% +{\def\Element% +{0:1565}}CLSQL\endNode{}\endNode{} to + import SQL numeric fields into numeric Lisp objects + rather than strings. This reduces the cost of + allocating a temporary string and the \Node% +{\def\Element% +{0:1566}}\Node% +{\def\Element% +{0:1567}}CLSQL\endNode{}\endNode{} users' + inconvenience of converting number strings into number + objects. + \endNode{}\Node% +{\def\Element% +{0:1568}} A value of \Node% +{\def\Element% +{0:1569}}:auto\endNode{} causes \Node% +{\def\Element% +{0:1570}}\Node% +{\def\Element% +{0:1571}}CLSQL\endNode{}\endNode{} + to automatically convert SQL fields into a + numeric format where applicable. The default value of + \Node% +{\def\Element% +{0:1572}}NIL\endNode{} causes all fields to be returned as strings + regardless of the SQL type. Otherwise a list is expected + which has a element for each field that specifies the + conversion. If the list is shorter than the number + of fields, the a value of \Node% +{\def\Element% +{0:1573}}t\endNode{} is + assumed for the field. If the list is longer than + the number of fields, the extra elements are + ignored. + \Node% +{\def\Element% +{0:1574}}\Node% +{\def\Element% +{0:1575}}\Node% +{\def\Element% +{0:1576}}:int\endNode{} Field is imported as a + signed integer, from 8-\/bits to 64-\/bits depending + upon the field type. + \endNode{}\Node% +{\def\Element% +{0:1577}}\Node% +{\def\Element% +{0:1578}}:double\endNode{} Field is imported as a + double-\/float number. + \endNode{}\Node% +{\def\Element% +{0:1579}}\Node% +{\def\Element% +{0:1580}}t\endNode{} Field is imported as a + string. + \endNode{}\endNode{} + \endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1581}}\Node% +{\def\Element% +{0:1582}}\Node% +{\def\Element% +{0:1583}}result\endNode{}\endNode{}\Node% +{\def\Element% +{0:1584}}\Node% +{\def\Element% +{0:1585}}A list representing the result set obtained. For + each tuple in the result set, there is an element in + this list, which is itself a list of all the attribute + values in the tuple.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1586}}\Node% +{\def\Element% +{0:1587}}Description\endNode{}\Node% +{\def\Element% +{0:1588}}This will execute the query given by + \Node% +{\def\Element% +{0:1589}}query-\/expression\endNode{} in the + \Node% +{\def\Element% +{0:1590}}database\endNode{} specified. If the execution + succeeds it will return the result set returned by the + database, otherwise an error of type + \Node% +{\def\Element% +{0:1591}}maisql-\/sql-\/error\endNode{} will + be signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1592}}\Node% +{\def\Element% +{0:1593}}Examples\endNode{}\Node% +{\def\Element% +{0:1594}}(execute-\/command "create table simple (name char(50), salary numeric(10,2))") +=>\/ T +(execute-\/command "insert into simple values ('Mai, Pierre',10000)") +=>\/ T +(execute-\/command "insert into simple values ('Hacker, Random J.',8000.50)") +=>\/ T +(query "select * from simple") +=>\/ (("Mai, Pierre" "10000.00") ("Hacker, Random J." "8000.50")) +(query "select salary from simple") +=>\/ (("10000.00") ("8000.50")) +(query "select salary from simple where salary >\/ 10000") +=>\/ NIL +(query "select salary,name from simple where salary >\/ 10000") +=>\/ NIL +(query "select salary,name from simple where salary >\/ 9000") +=>\/ (("10000.00" "Mai, Pierre")) +(query "select salary,name from simple where salary >\/ 8000") +=>\/ (("10000.00" "Mai, Pierre") ("8000.50" "Hacker, Random J.")) + +;; MySQL-\/specific: +(query "show tables") +=>\/ (("demo") ("log") ("newlog") ("simple") ("spacetrial")) + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1595}}\Node% +{\def\Element% +{0:1596}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1597}}Whatever effects the execution of the SQL query has + on the underlying database, if any.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1598}}\Node% +{\def\Element% +{0:1599}}Affected by\endNode{}\Node% +{\def\Element% +{0:1600}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1601}}\Node% +{\def\Element% +{0:1602}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1603}}If the execution of the SQL query leads to any + errors, an error of type + \Node% +{\def\Element% +{0:1604}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1605}}\Node% +{\def\Element% +{0:1606}}See Also\endNode{}\Node% +{\def\Element% +{0:1607}} \Node% +{\def\Element% +{0:1608}}\Node% +{\def\Element% +{0:1609}}\Node% +{\def\Element% +{0:1610}}\Node% +{\def\Element% +{0:1611}}execute-\/command\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1612}}\Node% +{\def\Element% +{0:1613}}Notes\endNode{}\Node% +{\def\Element% +{0:1614}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:MAP-QUERY}}\Node% +{\def\Element% +{0:1616}}\Node% +{\def\Element% +{0:1617}}MAP-\/QUERY\endNode{}\Node% +{\def\Element% +{0:1618}}Map a function over all the tuples from a + query\endNode{}\Node% +{\def\Element% +{0:1619}}Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1620}}\Node% +{\def\Element% +{0:1621}}Syntax\endNode{}\Node% +{\def\Element% +{0:1622}}\Node% +{\def\Element% +{0:1623}}map-\/query\endNode{} \Node% +{\def\Element% +{0:1624}}output-\/type-\/spec\endNode{} \Node% +{\def\Element% +{0:1625}}function\endNode{} \Node% +{\def\Element% +{0:1626}}query-\/expression\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:1627}}database\endNode{} \Node% +{\def\Element% +{0:1628}}types\endNode{} =>\/ \Node% +{\def\Element% +{0:1629}}result\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1630}}\Node% +{\def\Element% +{0:1631}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1632}}\Node% +{\def\Element% +{0:1633}}\Node% +{\def\Element% +{0:1634}}\Node% +{\def\Element% +{0:1635}}output-\/type-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:1636}}\Node% +{\def\Element% +{0:1637}}A sequence type specifier or \Node% +{\def\Element% +{0:1638}}nil\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1639}}\Node% +{\def\Element% +{0:1640}}\Node% +{\def\Element% +{0:1641}}function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1642}}\Node% +{\def\Element% +{0:1643}}A function designator. + \Node% +{\def\Element% +{0:1644}}function\endNode{} must take as many + arguments as are attributes in the result set returned + by executing the SQL + \Node% +{\def\Element% +{0:1645}}query-\/expression\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1646}}\Node% +{\def\Element% +{0:1647}}\Node% +{\def\Element% +{0:1648}}query-\/expression\endNode{}\endNode{}\Node% +{\def\Element% +{0:1649}}\Node% +{\def\Element% +{0:1650}}An \Node% +{\def\Element% +{0:1651}}sql + expression\endNode{} that represents an SQL + query which is expected to return a (possibly empty) + result set, where each tuple has as many attributes as + \Node% +{\def\Element% +{0:1652}}function\endNode{} takes arguments.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1653}}\Node% +{\def\Element% +{0:1654}}\Node% +{\def\Element% +{0:1655}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1656}}\Node% +{\def\Element% +{0:1657}}A + \Node% +{\def\Element% +{0:1658}}database + object\endNode{}. This will default to the value + of \Node% +{\def\Element% +{0:1659}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1660}}\Node% +{\def\Element% +{0:1661}}\Node% +{\def\Element% +{0:1662}}types\endNode{}\endNode{}\Node% +{\def\Element% +{0:1663}}\Node% +{\def\Element% +{0:1664}} A \Node% +{\def\Element% +{0:1665}}field type specififier\endNode{}. + The default is \Node% +{\def\Element% +{0:1666}}NIL\endNode{}. See \Node% +{\def\Element% +{0:1667}}\Node% +{\def\Element% +{0:1668}}query\endNode{}\endNode{} + for the semantics of this argument. + \endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1669}}\Node% +{\def\Element% +{0:1670}}\Node% +{\def\Element% +{0:1671}}result\endNode{}\endNode{}\Node% +{\def\Element% +{0:1672}}\Node% +{\def\Element% +{0:1673}}If \Node% +{\def\Element% +{0:1674}}output-\/type-\/spec\endNode{} is a + type specifier other than \Node% +{\def\Element% +{0:1675}}nil\endNode{}, then a + sequence of the type it denotes. Otherwise + \Node% +{\def\Element% +{0:1676}}nil\endNode{} is returned.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1677}}\Node% +{\def\Element% +{0:1678}}Description\endNode{}\Node% +{\def\Element% +{0:1679}}Applies \Node% +{\def\Element% +{0:1680}}function\endNode{} to the + attributes of successive tuples in the result set returned + by executing the SQL + \Node% +{\def\Element% +{0:1681}}query-\/expression\endNode{}. If the + \Node% +{\def\Element% +{0:1682}}output-\/type-\/spec\endNode{} is + \Node% +{\def\Element% +{0:1683}}nil\endNode{}, then the result of each application + of \Node% +{\def\Element% +{0:1684}}function\endNode{} is discarded, and + \Node% +{\def\Element% +{0:1685}}map-\/query\endNode{} returns + \Node% +{\def\Element% +{0:1686}}nil\endNode{}. Otherwise the result of each + successive application of \Node% +{\def\Element% +{0:1687}}function\endNode{} is + collected in a sequence of type + \Node% +{\def\Element% +{0:1688}}output-\/type-\/spec\endNode{}, where the jths + element is the result of applying + \Node% +{\def\Element% +{0:1689}}function\endNode{} to the attributes of the + jths tuple in the result set. The collected sequence is the + result of the call to \Node% +{\def\Element% +{0:1690}}map-\/query\endNode{}. + \endNode{}\Node% +{\def\Element% +{0:1691}}If the \Node% +{\def\Element% +{0:1692}}output-\/type-\/spec\endNode{} is a + subtype of \Node% +{\def\Element% +{0:1693}}list\endNode{}, the result will be a + \Node% +{\def\Element% +{0:1694}}list\endNode{}.\endNode{}\Node% +{\def\Element% +{0:1695}}If the \Node% +{\def\Element% +{0:1696}}result-\/type\endNode{} is a subtype + of \Node% +{\def\Element% +{0:1697}}vector\endNode{}, then if the implementation can + determine the element type specified for the + \Node% +{\def\Element% +{0:1698}}result-\/type\endNode{}, the element type of the + resulting array is the result of + \Node% +{\def\Element% +{0:1699}}upgrading\endNode{} that element type; or, if the + implementation can determine that the element type is + unspecified (or \Node% +{\def\Element% +{0:1700}}*\endNode{}), the element type of the + resulting array is \Node% +{\def\Element% +{0:1701}}t\endNode{}; otherwise, an error is + signaled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1702}}\Node% +{\def\Element% +{0:1703}}Examples\endNode{}\Node% +{\def\Element% +{0:1704}}(map-\/query 'list \#'(lambda (salary name) + (declare (ignorable name)) + (read-\/from-\/string salary)) + "select salary,name from simple where salary >\/ 8000") +=>\/ (10000.0 8000.5) + +(map-\/query '(vector double-\/float) + \#'(lambda (salary name) + (declare (ignorable name)) + (let ((*read-\/default-\/float-\/format* 'double-\/float)) + (coerce (read-\/from-\/string salary) 'double-\/float)) + "select salary,name from simple where salary >\/ 8000")) +=>\/ \#(10000.0d0 8000.5d0) +(type-\/of *) +=>\/ (SIMPLE-\/ARRAY DOUBLE-\/FLOAT (2)) + +(let (list) + (values (map-\/query nil \#'(lambda (salary name) + (push (cons name (read-\/from-\/string salary)) list)) + "select salary,name from simple where salary >\/ 8000") + list)) +=>\/ NIL +=>\/ (("Hacker, Random J." . 8000.5) ("Mai, Pierre" . 10000.0)) + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1705}}\Node% +{\def\Element% +{0:1706}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1707}}Whatever effects the execution of the SQL query has + on the underlying database, if any.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1708}}\Node% +{\def\Element% +{0:1709}}Affected by\endNode{}\Node% +{\def\Element% +{0:1710}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1711}}\Node% +{\def\Element% +{0:1712}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1713}}If the execution of the SQL query leads to any + errors, an error of type + \Node% +{\def\Element% +{0:1714}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\Node% +{\def\Element% +{0:1715}}An error of type \Node% +{\def\Element% +{0:1716}}type-\/error\endNode{} must + be signaled if the \Node% +{\def\Element% +{0:1717}}output-\/type-\/spec\endNode{} is + not a recognizable subtype of \Node% +{\def\Element% +{0:1718}}list\endNode{}, not a + recognizable subtype of \Node% +{\def\Element% +{0:1719}}vector\endNode{}, and not + \Node% +{\def\Element% +{0:1720}}nil\endNode{}.\endNode{}\Node% +{\def\Element% +{0:1721}}An error of type \Node% +{\def\Element% +{0:1722}}type-\/error\endNode{} + should be signaled if + \Node% +{\def\Element% +{0:1723}}output-\/type-\/spec\endNode{} specifies the number + of elements and the size of the result set is different from + that number.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1724}}\Node% +{\def\Element% +{0:1725}}See Also\endNode{}\Node% +{\def\Element% +{0:1726}} \Node% +{\def\Element% +{0:1727}}\Node% +{\def\Element% +{0:1728}}\Node% +{\def\Element% +{0:1729}}\Node% +{\def\Element% +{0:1730}}query\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1731}}\Node% +{\def\Element% +{0:1732}}\Node% +{\def\Element% +{0:1733}}do-\/query\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1734}}\Node% +{\def\Element% +{0:1735}}Notes\endNode{}\Node% +{\def\Element% +{0:1736}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:DO-QUERY}}\Node% +{\def\Element% +{0:1738}}\Node% +{\def\Element% +{0:1739}}DO-\/QUERY\endNode{}\Node% +{\def\Element% +{0:1740}}Iterate over all the tuples of a + query\endNode{}\Node% +{\def\Element% +{0:1741}}Macro\endNode{}\endNode{}\Node% +{\def\Element% +{0:1742}}\Node% +{\def\Element% +{0:1743}}Syntax\endNode{}\Node% +{\def\Element% +{0:1744}}\Node% +{\def\Element% +{0:1745}}do-\/query\endNode{} ((\Entity{amp}rest \Node% +{\def\Element% +{0:1746}}args\endNode{}) \Node% +{\def\Element% +{0:1747}}query-\/expression\endNode{} \Entity{amp}key \Node% +{\def\Element% +{0:1748}}database\endNode{} \Node% +{\def\Element% +{0:1749}}types\endNode{}) \Entity{amp}body \Node% +{\def\Element% +{0:1750}}body\endNode{} =>\/ \Node% +{\def\Element% +{0:1751}}nil\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1752}}\Node% +{\def\Element% +{0:1753}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1754}}\Node% +{\def\Element% +{0:1755}}\Node% +{\def\Element% +{0:1756}}\Node% +{\def\Element% +{0:1757}}args\endNode{}\endNode{}\Node% +{\def\Element% +{0:1758}}\Node% +{\def\Element% +{0:1759}}A list of variable names.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1760}}\Node% +{\def\Element% +{0:1761}}\Node% +{\def\Element% +{0:1762}}query-\/expression\endNode{}\endNode{}\Node% +{\def\Element% +{0:1763}}\Node% +{\def\Element% +{0:1764}}An \Node% +{\def\Element% +{0:1765}}sql + expression\endNode{} that represents an SQL + query which is expected to return a (possibly empty) + result set, where each tuple has as many attributes as + \Node% +{\def\Element% +{0:1766}}function\endNode{} takes arguments.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1767}}\Node% +{\def\Element% +{0:1768}}\Node% +{\def\Element% +{0:1769}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1770}}\Node% +{\def\Element% +{0:1771}}A + \Node% +{\def\Element% +{0:1772}}database + object\endNode{}. This will default to + \Node% +{\def\Element% +{0:1773}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1774}}\Node% +{\def\Element% +{0:1775}}\Node% +{\def\Element% +{0:1776}}types\endNode{}\endNode{}\Node% +{\def\Element% +{0:1777}}\Node% +{\def\Element% +{0:1778}} A \Node% +{\def\Element% +{0:1779}}field type specififier\endNode{}. + The default is \Node% +{\def\Element% +{0:1780}}NIL\endNode{}. See \Node% +{\def\Element% +{0:1781}}\Node% +{\def\Element% +{0:1782}}query\endNode{}\endNode{} + for the semantics of this argument. + \endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1783}}\Node% +{\def\Element% +{0:1784}}\Node% +{\def\Element% +{0:1785}}body\endNode{}\endNode{}\Node% +{\def\Element% +{0:1786}}\Node% +{\def\Element% +{0:1787}}A body of Lisp code, like in a + \Node% +{\def\Element% +{0:1788}}destructuring-\/bind\endNode{} form.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1789}}\Node% +{\def\Element% +{0:1790}}Description\endNode{}\Node% +{\def\Element% +{0:1791}}Executes the \Node% +{\def\Element% +{0:1792}}body\endNode{} of code + repeatedly with the variable names in + \Node% +{\def\Element% +{0:1793}}args\endNode{} bound to the attributes of each + tuple in the result set returned by executing the SQL + \Node% +{\def\Element% +{0:1794}}query-\/expression\endNode{} on the + \Node% +{\def\Element% +{0:1795}}database\endNode{} specified.\endNode{}\Node% +{\def\Element% +{0:1796}}The body of code is executed in a block named + \Node% +{\def\Element% +{0:1797}}nil\endNode{} which may be returned from prematurely + via \Node% +{\def\Element% +{0:1798}}return\endNode{} or + \Node% +{\def\Element% +{0:1799}}return-\/from\endNode{}. In this case the result + of evaluating the \Node% +{\def\Element% +{0:1800}}do-\/query\endNode{} form will be + the one supplied to \Node% +{\def\Element% +{0:1801}}return\endNode{} or + \Node% +{\def\Element% +{0:1802}}return-\/from\endNode{}. Otherwise the result will + be \Node% +{\def\Element% +{0:1803}}nil\endNode{}.\endNode{}\Node% +{\def\Element% +{0:1804}}The body of code appears also is if wrapped in a + \Node% +{\def\Element% +{0:1805}}destructuring-\/bind\endNode{} form, thus allowing + declarations at the start of the body, especially those + pertaining to the bindings of the variables named in + \Node% +{\def\Element% +{0:1806}}args\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1807}}\Node% +{\def\Element% +{0:1808}}Examples\endNode{}\Node% +{\def\Element% +{0:1809}}(do-\/query ((salary name) "select salary,name from simple") + (format t "\char126{}30A gets \$\char126{}2,5\$\char126{}\%" name (read-\/from-\/string salary))) +>\/>\/ Mai, Pierre gets \$10000.00 +>\/>\/ Hacker, Random J. gets \$08000.50 +=>\/ NIL + +(do-\/query ((salary name) "select salary,name from simple") + (return (cons salary name))) +=>\/ ("10000.00" . "Mai, Pierre") + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1810}}\Node% +{\def\Element% +{0:1811}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1812}}Whatever effects the execution of the SQL query has + on the underlying database, if any.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1813}}\Node% +{\def\Element% +{0:1814}}Affected by\endNode{}\Node% +{\def\Element% +{0:1815}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1816}}\Node% +{\def\Element% +{0:1817}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1818}}If the execution of the SQL query leads to any + errors, an error of type + \Node% +{\def\Element% +{0:1819}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\Node% +{\def\Element% +{0:1820}}If the number of variable names in + \Node% +{\def\Element% +{0:1821}}args\endNode{} and the number of attributes in + the tuples in the result set don't match up, an error is + signalled.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1822}}\Node% +{\def\Element% +{0:1823}}See Also\endNode{}\Node% +{\def\Element% +{0:1824}} \Node% +{\def\Element% +{0:1825}}\Node% +{\def\Element% +{0:1826}}\Node% +{\def\Element% +{0:1827}}\Node% +{\def\Element% +{0:1828}}query\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1829}}\Node% +{\def\Element% +{0:1830}}\Node% +{\def\Element% +{0:1831}}map-\/query\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1832}}\Node% +{\def\Element% +{0:1833}}Notes\endNode{}\Node% +{\def\Element% +{0:1834}}None.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:LOOP-TUPLES}}\Node% +{\def\Element% +{0:1836}}\Node% +{\def\Element% +{0:1837}}LOOP-\/FOR-\/AS-\/TUPLES\endNode{}\Node% +{\def\Element% +{0:1838}}Iterate over all the tuples of a + query via a loop clause\endNode{}\Node% +{\def\Element% +{0:1839}}Loop Clause\endNode{}\endNode{}\Node% +{\def\Element% +{0:1840}}\Node% +{\def\Element% +{0:1841}}Compatibility\endNode{}\Node% +{\def\Element% +{0:1842}}\Node% +{\def\Element% +{0:1843}}\Node% +{\def\Element% +{0:1844}}loop-\/for-\/as-\/tuples\endNode{} only works with \Node% +{\def\Element% +{0:1845}}CMUCL\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1846}}\Node% +{\def\Element% +{0:1847}}Syntax\endNode{}\Node% +{\def\Element% +{0:1848}}\Node% +{\def\Element% +{0:1849}}var\endNode{} [\Node% +{\def\Element% +{0:1850}}type-\/spec\endNode{}] being \{each | the\} \{record | records | tuple | tuples\} \{in | of\} \Node% +{\def\Element% +{0:1851}}query\endNode{} [from \Node% +{\def\Element% +{0:1852}}database\endNode{}]\endNode{}\endNode{}\Node% +{\def\Element% +{0:1853}}\Node% +{\def\Element% +{0:1854}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1855}}\Node% +{\def\Element% +{0:1856}}\Node% +{\def\Element% +{0:1857}}\Node% +{\def\Element% +{0:1858}}var\endNode{}\endNode{}\Node% +{\def\Element% +{0:1859}}\Node% +{\def\Element% +{0:1860}}A \Node% +{\def\Element% +{0:1861}}d-\/var-\/spec\endNode{}, as defined in the + grammar for \Node% +{\def\Element% +{0:1862}}loop\endNode{}-\/clauses in the + ANSI Standard for Common Lisp. This allows for the + usual loop-\/style destructuring.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1863}}\Node% +{\def\Element% +{0:1864}}\Node% +{\def\Element% +{0:1865}}type-\/spec\endNode{}\endNode{}\Node% +{\def\Element% +{0:1866}}\Node% +{\def\Element% +{0:1867}}An optional \Node% +{\def\Element% +{0:1868}}type-\/spec\endNode{} either + simple or destructured, as defined in the grammar for + \Node% +{\def\Element% +{0:1869}}loop\endNode{}-\/clauses in the ANSI Standard + for Common Lisp.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1870}}\Node% +{\def\Element% +{0:1871}}\Node% +{\def\Element% +{0:1872}}query\endNode{}\endNode{}\Node% +{\def\Element% +{0:1873}}\Node% +{\def\Element% +{0:1874}}An \Node% +{\def\Element% +{0:1875}}sql + expression\endNode{} that represents an SQL + query which is expected to return a (possibly empty) + result set, where each tuple has as many attributes as + \Node% +{\def\Element% +{0:1876}}function\endNode{} takes arguments.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1877}}\Node% +{\def\Element% +{0:1878}}\Node% +{\def\Element% +{0:1879}}database\endNode{}\endNode{}\Node% +{\def\Element% +{0:1880}}\Node% +{\def\Element% +{0:1881}}An optional + \Node% +{\def\Element% +{0:1882}}database + object\endNode{}. This will default to the value + of \Node% +{\def\Element% +{0:1883}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1884}}\Node% +{\def\Element% +{0:1885}}Description\endNode{}\Node% +{\def\Element% +{0:1886}}This clause is an iteration driver for + \Node% +{\def\Element% +{0:1887}}loop\endNode{}, that binds the given variable + (possibly destructured) to the consecutive tuples (which are + represented as lists of attribute values) in the result set + returned by executing the SQL \Node% +{\def\Element% +{0:1888}}query\endNode{} + expression on the \Node% +{\def\Element% +{0:1889}}database\endNode{} + specified.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1890}}\Node% +{\def\Element% +{0:1891}}Examples\endNode{}\Node% +{\def\Element% +{0:1892}}(defvar *my-\/db* (connect '("dent" "newesim" "dent" "dent")) + "My database" +=>\/ *MY-\/DB* +(loop with time-\/graph = (make-\/hash-\/table :test \#'equal) + with event-\/graph = (make-\/hash-\/table :test \#'equal) + for (time event) being the tuples of "select time,event from log" + from *my-\/db* + do + (incf (gethash time time-\/graph 0)) + (incf (gethash event event-\/graph 0)) + finally + (flet ((show-\/graph (k v) (format t "\char126{}40A =>\/ \char126{}5D\char126{}\%" k v))) + (format t "\char126{}\Entity{amp}Time-\/Graph:\char126{}\%===========\char126{}\%") + (maphash \#'show-\/graph time-\/graph) + (format t "\char126{}\Entity{amp}\char126{}\%Event-\/Graph:\char126{}\%============\char126{}\%") + (maphash \#'show-\/graph event-\/graph)) + (return (values time-\/graph event-\/graph))) +>\/>\/ Time-\/Graph: +>\/>\/ =========== +>\/>\/ D =>\/ 53000 +>\/>\/ X =>\/ 3 +>\/>\/ test-\/me =>\/ 3000 +>\/>\/ +>\/>\/ Event-\/Graph: +>\/>\/ ============ +>\/>\/ CLOS Benchmark entry. =>\/ 9000 +>\/>\/ Demo Text... =>\/ 3 +>\/>\/ doit-\/text =>\/ 3000 +>\/>\/ C Benchmark entry. =>\/ 12000 +>\/>\/ CLOS Benchmark entry =>\/ 32000 +=>\/ \#\Entity{lt}EQUAL hash table, 3 entries \{48350A1D\}>\/ +=>\/ \#\Entity{lt}EQUAL hash table, 5 entries \{48350FCD\}>\/ + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1893}}\Node% +{\def\Element% +{0:1894}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1895}}Whatever effects the execution of the SQL query has + on the underlying database, if any.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1896}}\Node% +{\def\Element% +{0:1897}}Affected by\endNode{}\Node% +{\def\Element% +{0:1898}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1899}}\Node% +{\def\Element% +{0:1900}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1901}}If the execution of the SQL query leads to any + errors, an error of type + \Node% +{\def\Element% +{0:1902}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\Node% +{\def\Element% +{0:1903}}Otherwise, any of the exceptional situations of + \Node% +{\def\Element% +{0:1904}}loop\endNode{} applies.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1905}}\Node% +{\def\Element% +{0:1906}}See Also\endNode{}\Node% +{\def\Element% +{0:1907}} \Node% +{\def\Element% +{0:1908}}\Node% +{\def\Element% +{0:1909}}\Node% +{\def\Element% +{0:1910}}\Node% +{\def\Element% +{0:1911}}query\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1912}}\Node% +{\def\Element% +{0:1913}}\Node% +{\def\Element% +{0:1914}}map-\/query\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1915}}\Node% +{\def\Element% +{0:1916}}\Node% +{\def\Element% +{0:1917}}do-\/query\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1918}}\Node% +{\def\Element% +{0:1919}}Notes\endNode{}\Node% +{\def\Element% +{0:1920}}None.\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1921}}\Node% +{\def\Element% +{0:1922}}\Node% +{\def\Element% +{0:1923}}CLSQL-\/SYS\endNode{}\endNode{}\Node% +{\def\Element% +{0:1924}}\Node% +{\def\Element% +{0:1925}}This part gives a reference to all the symbols exported + from the package \Node% +{\def\Element% +{0:1926}}CLSQL-\/SYS\endNode{}, which are not also + exported from \Node% +{\def\Element% +{0:1927}}CLSQL\endNode{}. These symbols are part of + the interface for database back-\/ends, but not part of the normal + user-\/interface of \Node% +{\def\Element% +{0:1928}}\Node% +{\def\Element% +{0:1929}}CLSQL\endNode{}\endNode{}.\endNode{}\endNode{}\Node% +{\def\Label% +{0:DATABASE-INITIALIZE-DATABASE-TYPE}}\Node% +{\def\Element% +{0:1931}}\Node% +{\def\Element% +{0:1932}}DATABASE-\/INITIALIZE-\/DATABASE-\/TYPE\endNode{}\Node% +{\def\Element% +{0:1933}}Back-\/end part of \Node% +{\def\Element% +{0:1934}}\Node% +{\def\Element% +{0:1935}}initialize-\/database-\/type\endNode{}\endNode{}.\endNode{}\Node% +{\def\Element% +{0:1936}}Generic Function\endNode{}\endNode{}\Node% +{\def\Element% +{0:1937}}\Node% +{\def\Element% +{0:1938}}Syntax\endNode{}\Node% +{\def\Element% +{0:1939}}\Node% +{\def\Element% +{0:1940}}database-\/initialize-\/database-\/type\endNode{} \Node% +{\def\Element% +{0:1941}}database-\/type\endNode{} =>\/ \Node% +{\def\Element% +{0:1942}}result\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1943}}\Node% +{\def\Element% +{0:1944}}Arguments and Values\endNode{}\Node% +{\def\Element% +{0:1945}}\Node% +{\def\Element% +{0:1946}}\Node% +{\def\Element% +{0:1947}}\Node% +{\def\Element% +{0:1948}}database-\/type\endNode{}\endNode{}\Node% +{\def\Element% +{0:1949}}\Node% +{\def\Element% +{0:1950}}A keyword indicating the database type to + initialize.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1951}}\Node% +{\def\Element% +{0:1952}}\Node% +{\def\Element% +{0:1953}}result\endNode{}\endNode{}\Node% +{\def\Element% +{0:1954}}\Node% +{\def\Element% +{0:1955}}Either \Node% +{\def\Element% +{0:1956}}t\endNode{} if the initialization + succeeds or \Node% +{\def\Element% +{0:1957}}nil\endNode{} if it fails.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1958}}\Node% +{\def\Element% +{0:1959}}Description\endNode{}\Node% +{\def\Element% +{0:1960}}This generic function implements the main part of the + database type initialization performed by + \Node% +{\def\Element% +{0:1961}}initialize-\/database-\/type\endNode{}. After + \Node% +{\def\Element% +{0:1962}}initialize-\/database-\/type\endNode{} has checked + that the given database type has not been initialized + before, as indicated by + \Node% +{\def\Element% +{0:1963}}*initialized-\/database-\/types*\endNode{}, it will call + this function with the database type as it's sole + parameter. Database back-\/ends are required to define a + method on this generic function which is specialized via an + eql-\/specializer to the keyword representing their database + type.\endNode{}\Node% +{\def\Element% +{0:1964}}Database back-\/ends shall indicate successful + initialization by returning \Node% +{\def\Element% +{0:1965}}t\endNode{} from their + method, and \Node% +{\def\Element% +{0:1966}}nil\endNode{} otherwise. Methods for + this generic function are allowed to signal errors of type + \Node% +{\def\Element% +{0:1967}}maisql-\/error\endNode{} or subtypes thereof. + They may also signal other types of conditions, if + appropriate, but have to document this.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1968}}\Node% +{\def\Element% +{0:1969}}Examples\endNode{}\Node% +{\def\Element% +{0:1970}}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1971}}\Node% +{\def\Element% +{0:1972}}Side Effects\endNode{}\Node% +{\def\Element% +{0:1973}}All necessary side effects to initialize the database + instance.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1974}}\Node% +{\def\Element% +{0:1975}}Affected By\endNode{}\Node% +{\def\Element% +{0:1976}}None.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1977}}\Node% +{\def\Element% +{0:1978}}Exceptional Situations\endNode{}\Node% +{\def\Element% +{0:1979}}Conditions of type \Node% +{\def\Element% +{0:1980}}maisql-\/error\endNode{} + or other conditions may be signalled, depending on the + database back-\/end.\endNode{}\endNode{}\Node% +{\def\Element% +{0:1981}}\Node% +{\def\Element% +{0:1982}}See Also\endNode{}\Node% +{\def\Element% +{0:1983}} \Node% +{\def\Element% +{0:1984}}\Node% +{\def\Element% +{0:1985}}\Node% +{\def\Element% +{0:1986}}\Node% +{\def\Element% +{0:1987}}initialize-\/database-\/type\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1988}}\Node% +{\def\Element% +{0:1989}}\Node% +{\def\Element% +{0:1990}}*initialized-\/database-\/types*\endNode{}\endNode{}\endNode{}\endNode{} + \endNode{}\endNode{}\Node% +{\def\Element% +{0:1991}}\Node% +{\def\Element% +{0:1992}}Notes\endNode{}\Node% +{\def\Element% +{0:1993}}None.\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:1994}}\Node% +{\def\Element% +{0:1995}}Database Back-\/ends\endNode{}\Node% +{\def\Element% +{0:1996}}\Node% +{\def\Element% +{0:1997}}MySQL\endNode{}\Node% +{\def\Element% +{0:1998}}\Node% +{\def\Element% +{0:1999}}Libraries\endNode{}\Node% +{\def\Element% +{0:2000}}The MySQL back-\/end needs access to the MySQL C + client library (\Node% +{\def\Element% +{0:2001}}libmysqlclient.so\endNode{}). + The location of this library is specified via + \Node% +{\def\Element% +{0:2002}}*mysql-\/so-\/load-\/path*\endNode{}, which defaults + to \Node% +{\def\Element% +{0:2003}}/usr/lib/libmysqlclient.so\endNode{}. + Additional flags to \Node% +{\def\Element% +{0:2004}}ld\endNode{} needed for + linking are specified via + \Node% +{\def\Element% +{0:2005}}*mysql-\/so-\/libraries*\endNode{}, + which defaults to \Node% +{\def\Element% +{0:2006}}("-\/lc")\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2007}}\Node% +{\def\Element% +{0:2008}}Initialization\endNode{}\Node% +{\def\Element% +{0:2009}}Use + \Node% +{\def\Element% +{0:2010}}(mk:load-\/system :clsql-\/mysql)\endNode{} + to load the MySQL back-\/end. The database type for the MySQL + back-\/end is \Node% +{\def\Element% +{0:2011}}:mysql\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2012}}\Node% +{\def\Element% +{0:2013}}Connection Specification\endNode{}\Node% +{\def\Element% +{0:2014}}\Node% +{\def\Element% +{0:2015}}Syntax of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2016}}(\Node% +{\def\Element% +{0:2017}}host\endNode{} \Node% +{\def\Element% +{0:2018}}db\endNode{} \Node% +{\def\Element% +{0:2019}}user\endNode{} \Node% +{\def\Element% +{0:2020}}password\endNode{})\endNode{}\endNode{}\Node% +{\def\Element% +{0:2021}}\Node% +{\def\Element% +{0:2022}}Description of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2023}}\Node% +{\def\Element% +{0:2024}}\Node% +{\def\Element% +{0:2025}}\Node% +{\def\Element% +{0:2026}}host\endNode{}\endNode{}\Node% +{\def\Element% +{0:2027}}\Node% +{\def\Element% +{0:2028}}String representing the hostname or IP address + the MySQL server resides on, or \Node% +{\def\Element% +{0:2029}}nil\endNode{} + to indicate the localhost.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2030}}\Node% +{\def\Element% +{0:2031}}\Node% +{\def\Element% +{0:2032}}db\endNode{}\endNode{}\Node% +{\def\Element% +{0:2033}}\Node% +{\def\Element% +{0:2034}}String representing the name of the database on + the server to connect to.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2035}}\Node% +{\def\Element% +{0:2036}}\Node% +{\def\Element% +{0:2037}}user\endNode{}\endNode{}\Node% +{\def\Element% +{0:2038}}\Node% +{\def\Element% +{0:2039}}String representing the user name to use for + authentication, or \Node% +{\def\Element% +{0:2040}}nil\endNode{} to use the + current Unix user ID.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2041}}\Node% +{\def\Element% +{0:2042}}\Node% +{\def\Element% +{0:2043}}password\endNode{}\endNode{}\Node% +{\def\Element% +{0:2044}}\Node% +{\def\Element% +{0:2045}}String representing the unencrypted password to + use for authentication, or \Node% +{\def\Element% +{0:2046}}nil\endNode{} if + the authentication record has an empty password + field.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2047}}\Node% +{\def\Element% +{0:2048}}AODBC\endNode{}\Node% +{\def\Element% +{0:2049}}\Node% +{\def\Element% +{0:2050}}Libraries\endNode{}\Node% +{\def\Element% +{0:2051}}The AODBC back-\/end requires access to the ODBC interface + of \Node% +{\def\Element% +{0:2052}}AllegroCL\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2053}}\Node% +{\def\Element% +{0:2054}}Initialization\endNode{}\Node% +{\def\Element% +{0:2055}}Use + \Node% +{\def\Element% +{0:2056}}(mk:load-\/system :clsql-\/aodbc)\endNode{} + to load the MySQL back-\/end. The database type for the AODBC + back-\/end is \Node% +{\def\Element% +{0:2057}}:aodbc\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2058}}\Node% +{\def\Element% +{0:2059}}Connection Specification\endNode{}\Node% +{\def\Element% +{0:2060}}\Node% +{\def\Element% +{0:2061}}Syntax of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2062}}(\Node% +{\def\Element% +{0:2063}}dsn\endNode{} \Node% +{\def\Element% +{0:2064}}user\endNode{} \Node% +{\def\Element% +{0:2065}}password\endNode{})\endNode{}\endNode{}\Node% +{\def\Element% +{0:2066}}\Node% +{\def\Element% +{0:2067}}Description of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2068}}\Node% +{\def\Element% +{0:2069}}\Node% +{\def\Element% +{0:2070}}\Node% +{\def\Element% +{0:2071}}dsn\endNode{}\endNode{}\Node% +{\def\Element% +{0:2072}}\Node% +{\def\Element% +{0:2073}}String representing the ODBC data source name.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2074}}\Node% +{\def\Element% +{0:2075}}\Node% +{\def\Element% +{0:2076}}user\endNode{}\endNode{}\Node% +{\def\Element% +{0:2077}}\Node% +{\def\Element% +{0:2078}}String representing the user name to use for + authentication.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2079}}\Node% +{\def\Element% +{0:2080}}\Node% +{\def\Element% +{0:2081}}password\endNode{}\endNode{}\Node% +{\def\Element% +{0:2082}}\Node% +{\def\Element% +{0:2083}}String representing the unencrypted password to + use for authentication.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2084}}\Node% +{\def\Element% +{0:2085}}PostgreSQL\endNode{}\Node% +{\def\Element% +{0:2086}}\Node% +{\def\Element% +{0:2087}}Libraries\endNode{}\Node% +{\def\Element% +{0:2088}}The PostgreSQL back-\/end needs access to the PostgreSQL C + client library (\Node% +{\def\Element% +{0:2089}}libpq.so\endNode{}). The + location of this library is specified via + \Node% +{\def\Element% +{0:2090}}*postgresql-\/so-\/load-\/path*\endNode{}, which defaults + to \Node% +{\def\Element% +{0:2091}}/usr/lib/libpq.so\endNode{}. Additional flags + to \Node% +{\def\Element% +{0:2092}}ld\endNode{} needed for linking are + specified via \Node% +{\def\Element% +{0:2093}}*postgresql-\/so-\/libraries*\endNode{}, + which defaults to \Node% +{\def\Element% +{0:2094}}("-\/lcrypt" "-\/lc")\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2095}}\Node% +{\def\Element% +{0:2096}}Initialization\endNode{}\Node% +{\def\Element% +{0:2097}}Use + \Node% +{\def\Element% +{0:2098}}(mk:load-\/system :clsql-\/postgresql)\endNode{} + to load the PostgreSQL back-\/end. The database type for the + PostgreSQL back-\/end is \Node% +{\def\Element% +{0:2099}}:postgresql\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2100}}\Node% +{\def\Element% +{0:2101}}Connection Specification\endNode{}\Node% +{\def\Element% +{0:2102}}\Node% +{\def\Element% +{0:2103}}Syntax of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2104}}(\Node% +{\def\Element% +{0:2105}}host\endNode{} \Node% +{\def\Element% +{0:2106}}db\endNode{} \Node% +{\def\Element% +{0:2107}}user\endNode{} \Node% +{\def\Element% +{0:2108}}password\endNode{} \Entity{amp}optional \Node% +{\def\Element% +{0:2109}}port\endNode{} \Node% +{\def\Element% +{0:2110}}options\endNode{} \Node% +{\def\Element% +{0:2111}}tty\endNode{})\endNode{}\endNode{}\Node% +{\def\Element% +{0:2112}}\Node% +{\def\Element% +{0:2113}}Description of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2114}}For every parameter in the connection-\/spec, + \Node% +{\def\Element% +{0:2115}}nil\endNode{} indicates that the PostgreSQL default + environment variables (see PostgreSQL documentation) will + be used, or if those are unset, the compiled-\/in defaults + of the C client library are used.\endNode{}\Node% +{\def\Element% +{0:2116}}\Node% +{\def\Element% +{0:2117}}\Node% +{\def\Element% +{0:2118}}\Node% +{\def\Element% +{0:2119}}host\endNode{}\endNode{}\Node% +{\def\Element% +{0:2120}}\Node% +{\def\Element% +{0:2121}}String representing the hostname or IP address + the PostgreSQL server resides on. Use the empty + string to indicate a connection to localhost via + Unix-\/Domain sockets instead of TCP/IP.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2122}}\Node% +{\def\Element% +{0:2123}}\Node% +{\def\Element% +{0:2124}}db\endNode{}\endNode{}\Node% +{\def\Element% +{0:2125}}\Node% +{\def\Element% +{0:2126}}String representing the name of the database on + the server to connect to.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2127}}\Node% +{\def\Element% +{0:2128}}\Node% +{\def\Element% +{0:2129}}user\endNode{}\endNode{}\Node% +{\def\Element% +{0:2130}}\Node% +{\def\Element% +{0:2131}}String representing the user name to use for + authentication.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2132}}\Node% +{\def\Element% +{0:2133}}\Node% +{\def\Element% +{0:2134}}password\endNode{}\endNode{}\Node% +{\def\Element% +{0:2135}}\Node% +{\def\Element% +{0:2136}}String representing the unencrypted password to + use for authentication.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2137}}\Node% +{\def\Element% +{0:2138}}\Node% +{\def\Element% +{0:2139}}port\endNode{}\endNode{}\Node% +{\def\Element% +{0:2140}}\Node% +{\def\Element% +{0:2141}}String representing the port to use for + communication with the PostgreSQL server.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2142}}\Node% +{\def\Element% +{0:2143}}\Node% +{\def\Element% +{0:2144}}options\endNode{}\endNode{}\Node% +{\def\Element% +{0:2145}}\Node% +{\def\Element% +{0:2146}}String representing further runtime options for + the PostgreSQL server.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2147}}\Node% +{\def\Element% +{0:2148}}\Node% +{\def\Element% +{0:2149}}tty\endNode{}\endNode{}\Node% +{\def\Element% +{0:2150}}\Node% +{\def\Element% +{0:2151}}String representing the tty or file to use for + debugging messages from the PostgreSQL server.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2152}}\Node% +{\def\Element% +{0:2153}}PostgreSQL Socket\endNode{}\Node% +{\def\Element% +{0:2154}}\Node% +{\def\Element% +{0:2155}}Libraries\endNode{}\Node% +{\def\Element% +{0:2156}}The PostgreSQL Socket back-\/end needs + \Node% +{\def\Element% +{0:2157}}no\endNode{} access to the PostgreSQL C + client library, since it communicates directly with the + PostgreSQL server using the published frontend/backend + protocol, version 2.0. This eases installation and makes it + possible to dump CMU CL images containing CLSQL and this + backend, contrary to backends which require FFI code.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2158}}\Node% +{\def\Element% +{0:2159}}Initialization\endNode{}\Node% +{\def\Element% +{0:2160}}Use + \Node% +{\def\Element% +{0:2161}}(mk:load-\/system :clsql-\/postgresql-\/socket)\endNode{} + to load the PostgreSQL Socket back-\/end. The database type for the + PostgreSQL Socket back-\/end is + \Node% +{\def\Element% +{0:2162}}:postgresql-\/socket\endNode{}.\endNode{}\endNode{}\Node% +{\def\Element% +{0:2163}}\Node% +{\def\Element% +{0:2164}}Connection Specification\endNode{}\Node% +{\def\Element% +{0:2165}}\Node% +{\def\Element% +{0:2166}}Syntax of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2167}}(\Node% +{\def\Element% +{0:2168}}host\endNode{} \Node% +{\def\Element% +{0:2169}}db\endNode{} \Node% +{\def\Element% +{0:2170}}user\endNode{} \Node% +{\def\Element% +{0:2171}}password\endNode{} \Entity{amp}optional \Node% +{\def\Element% +{0:2172}}port\endNode{} \Node% +{\def\Element% +{0:2173}}options\endNode{} \Node% +{\def\Element% +{0:2174}}tty\endNode{})\endNode{}\endNode{}\Node% +{\def\Element% +{0:2175}}\Node% +{\def\Element% +{0:2176}}Description of connection-\/spec\endNode{}\Node% +{\def\Element% +{0:2177}}\Node% +{\def\Element% +{0:2178}}\Node% +{\def\Element% +{0:2179}}\Node% +{\def\Element% +{0:2180}}host\endNode{}\endNode{}\Node% +{\def\Element% +{0:2181}}\Node% +{\def\Element% +{0:2182}}If this is a string, it represents the hostname or + IP address the PostgreSQL server resides on. In + this case communication with the server proceeds via + a TCP connection to the given host and port.\endNode{}\Node% +{\def\Element% +{0:2183}} If this is a pathname, then it is assumed to name the + directory that contains the server's Unix-\/Domain + sockets. The full name to the socket is then + constructed from this and the port number passed, + and communication will proceed via a connection to + this unix-\/domain socket.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2184}}\Node% +{\def\Element% +{0:2185}}\Node% +{\def\Element% +{0:2186}}db\endNode{}\endNode{}\Node% +{\def\Element% +{0:2187}}\Node% +{\def\Element% +{0:2188}}String representing the name of the database on + the server to connect to.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2189}}\Node% +{\def\Element% +{0:2190}}\Node% +{\def\Element% +{0:2191}}user\endNode{}\endNode{}\Node% +{\def\Element% +{0:2192}}\Node% +{\def\Element% +{0:2193}}String representing the user name to use for + authentication.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2194}}\Node% +{\def\Element% +{0:2195}}\Node% +{\def\Element% +{0:2196}}password\endNode{}\endNode{}\Node% +{\def\Element% +{0:2197}}\Node% +{\def\Element% +{0:2198}}String representing the unencrypted password to + use for authentication. This can be the empty + string if no password is required for + authentication.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2199}}\Node% +{\def\Element% +{0:2200}}\Node% +{\def\Element% +{0:2201}}port\endNode{}\endNode{}\Node% +{\def\Element% +{0:2202}}\Node% +{\def\Element% +{0:2203}}Integer representing the port to use for + communication with the PostgreSQL server. This + defaults to 5432.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2204}}\Node% +{\def\Element% +{0:2205}}\Node% +{\def\Element% +{0:2206}}options\endNode{}\endNode{}\Node% +{\def\Element% +{0:2207}}\Node% +{\def\Element% +{0:2208}}String representing further runtime options for + the PostgreSQL server.\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2209}}\Node% +{\def\Element% +{0:2210}}\Node% +{\def\Element% +{0:2211}}tty\endNode{}\endNode{}\Node% +{\def\Element% +{0:2212}}\Node% +{\def\Element% +{0:2213}}String representing the tty or file to use for + debugging messages from the PostgreSQL server.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2214}}\Node% +{\def\Element% +{0:2215}}\Node% +{\def\Element% +{0:2216}}This glossary is still very thinly populated, and not all + references in the main text have been properly linked and + coordinated with this glossary. This will hopefully change in + future revisions. + \endNode{}\endNode{}\Node% +{\def\Element% +{0:2217}}\Node% +{\def\Element% +{0:2218}}Active database\endNode{}\Node% +{\def\Element% +{0:2219}}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2220}}\Node% +{\def\Element% +{0:2221}}Connection\endNode{}\Node% +{\def\Element% +{0:2222}}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2223}}\Node% +{\def\Element% +{0:2224}}Closed Database\endNode{}\Node% +{\def\Element% +{0:2225}}\Node% +{\def\Element% +{0:2226}} An object of type \Node% +{\def\Element% +{0:2227}}closed-\/database\endNode{}. This is + in contrast to the terms connection, database, active + database or \Node% +{\def\Element% +{0:2228}}database object\endNode{} + which don't include objects which are closed database. + \endNode{}\endNode{}\endNode{}\Node% +{\def\Element% +{0:2229}}\Node% +{\def\Element% +{0:2230}}database\endNode{}\Node% +{\def\Element% +{0:2231}}\endNode{}\endNode{}\Node% +{\def\Label% +{0:GLOSS-FFI}}\Node% +{\def\Element% +{0:2233}}Foreign Function Interface + (\Node% +{\def\Element% +{0:2234}}FFI\endNode{}) + \endNode{}\Node% +{\def\Element% +{0:2235}}\Node% +{\def\Element% +{0:2236}} An interface from Common Lisp to a external library which + contains compiled functions written in other programming + languages, typically C. + \endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:GLOSS-DATABASE-OBJECT}}\Node% +{\def\Element% +{0:2238}}Database Object\endNode{}\Node% +{\def\Element% +{0:2239}}\Node% +{\def\Element% +{0:2240}}An object of type \Node% +{\def\Element% +{0:2241}}database\endNode{}.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:GLOSS-FIELD-TYPES}}\Node% +{\def\Element% +{0:2243}}Field Types Specifier\endNode{}\Node% +{\def\Element% +{0:2244}}\Node% +{\def\Element% +{0:2245}}A value that specifies the type of each field in a query.\endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:GLOSS-SQL}}\Node% +{\def\Element% +{0:2247}}Structured Query Language + (\Node% +{\def\Element% +{0:2248}}SQL\endNode{}) + \endNode{}\Node% +{\def\Element% +{0:2249}}\Node% +{\def\Element% +{0:2250}} An ANSI standard language for storing and retrieving data + in a relational database. + \endNode{}\endNode{}\endNode{}\Node% +{\def\Label% +{0:GLOSS-SQL-EXPRESSION}}\Node% +{\def\Element% +{0:2252}}SQL Expression\endNode{}\Node% +{\def\Element% +{0:2253}}\Node% +{\def\Element% +{0:2254}}Either a string containing a valid SQL statement, or + an object of type \Node% +{\def\Element% +{0:2255}}sql-\/expression\endNode{}\Node% +{\def\Element% +{0:2256}}\Node% +{\def\Element% +{0:2257}}This has not been implemented yet, so only strings + are valid SQL expressions for the moment.\endNode{}\endNode{} + \endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endFOT{} \ No newline at end of file