\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{}