r1792: *** empty log message ***
[uffi.git] / doc / dsssl / print / docbook.tex
1 \FOT{3}\Node%
2 {}\Node%
3 {\def\Element%
4 {0:0}}\Node%
5 {\def\Element%
6 {0:1}}\Node%
7 {\def\Element%
8 {0:2}}\Node%
9 {\def\Element%
10 {0:3}}\Node%
11 {\def\Element%
12 {0:4}}CLSQL\endNode{}\endNode{} Users' Guide\endNode{}\Node%
13 {\def\Element%
14 {0:5}}\Node%
15 {\def\Element%
16 {0:6}}\Node%
17 {\def\Element%
18 {0:7}}Kevin\endNode{}\Node%
19 {\def\Element%
20 {0:8}}M.\endNode{}\Node%
21 {\def\Element%
22 {0:9}}Rosenberg\endNode{}\Node%
23 {\def\Element%
24 {0:10}}\Node%
25 {\def\Element%
26 {0:11}}Maintainer of CLSQL\endNode{}\endNode{}\endNode{}\Node%
27 {\def\Element%
28 {0:12}}\Node%
29 {\def\Element%
30 {0:13}}Pierre\endNode{}\Node%
31 {\def\Element%
32 {0:14}}R.\endNode{}\Node%
33 {\def\Element%
34 {0:15}}Mai\endNode{}\Node%
35 {\def\Element%
36 {0:16}}\Node%
37 {\def\Element%
38 {0:17}}Author of Original MaiSQL Code\endNode{}\endNode{}\endNode{}\endNode{}\Node%
39 {\def\Element%
40 {0:18}}\Node%
41 {\def\Element%
42 {0:19}}\$Date: 2002/04/23 21:30:27 $\endNode{}\Node%
43 {\def\Element%
44 {0:20}}\$Id: docbook.tex,v 1.1 2002/04/23 21:30:27 kevin Exp $\endNode{}\endNode{}\Node%
45 {\def\Element%
46 {0:21}}\Node%
47 {\def\Element%
48 {0:22}}\Node%
49 {\def\Element%
50 {0:23}}\Node%
51 {\def\Element%
52 {0:24}}\Node%
53 {\def\Element%
54 {0:25}}\Node%
55 {\def\Element%
56 {0:26}}CLSQL\endNode{}\endNode{} is Copyright \Entity{copy} 2002 by Kevin M. Rosenberg and
57         Copyright \Entity{copy} 1999-\/2001 by Pierre R. Mai.\endNode{}\endNode{}\Node%
58 {\def\Element%
59 {0:27}}\Node%
60 {\def\Element%
61 {0:28}}\Node%
62 {\def\Element%
63 {0:29}}Allegro CL\endNode{}\Entity{reg} is a registered
64            trademark of Franz Inc.\endNode{}\endNode{}\Node%
65 {\def\Element%
66 {0:30}}\Node%
67 {\def\Element%
68 {0:31}}\Node%
69 {\def\Element%
70 {0:32}}Common SQL\endNode{},
71               \Node%
72 {\def\Element%
73 {0:33}}LispWorks\endNode{} and
74         \Node%
75 {\def\Element%
76 {0:34}}Xanalys\endNode{} are trademarks or
77         registered trademarks of Xanalys Inc.\endNode{}\endNode{}\Node%
78 {\def\Element%
79 {0:35}}\Node%
80 {\def\Element%
81 {0:36}}\Node%
82 {\def\Element%
83 {0:37}}Microsoft
84           Windows\endNode{}\Entity{reg} is a registered trademark of
85           Microsoft Inc.\endNode{}\endNode{}\Node%
86 {\def\Element%
87 {0:38}}\Node%
88 {\def\Element%
89 {0:39}}Other brand or
90             product names are the registered trademarks or trademarks of
91             their respective holders.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
92 {\def\Element%
93 {0:40}}\Node%
94 {\def\Element%
95 {0:41}}Preface\endNode{}\Node%
96 {\def\Element%
97 {0:42}}This guide provides reference
98       to the features of \Node%
99 {\def\Element%
100 {0:43}}\Node%
101 {\def\Element%
102 {0:44}}CLSQL\endNode{}\endNode{}.  The first 
103       chapter provides an introduction to \Node%
104 {\def\Element%
105 {0:45}}\Node%
106 {\def\Element%
107 {0:46}}CLSQL\endNode{}\endNode{} and installation
108       instructions.
109       Following that chapter is the reference section for all user
110       accessible symbols of \Node%
111 {\def\Element%
112 {0:47}}\Node%
113 {\def\Element%
114 {0:48}}CLSQL\endNode{}\endNode{} with examples of usage,
115       followed by the reference section for all accessible symbols of
116       the database back-\/end interface.  At the end there you will find
117       a glossary of commonly used terms with their
118       definitions.\endNode{}\endNode{}\Node%
119 {\def\Element%
120 {0:49}}\Node%
121 {\def\Element%
122 {0:50}}Introduction\endNode{}\Node%
123 {\def\Element%
124 {0:51}}\Node%
125 {\def\Element%
126 {0:52}}Purpose\endNode{}\Node%
127 {\def\Element%
128 {0:53}}\Node%
129 {\def\Element%
130 {0:54}}\Node%
131 {\def\Element%
132 {0:55}}CLSQL\endNode{}\endNode{} is a Common Lisp interface to \Node%
133 {\def\Element%
134 {0:56}}SQL\endNode{} databases.  A number of Common
135 Lisp implementations and SQL databases are supported.The general
136 structure of \Node%
137 {\def\Element%
138 {0:57}}\Node%
139 {\def\Element%
140 {0:58}}CLSQL\endNode{}\endNode{} is based on the
141 \Node%
142 {\def\Element%
143 {0:59}}CommonSQL\endNode{} package by Xanalys.\endNode{}\endNode{}\Node%
144 {\def\Element%
145 {0:60}}\Node%
146 {\def\Element%
147 {0:61}}History\endNode{}\Node%
148 {\def\Element%
149 {0:62}}      \Node%
150 {\def\Element%
151 {0:63}}\Node%
152 {\def\Element%
153 {0:64}}CLSQL\endNode{}\endNode{} is written by Kevin M. Rosenberg and based substantially
154 on Pierre R. Mai's excellent \Node%
155 {\def\Element%
156 {0:65}}\Node%
157 {\def\Element%
158 {0:66}}MaiSQL\endNode{}\endNode{} package. The main changes from \Node%
159 {\def\Element%
160 {0:67}}\Node%
161 {\def\Element%
162 {0:68}}MaiSQL\endNode{}\endNode{}
163 are:
164 \Node%
165 {\def\Element%
166 {0:69}}\Node%
167 {\def\Element%
168 {0:70}}\Node%
169 {\def\Element%
170 {0:71}}port from the \Node%
171 {\def\Element%
172 {0:72}}CMUCL\endNode{} FFI to \Node%
173 {\def\Element%
174 {0:73}}\Node%
175 {\def\Element%
176 {0:74}}UFFI\endNode{}\endNode{}.\endNode{}\endNode{}\Node%
177 {\def\Element%
178 {0:75}}\Node%
179 {\def\Element%
180 {0:76}}new \Node%
181 {\def\Element%
182 {0:77}}AllegroCL\endNode{} ODBC interface back-\/end.\endNode{}\endNode{}\Node%
183 {\def\Element%
184 {0:78}}\Node%
185 {\def\Element%
186 {0:79}}compatibility layer for \Node%
187 {\def\Element%
188 {0:80}}CMUCL\endNode{} specific code.\endNode{}\endNode{}\Node%
189 {\def\Element%
190 {0:81}}\Node%
191 {\def\Element%
192 {0:82}}much improved robustness for the \Node%
193 {\def\Element%
194 {0:83}}MySQL\endNode{} back-\/end.\endNode{}\endNode{}\Node%
195 {\def\Element%
196 {0:84}}\Node%
197 {\def\Element%
198 {0:85}}improved system loading.\endNode{}\endNode{}\Node%
199 {\def\Element%
200 {0:86}}\Node%
201 {\def\Element%
202 {0:87}}improved packages and symbol export.\endNode{}\endNode{}\endNode{}
203     \endNode{}\endNode{}\Node%
204 {\def\Element%
205 {0:88}}\Node%
206 {\def\Element%
207 {0:89}}Prerequisites\endNode{}\Node%
208 {\def\Element%
209 {0:90}}\Node%
210 {\def\Element%
211 {0:91}}\Node%
212 {\def\Element%
213 {0:92}}Defsystem\endNode{}\endNode{}\Node%
214 {\def\Element%
215 {0:93}} \Node%
216 {\def\Element%
217 {0:94}}\Node%
218 {\def\Element%
219 {0:95}}CLSQL\endNode{}\endNode{} uses \Node%
220 {\def\Element%
221 {0:96}}Defsystem\endNode{} to compile and load its
222 components.  \Node%
223 {\def\Element%
224 {0:97}}Defsystem\endNode{} is included in the \Node%
225 {\def\Element%
226 {0:98}}\Node%
227 {\def\Element%
228 {0:99}}\Node%
229 {\def\Element%
230 {0:100}}\Node%
231 {\def\Element%
232 {0:101}}CLOCC\endNode{}\endNode{}\endNode{}\endNode{} collection. The
233 version in the pre-\/packaged distribution is rather old and
234 may not function well. The version in CVS tree tree works quite
235 well. For convenience, a copy of the latest \Node%
236 {\def\Element%
237 {0:102}}Defsystem\endNode{} at the FTP
238 \Node%
239 {\def\Element%
240 {0:103}}\Node%
241 {\def\Element%
242 {0:104}}site\endNode{}\endNode{}
243 of \Node%
244 {\def\Element%
245 {0:105}}\Node%
246 {\def\Element%
247 {0:106}}CLSQL\endNode{}\endNode{}.
248       \endNode{}\endNode{}\Node%
249 {\def\Element%
250 {0:107}}\Node%
251 {\def\Element%
252 {0:108}}\Node%
253 {\def\Element%
254 {0:109}}\Node%
255 {\def\Element%
256 {0:110}}UFFI\endNode{}\endNode{}\endNode{}\Node%
257 {\def\Element%
258 {0:111}}\Node%
259 {\def\Element%
260 {0:112}}\Node%
261 {\def\Element%
262 {0:113}}CLSQL\endNode{}\endNode{} uses \Node%
263 {\def\Element%
264 {0:114}}\Node%
265 {\def\Element%
266 {0:115}}\Node%
267 {\def\Element%
268 {0:116}}\Node%
269 {\def\Element%
270 {0:117}}UFFI\endNode{}\endNode{}\endNode{}\endNode{}
271 as a \Node%
272 {\def\Element%
273 {0:118}}Foreign Function Interface\endNode{} (\Node%
274 {\def\Element%
275 {0:119}}FFI\endNode{}) to support multiple \Node%
276 {\def\Element%
277 {0:120}}ANSI Common Lisp\endNode{}
278 implementations.\endNode{}\Node%
279 {\def\Element%
280 {0:121}}You can download \Node%
281 {\def\Element%
282 {0:122}}\Node%
283 {\def\Element%
284 {0:123}}UFFI\endNode{}\endNode{} from its FTP \Node%
285 {\def\Element%
286 {0:124}}\Node%
287 {\def\Element%
288 {0:125}}site\endNode{}\endNode{}. There
289 are zip files for Microsoft Windows systems and gzipped tar files for
290 other systems.\endNode{}\endNode{}\Node%
291 {\def\Element%
292 {0:126}}\Node%
293 {\def\Element%
294 {0:127}}Supported Common Lisp Implementation\endNode{}\Node%
295 {\def\Element%
296 {0:128}}The implementations that support \Node%
297 {\def\Element%
298 {0:129}}\Node%
299 {\def\Element%
300 {0:130}}CLSQL\endNode{}\endNode{} is governed by the supported
301 implementations of \Node%
302 {\def\Element%
303 {0:131}}\Node%
304 {\def\Element%
305 {0:132}}UFFI\endNode{}\endNode{}. The following implementations are supported:
306       \endNode{}\Node%
307 {\def\Element%
308 {0:133}}\Node%
309 {\def\Element%
310 {0:134}}\Node%
311 {\def\Element%
312 {0:135}}\Node%
313 {\def\Element%
314 {0:136}}AllegroCL\endNode{} v6.1 on Redhat Linux 7.2, FreeBSD 4.5, and Microsoft Windows XP.\endNode{}\endNode{}\Node%
315 {\def\Element%
316 {0:137}}\Node%
317 {\def\Element%
318 {0:138}}\Node%
319 {\def\Element%
320 {0:139}}Lispworks\endNode{} v4.2 on Redhat Linux 7.2 and Microsoft Windows XP.\endNode{}\endNode{}\Node%
321 {\def\Element%
322 {0:140}}\Node%
323 {\def\Element%
324 {0:141}}\Node%
325 {\def\Element%
326 {0:142}}CMUCL\endNode{} 18d-\/pre on Redhat Linux 7.2, FreeBSD 4.5, and Solaris 2.8.\endNode{}\endNode{}\endNode{}\endNode{}\Node%
327 {\def\Element%
328 {0:143}}\Node%
329 {\def\Element%
330 {0:144}}Supported \Node%
331 {\def\Element%
332 {0:145}}SQL\endNode{} Implementation\endNode{}\Node%
333 {\def\Element%
334 {0:146}}        Currently, \Node%
335 {\def\Element%
336 {0:147}}\Node%
337 {\def\Element%
338 {0:148}}CLSQL\endNode{}\endNode{} supports the following databases:
339       \endNode{}\Node%
340 {\def\Element%
341 {0:149}}\Node%
342 {\def\Element%
343 {0:150}}\Node%
344 {\def\Element%
345 {0:151}}\Node%
346 {\def\Element%
347 {0:152}}MySQL\endNode{} v3.23.49.\endNode{}\endNode{}\Node%
348 {\def\Element%
349 {0:153}}\Node%
350 {\def\Element%
351 {0:154}}\Node%
352 {\def\Element%
353 {0:155}}PostgreSQL\endNode{} v7.2 with both direct API and TCP socket connections.\endNode{}\endNode{}\Node%
354 {\def\Element%
355 {0:156}}\Node%
356 {\def\Element%
357 {0:157}}Allegro's ODBC interface (\Node%
358 {\def\Element%
359 {0:158}}AODBC\endNode{}) using iODBC ODBC manager.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
360 {\def\Element%
361 {0:159}}\Node%
362 {\def\Element%
363 {0:160}}Installation\endNode{}\Node%
364 {\def\Element%
365 {0:161}}\Node%
366 {\def\Element%
367 {0:162}}Ensure \Node%
368 {\def\Element%
369 {0:163}}Defsystem\endNode{} is loaded\endNode{}\Node%
370 {\def\Element%
371 {0:164}}        Simply load the file \Node%
372 {\def\Element%
373 {0:165}}defsystem.lisp\endNode{}.
374         \Node%
375 {\def\Element%
376 {0:166}}(load "defsystem.lisp")
377         \endNode{}
378       \endNode{}\endNode{}\Node%
379 {\def\Element%
380 {0:167}}\Node%
381 {\def\Element%
382 {0:168}}Build \Node%
383 {\def\Element%
384 {0:169}}C\endNode{} helper libraries\endNode{}\Node%
385 {\def\Element%
386 {0:170}}\Node%
387 {\def\Element%
388 {0:171}}\Node%
389 {\def\Element%
390 {0:172}}CLSQL\endNode{}\endNode{} uses functions that require 64-\/bit integer
391 parameters and return values. The \Node%
392 {\def\Element%
393 {0:173}}FFI\endNode{} in most \Node%
394 {\def\Element%
395 {0:174}}\Node%
396 {\def\Element%
397 {0:175}}CLSQL\endNode{}\endNode{}
398 implementations do not support 64-\/bit integers. Thus, C helper
399 libraries are required to break these 64-\/bit integers into two compatible
400 32-\/bit integers.\endNode{}\Node%
401 {\def\Element%
402 {0:176}}Makefiles for Microsoft Windows and GNU/Solaris systems
403 are supplied to build the libraries. Since many Microsoft Windows
404 users don't have access to a compiler, the \Node%
405 {\def\Element%
406 {0:177}}DLL\endNode{} and \Node%
407 {\def\Element%
408 {0:178}}LIB\endNode{}
409 files for Microsoft Windows are supplied with the distribution.\endNode{}\Node%
410 {\def\Element%
411 {0:179}}To build the libraries on a GNU or Solaris, use the shell and
412 change to the root directory of \Node%
413 {\def\Element%
414 {0:180}}\Node%
415 {\def\Element%
416 {0:181}}CLSQL\endNode{}\endNode{}. You may need to edit the file
417 \Node%
418 {\def\Element%
419 {0:182}}interfaces/mysql/Makefile\endNode{} to specify the location of your
420 MySQL installation. The default Makefiles are setup for shared library
421 linking on Linux. If you are using FreeBSD or Solaris, you will need
422 to change the linker setting as instructed in the Makefile. 
423 Then, you can give the command
424 \Node%
425 {\def\Element%
426 {0:183}}make libs\endNode{}
427 in the root directory of \Node%
428 {\def\Element%
429 {0:184}}\Node%
430 {\def\Element%
431 {0:185}}CLSQL\endNode{}\endNode{} to build the libraries 
432 \Node%
433 {\def\Element%
434 {0:186}}interfaces/mysql/clsql-\/mysql.so\endNode{} and
435 \Node%
436 {\def\Element%
437 {0:187}}interfaces/clsql-\/uffi/clsql-\/uffi.so\endNode{}.\endNode{}\endNode{}\Node%
438 {\def\Element%
439 {0:188}}\Node%
440 {\def\Element%
441 {0:189}}Load \Node%
442 {\def\Element%
443 {0:190}}\Node%
444 {\def\Element%
445 {0:191}}UFFI\endNode{}\endNode{}\endNode{}\Node%
446 {\def\Element%
447 {0:192}}        Unzip or untar the \Node%
448 {\def\Element%
449 {0:193}}\Node%
450 {\def\Element%
451 {0:194}}UFFI\endNode{}\endNode{} distribution which creates a directory
452 for the \Node%
453 {\def\Element%
454 {0:195}}\Node%
455 {\def\Element%
456 {0:196}}UFFI\endNode{}\endNode{} files. Add that directory to Defsystem's \Node%
457 {\def\Element%
458 {0:197}}mk:*central-\/registry*\endNode{}.
459 You can do that by either pushing the pathname of the directory onto this variable, or
460 use the new \Node%
461 {\def\Element%
462 {0:198}}add-\/registry-\/location\endNode{} present in the newest versions of
463 \Node%
464 {\def\Element%
465 {0:199}}Defsystem\endNode{}. The following example code assumes the \Node%
466 {\def\Element%
467 {0:200}}\Node%
468 {\def\Element%
469 {0:201}}UFFI\endNode{}\endNode{} files reside in the
470 \Node%
471 {\def\Element%
472 {0:202}}/usr/local/src/lisp/uffi\endNode{} directory.
473         \Node%
474 {\def\Element%
475 {0:203}}(mk:add-\/registry-\/location \#P"/usr/local/src/lisp/uffi")
476 (mk:load-\/system :uffi)
477         \endNode{}
478       \endNode{}\endNode{}\Node%
479 {\def\Element%
480 {0:204}}\Node%
481 {\def\Element%
482 {0:205}}Load \Node%
483 {\def\Element%
484 {0:206}}\Node%
485 {\def\Element%
486 {0:207}}CLSQL\endNode{}\endNode{} modules\endNode{}\Node%
487 {\def\Element%
488 {0:208}}        Unzip or untar the \Node%
489 {\def\Element%
490 {0:209}}\Node%
491 {\def\Element%
492 {0:210}}CLSQL\endNode{}\endNode{} distribution which creates a directory
493 for the \Node%
494 {\def\Element%
495 {0:211}}\Node%
496 {\def\Element%
497 {0:212}}CLSQL\endNode{}\endNode{} files. Add that directory to Defsystem's \Node%
498 {\def\Element%
499 {0:213}}mk:*central-\/registry*\endNode{}.
500 You can do that by either pushing the pathname of the directory onto this variable, or
501 use the new \Node%
502 {\def\Element%
503 {0:214}}add-\/registry-\/location\endNode{} present in the newest versions of
504 \Node%
505 {\def\Element%
506 {0:215}}Defsystem\endNode{}. The following example code assumes the \Node%
507 {\def\Element%
508 {0:216}}\Node%
509 {\def\Element%
510 {0:217}}CLSQL\endNode{}\endNode{} files reside in the
511 \Node%
512 {\def\Element%
513 {0:218}}/usr/local/src/lisp/clsql\endNode{} directory. You need to load, at a minimum,
514 the main \Node%
515 {\def\Element%
516 {0:219}}:clsql\endNode{} system and at least one interface system.
517         \Node%
518 {\def\Element%
519 {0:220}}(mk:add-\/registry-\/location \#P"/usr/local/src/lisp/clsql")
520 (mk:load-\/system :clsql)              ; main clsql package
521 (mk:load-\/system :clsql-\/mysql)       ; MySQL interface
522 (mk:load-\/system :clsql-\/postgresql)  ; PostgreSQL interface
523 (mk:load-\/system :clsql-\/postgresql-\/socket) ; Socket PGSQL interface
524 (mk:load-\/system :clsql-\/aodbc)       ; Allegro ODBC interface
525         \endNode{}
526       \endNode{}\endNode{}\Node%
527 {\def\Element%
528 {0:221}}\Node%
529 {\def\Element%
530 {0:222}}Run test suite\endNode{}\Node%
531 {\def\Element%
532 {0:223}}        After loading \Node%
533 {\def\Element%
534 {0:224}}\Node%
535 {\def\Element%
536 {0:225}}CLSQL\endNode{}\endNode{}, you can execute the test program in
537 the directory \Node%
538 {\def\Element%
539 {0:226}}./test-\/suite\endNode{}. The test file,
540 \Node%
541 {\def\Element%
542 {0:227}}tester-\/clsql\endNode{}
543 has instructions for creating a \Node%
544 {\def\Element%
545 {0:228}}test.config\endNode{}.
546 After creating that file, simple load the test file with Lisp
547 and the tests should automatically execute.
548       \endNode{}\endNode{}\endNode{}\endNode{}\Node%
549 {\def\Element%
550 {0:229}}\Node%
551 {\def\Element%
552 {0:230}}\Node%
553 {\def\Element%
554 {0:231}}CLSQL\endNode{}\endNode{}\Node%
555 {\def\Element%
556 {0:232}}\Node%
557 {\def\Element%
558 {0:233}}This part gives a reference to all the symbols exported
559         from the package \Node%
560 {\def\Element%
561 {0:234}}CLSQL-\/SYS\endNode{}, which are also
562         re-\/exported from the package \Node%
563 {\def\Element%
564 {0:235}}CLSQL\endNode{}.  These
565         symbols constitute the normal user-\/interface of
566         \Node%
567 {\def\Element%
568 {0:236}}\Node%
569 {\def\Element%
570 {0:237}}CLSQL\endNode{}\endNode{}.\endNode{}\endNode{}\Node%
571 {\def\Label%
572 {0:MAISQL-CONDITION}}\Node%
573 {\def\Element%
574 {0:239}}\Node%
575 {\def\Element%
576 {0:240}}CLSQL-\/CONDITION\endNode{}\Node%
577 {\def\Element%
578 {0:241}}the super-\/type of all
579           \Node%
580 {\def\Element%
581 {0:242}}\Node%
582 {\def\Element%
583 {0:243}}CLSQL\endNode{}\endNode{}-\/specific
584           conditions\endNode{}\Node%
585 {\def\Element%
586 {0:244}}Condition Type\endNode{}\endNode{}\Node%
587 {\def\Element%
588 {0:245}}\Node%
589 {\def\Element%
590 {0:246}}Class Precedence List\endNode{}\Node%
591 {\def\Element%
592 {0:247}}        \Node%
593 {\def\Element%
594 {0:248}}\Node%
595 {\def\Element%
596 {0:249}}\Node%
597 {\def\Element%
598 {0:250}}maisql-\/condition\endNode{}\endNode{}\Node%
599 {\def\Element%
600 {0:251}}\Node%
601 {\def\Element%
602 {0:252}}condition\endNode{}\endNode{}\Node%
603 {\def\Element%
604 {0:253}}\Node%
605 {\def\Element%
606 {0:254}}t\endNode{}\endNode{}\endNode{}
607         \endNode{}\endNode{}\Node%
608 {\def\Element%
609 {0:255}}\Node%
610 {\def\Element%
611 {0:256}}Description\endNode{}\Node%
612 {\def\Element%
613 {0:257}}This is the super-\/type of all
614           \Node%
615 {\def\Element%
616 {0:258}}\Node%
617 {\def\Element%
618 {0:259}}CLSQL\endNode{}\endNode{}-\/specific conditions
619           defined by \Node%
620 {\def\Element%
621 {0:260}}\Node%
622 {\def\Element%
623 {0:261}}CLSQL\endNode{}\endNode{}, or any of it's
624           database-\/specific interfaces.  There are no defined
625           initialization arguments nor any accessors.\endNode{}\endNode{}\endNode{}\Node%
626 {\def\Label%
627 {0:MAISQL-ERROR}}\Node%
628 {\def\Element%
629 {0:263}}\Node%
630 {\def\Element%
631 {0:264}}CLSQL-\/ERROR\endNode{}\Node%
632 {\def\Element%
633 {0:265}}the super-\/type of all
634           \Node%
635 {\def\Element%
636 {0:266}}\Node%
637 {\def\Element%
638 {0:267}}CLSQL\endNode{}\endNode{}-\/specific
639           errors\endNode{}\Node%
640 {\def\Element%
641 {0:268}}Condition Type\endNode{}\endNode{}\Node%
642 {\def\Element%
643 {0:269}}\Node%
644 {\def\Element%
645 {0:270}}Class Precedence List\endNode{}\Node%
646 {\def\Element%
647 {0:271}}        \Node%
648 {\def\Element%
649 {0:272}}\Node%
650 {\def\Element%
651 {0:273}}\Node%
652 {\def\Element%
653 {0:274}}maisql-\/error\endNode{}\endNode{}\Node%
654 {\def\Element%
655 {0:275}}\Node%
656 {\def\Element%
657 {0:276}}error\endNode{}\endNode{}\Node%
658 {\def\Element%
659 {0:277}}\Node%
660 {\def\Element%
661 {0:278}}serious-\/condition\endNode{}\endNode{}\Node%
662 {\def\Element%
663 {0:279}}\Node%
664 {\def\Element%
665 {0:280}}maisql-\/condition\endNode{}\endNode{}\Node%
666 {\def\Element%
667 {0:281}}\Node%
668 {\def\Element%
669 {0:282}}condition\endNode{}\endNode{}\Node%
670 {\def\Element%
671 {0:283}}\Node%
672 {\def\Element%
673 {0:284}}t\endNode{}\endNode{}\endNode{}
674         \endNode{}\endNode{}\Node%
675 {\def\Element%
676 {0:285}}\Node%
677 {\def\Element%
678 {0:286}}Description\endNode{}\Node%
679 {\def\Element%
680 {0:287}}This is the super-\/type of all
681           \Node%
682 {\def\Element%
683 {0:288}}\Node%
684 {\def\Element%
685 {0:289}}CLSQL\endNode{}\endNode{}-\/specific conditions that
686           represent errors, as defined by
687           \Node%
688 {\def\Element%
689 {0:290}}\Node%
690 {\def\Element%
691 {0:291}}CLSQL\endNode{}\endNode{}, or any of it's
692           database-\/specific interfaces.  There are no defined
693           initialization arguments nor any accessors.\endNode{}\endNode{}\endNode{}\Node%
694 {\def\Label%
695 {0:MAISQL-SIMPLE-ERROR}}\Node%
696 {\def\Element%
697 {0:293}}\Node%
698 {\def\Element%
699 {0:294}}CLSQL-\/SIMPLE-\/ERROR\endNode{}\Node%
700 {\def\Element%
701 {0:295}}Unspecific simple
702           \Node%
703 {\def\Element%
704 {0:296}}\Node%
705 {\def\Element%
706 {0:297}}CLSQL\endNode{}\endNode{} errors\endNode{}\Node%
707 {\def\Element%
708 {0:298}}Condition Type\endNode{}\endNode{}\Node%
709 {\def\Element%
710 {0:299}}\Node%
711 {\def\Element%
712 {0:300}}Class Precedence List\endNode{}\Node%
713 {\def\Element%
714 {0:301}}        \Node%
715 {\def\Element%
716 {0:302}}\Node%
717 {\def\Element%
718 {0:303}}\Node%
719 {\def\Element%
720 {0:304}}maisql-\/simple-\/error\endNode{}\endNode{}\Node%
721 {\def\Element%
722 {0:305}}\Node%
723 {\def\Element%
724 {0:306}}simple-\/condition\endNode{}\endNode{}\Node%
725 {\def\Element%
726 {0:307}}\Node%
727 {\def\Element%
728 {0:308}}maisql-\/error\endNode{}\endNode{}\Node%
729 {\def\Element%
730 {0:309}}\Node%
731 {\def\Element%
732 {0:310}}error\endNode{}\endNode{}\Node%
733 {\def\Element%
734 {0:311}}\Node%
735 {\def\Element%
736 {0:312}}serious-\/condition\endNode{}\endNode{}\Node%
737 {\def\Element%
738 {0:313}}\Node%
739 {\def\Element%
740 {0:314}}maisql-\/condition\endNode{}\endNode{}\Node%
741 {\def\Element%
742 {0:315}}\Node%
743 {\def\Element%
744 {0:316}}condition\endNode{}\endNode{}\Node%
745 {\def\Element%
746 {0:317}}\Node%
747 {\def\Element%
748 {0:318}}t\endNode{}\endNode{}\endNode{}
749         \endNode{}\endNode{}\Node%
750 {\def\Element%
751 {0:319}}\Node%
752 {\def\Element%
753 {0:320}}Description\endNode{}\Node%
754 {\def\Element%
755 {0:321}}This condition is used in all instances of errors, where
756           there exists no \Node%
757 {\def\Element%
758 {0:322}}\Node%
759 {\def\Element%
760 {0:323}}CLSQL\endNode{}\endNode{}-\/specific
761           condition that is more specific.  The valid initialization
762           arguments and accessors are the same as for
763           \Node%
764 {\def\Element%
765 {0:324}}simple-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
766 {\def\Label%
767 {0:MAISQL-WARNING}}\Node%
768 {\def\Element%
769 {0:326}}\Node%
770 {\def\Element%
771 {0:327}}CLSQL-\/WARNING\endNode{}\Node%
772 {\def\Element%
773 {0:328}}the super-\/type of all
774           \Node%
775 {\def\Element%
776 {0:329}}\Node%
777 {\def\Element%
778 {0:330}}CLSQL\endNode{}\endNode{}-\/specific
779           warnings\endNode{}\Node%
780 {\def\Element%
781 {0:331}}Condition Type\endNode{}\endNode{}\Node%
782 {\def\Element%
783 {0:332}}\Node%
784 {\def\Element%
785 {0:333}}Class Precedence List\endNode{}\Node%
786 {\def\Element%
787 {0:334}}        \Node%
788 {\def\Element%
789 {0:335}}\Node%
790 {\def\Element%
791 {0:336}}\Node%
792 {\def\Element%
793 {0:337}}maisql-\/warning\endNode{}\endNode{}\Node%
794 {\def\Element%
795 {0:338}}\Node%
796 {\def\Element%
797 {0:339}}warning\endNode{}\endNode{}\Node%
798 {\def\Element%
799 {0:340}}\Node%
800 {\def\Element%
801 {0:341}}maisql-\/condition\endNode{}\endNode{}\Node%
802 {\def\Element%
803 {0:342}}\Node%
804 {\def\Element%
805 {0:343}}condition\endNode{}\endNode{}\Node%
806 {\def\Element%
807 {0:344}}\Node%
808 {\def\Element%
809 {0:345}}t\endNode{}\endNode{}\endNode{}
810         \endNode{}\endNode{}\Node%
811 {\def\Element%
812 {0:346}}\Node%
813 {\def\Element%
814 {0:347}}Description\endNode{}\Node%
815 {\def\Element%
816 {0:348}}This is the super-\/type of all
817           \Node%
818 {\def\Element%
819 {0:349}}\Node%
820 {\def\Element%
821 {0:350}}CLSQL\endNode{}\endNode{}-\/specific conditions that
822           represent warnings, as defined by
823           \Node%
824 {\def\Element%
825 {0:351}}\Node%
826 {\def\Element%
827 {0:352}}CLSQL\endNode{}\endNode{}, or any of it's
828           database-\/specific interfaces.  There are no defined
829           initialization arguments nor any accessors.\endNode{}\endNode{}\endNode{}\Node%
830 {\def\Label%
831 {0:MAISQL-SIMPLE-WARNING}}\Node%
832 {\def\Element%
833 {0:354}}\Node%
834 {\def\Element%
835 {0:355}}CLSQL-\/SIMPLE-\/WARNING\endNode{}\Node%
836 {\def\Element%
837 {0:356}}Unspecific simple
838           \Node%
839 {\def\Element%
840 {0:357}}\Node%
841 {\def\Element%
842 {0:358}}CLSQL\endNode{}\endNode{} warnings\endNode{}\Node%
843 {\def\Element%
844 {0:359}}Condition Type\endNode{}\endNode{}\Node%
845 {\def\Element%
846 {0:360}}\Node%
847 {\def\Element%
848 {0:361}}Class Precedence List\endNode{}\Node%
849 {\def\Element%
850 {0:362}}        \Node%
851 {\def\Element%
852 {0:363}}\Node%
853 {\def\Element%
854 {0:364}}\Node%
855 {\def\Element%
856 {0:365}}maisql-\/simple-\/warning\endNode{}\endNode{}\Node%
857 {\def\Element%
858 {0:366}}\Node%
859 {\def\Element%
860 {0:367}}simple-\/condition\endNode{}\endNode{}\Node%
861 {\def\Element%
862 {0:368}}\Node%
863 {\def\Element%
864 {0:369}}maisql-\/warning\endNode{}\endNode{}\Node%
865 {\def\Element%
866 {0:370}}\Node%
867 {\def\Element%
868 {0:371}}warning\endNode{}\endNode{}\Node%
869 {\def\Element%
870 {0:372}}\Node%
871 {\def\Element%
872 {0:373}}maisql-\/condition\endNode{}\endNode{}\Node%
873 {\def\Element%
874 {0:374}}\Node%
875 {\def\Element%
876 {0:375}}condition\endNode{}\endNode{}\Node%
877 {\def\Element%
878 {0:376}}\Node%
879 {\def\Element%
880 {0:377}}t\endNode{}\endNode{}\endNode{}
881         \endNode{}\endNode{}\Node%
882 {\def\Element%
883 {0:378}}\Node%
884 {\def\Element%
885 {0:379}}Description\endNode{}\Node%
886 {\def\Element%
887 {0:380}}This condition is used in all instances of warnings,
888           where  there exists no
889           \Node%
890 {\def\Element%
891 {0:381}}\Node%
892 {\def\Element%
893 {0:382}}CLSQL\endNode{}\endNode{}-\/specific condition that is
894           more specific.  The valid initialization arguments and
895           accessors are the same as for
896           \Node%
897 {\def\Element%
898 {0:383}}simple-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
899 {\def\Label%
900 {0:MAISQL-INVALID-SPEC-ERROR}}\Node%
901 {\def\Element%
902 {0:385}}\Node%
903 {\def\Element%
904 {0:386}}CLSQL-\/INVALID-\/SPEC-\/ERROR\endNode{}\Node%
905 {\def\Element%
906 {0:387}}condition representing errors because of invalid
907           connection specifications\endNode{}\Node%
908 {\def\Element%
909 {0:388}}Condition Type\endNode{}\endNode{}\Node%
910 {\def\Element%
911 {0:389}}\Node%
912 {\def\Element%
913 {0:390}}Class Precedence List\endNode{}\Node%
914 {\def\Element%
915 {0:391}}        \Node%
916 {\def\Element%
917 {0:392}}\Node%
918 {\def\Element%
919 {0:393}}\Node%
920 {\def\Element%
921 {0:394}}maisql-\/invalid-\/spec-\/error\endNode{}\endNode{}\Node%
922 {\def\Element%
923 {0:395}}\Node%
924 {\def\Element%
925 {0:396}}maisql-\/error\endNode{}\endNode{}\Node%
926 {\def\Element%
927 {0:397}}\Node%
928 {\def\Element%
929 {0:398}}error\endNode{}\endNode{}\Node%
930 {\def\Element%
931 {0:399}}\Node%
932 {\def\Element%
933 {0:400}}serious-\/condition\endNode{}\endNode{}\Node%
934 {\def\Element%
935 {0:401}}\Node%
936 {\def\Element%
937 {0:402}}maisql-\/condition\endNode{}\endNode{}\Node%
938 {\def\Element%
939 {0:403}}\Node%
940 {\def\Element%
941 {0:404}}condition\endNode{}\endNode{}\Node%
942 {\def\Element%
943 {0:405}}\Node%
944 {\def\Element%
945 {0:406}}t\endNode{}\endNode{}\endNode{}
946         \endNode{}\endNode{}\Node%
947 {\def\Element%
948 {0:407}}\Node%
949 {\def\Element%
950 {0:408}}Description\endNode{}\Node%
951 {\def\Element%
952 {0:409}}This condition represents errors that occur because the
953           user supplies an invalid connection specification to either
954           \Node%
955 {\def\Element%
956 {0:410}}database-\/name-\/from-\/spec\endNode{} or
957           \Node%
958 {\def\Element%
959 {0:411}}connect\endNode{}.  The following initialization
960           arguments and accessors exist:\endNode{}\Node%
961 {\def\Element%
962 {0:412}}\Node%
963 {\def\Element%
964 {0:413}}Initarg\endNode{}\Node%
965 {\def\Element%
966 {0:414}}Accessor\endNode{}\Node%
967 {\def\Element%
968 {0:415}}Description\endNode{}\Node%
969 {\def\Element%
970 {0:416}}\Node%
971 {\def\Element%
972 {0:417}}\Node%
973 {\def\Element%
974 {0:418}}:connection-\/spec\endNode{}\endNode{}\Node%
975 {\def\Element%
976 {0:419}}\Node%
977 {\def\Element%
978 {0:420}}maisql-\/invalid-\/spec-\/error-\/connection-\/spec\endNode{}\endNode{}\Node%
979 {\def\Element%
980 {0:421}}The invalid connection specification used.\endNode{}\endNode{}\Node%
981 {\def\Element%
982 {0:422}}\Node%
983 {\def\Element%
984 {0:423}}\Node%
985 {\def\Element%
986 {0:424}}:database-\/type\endNode{}\endNode{}\Node%
987 {\def\Element%
988 {0:425}}\Node%
989 {\def\Element%
990 {0:426}}maisql-\/invalid-\/spec-\/error-\/database-\/type\endNode{}\endNode{}\Node%
991 {\def\Element%
992 {0:427}}The Database type used in the attempt.\endNode{}\endNode{}\Node%
993 {\def\Element%
994 {0:428}}\Node%
995 {\def\Element%
996 {0:429}}\Node%
997 {\def\Element%
998 {0:430}}:template\endNode{}\endNode{}\Node%
999 {\def\Element%
1000 {0:431}}\Node%
1001 {\def\Element%
1002 {0:432}}maisql-\/invalid-\/spec-\/error-\/template\endNode{}\endNode{}\Node%
1003 {\def\Element%
1004 {0:433}}An argument describing the template that a valid
1005               connection specification must match for this database type.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
1006 {\def\Label%
1007 {0:MAISQL-CONNECT-ERROR}}\Node%
1008 {\def\Element%
1009 {0:435}}\Node%
1010 {\def\Element%
1011 {0:436}}CLSQL-\/CONNECT-\/ERROR\endNode{}\Node%
1012 {\def\Element%
1013 {0:437}}condition representing errors during
1014           connection\endNode{}\Node%
1015 {\def\Element%
1016 {0:438}}Condition Type\endNode{}\endNode{}\Node%
1017 {\def\Element%
1018 {0:439}}\Node%
1019 {\def\Element%
1020 {0:440}}Class Precedence List\endNode{}\Node%
1021 {\def\Element%
1022 {0:441}}        \Node%
1023 {\def\Element%
1024 {0:442}}\Node%
1025 {\def\Element%
1026 {0:443}}\Node%
1027 {\def\Element%
1028 {0:444}}maisql-\/connect-\/error\endNode{}\endNode{}\Node%
1029 {\def\Element%
1030 {0:445}}\Node%
1031 {\def\Element%
1032 {0:446}}maisql-\/error\endNode{}\endNode{}\Node%
1033 {\def\Element%
1034 {0:447}}\Node%
1035 {\def\Element%
1036 {0:448}}error\endNode{}\endNode{}\Node%
1037 {\def\Element%
1038 {0:449}}\Node%
1039 {\def\Element%
1040 {0:450}}serious-\/condition\endNode{}\endNode{}\Node%
1041 {\def\Element%
1042 {0:451}}\Node%
1043 {\def\Element%
1044 {0:452}}maisql-\/condition\endNode{}\endNode{}\Node%
1045 {\def\Element%
1046 {0:453}}\Node%
1047 {\def\Element%
1048 {0:454}}condition\endNode{}\endNode{}\Node%
1049 {\def\Element%
1050 {0:455}}\Node%
1051 {\def\Element%
1052 {0:456}}t\endNode{}\endNode{}\endNode{}
1053         \endNode{}\endNode{}\Node%
1054 {\def\Element%
1055 {0:457}}\Node%
1056 {\def\Element%
1057 {0:458}}Description\endNode{}\Node%
1058 {\def\Element%
1059 {0:459}}This condition represents errors that occur while trying 
1060           to connect to a database.  The following initialization
1061           arguments and accessors exist:\endNode{}\Node%
1062 {\def\Element%
1063 {0:460}}\Node%
1064 {\def\Element%
1065 {0:461}}Initarg\endNode{}\Node%
1066 {\def\Element%
1067 {0:462}}Accessor\endNode{}\Node%
1068 {\def\Element%
1069 {0:463}}Description\endNode{}\Node%
1070 {\def\Element%
1071 {0:464}}\Node%
1072 {\def\Element%
1073 {0:465}}\Node%
1074 {\def\Element%
1075 {0:466}}:database-\/type\endNode{}\endNode{}\Node%
1076 {\def\Element%
1077 {0:467}}\Node%
1078 {\def\Element%
1079 {0:468}}maisql-\/connect-\/error-\/database-\/type\endNode{}\endNode{}\Node%
1080 {\def\Element%
1081 {0:469}}Database type for the connection attempt\endNode{}\endNode{}\Node%
1082 {\def\Element%
1083 {0:470}}\Node%
1084 {\def\Element%
1085 {0:471}}\Node%
1086 {\def\Element%
1087 {0:472}}:connection-\/spec\endNode{}\endNode{}\Node%
1088 {\def\Element%
1089 {0:473}}\Node%
1090 {\def\Element%
1091 {0:474}}maisql-\/connect-\/error-\/connection-\/spec\endNode{}\endNode{}\Node%
1092 {\def\Element%
1093 {0:475}}The connection specification used in the
1094               connection attempt.\endNode{}\endNode{}\Node%
1095 {\def\Element%
1096 {0:476}}\Node%
1097 {\def\Element%
1098 {0:477}}\Node%
1099 {\def\Element%
1100 {0:478}}:errno\endNode{}\endNode{}\Node%
1101 {\def\Element%
1102 {0:479}}\Node%
1103 {\def\Element%
1104 {0:480}}maisql-\/connect-\/error-\/errno\endNode{}\endNode{}\Node%
1105 {\def\Element%
1106 {0:481}}The numeric or symbolic error specification
1107               returned by the database back-\/end.  The values and
1108               semantics of this are interface specific.\endNode{}\endNode{}\Node%
1109 {\def\Element%
1110 {0:482}}\Node%
1111 {\def\Element%
1112 {0:483}}\Node%
1113 {\def\Element%
1114 {0:484}}:error\endNode{}\endNode{}\Node%
1115 {\def\Element%
1116 {0:485}}\Node%
1117 {\def\Element%
1118 {0:486}}maisql-\/connect-\/error-\/error\endNode{}\endNode{}\Node%
1119 {\def\Element%
1120 {0:487}}A string describing the problem that occurred,
1121               possibly one returned by the database back-\/end.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
1122 {\def\Label%
1123 {0:MAISQL-SQL-ERROR}}\Node%
1124 {\def\Element%
1125 {0:489}}\Node%
1126 {\def\Element%
1127 {0:490}}CLSQL-\/SQL-\/ERROR\endNode{}\Node%
1128 {\def\Element%
1129 {0:491}}condition representing errors during query or
1130           command execution\endNode{}\Node%
1131 {\def\Element%
1132 {0:492}}Condition Type\endNode{}\endNode{}\Node%
1133 {\def\Element%
1134 {0:493}}\Node%
1135 {\def\Element%
1136 {0:494}}Class Precedence List\endNode{}\Node%
1137 {\def\Element%
1138 {0:495}}        \Node%
1139 {\def\Element%
1140 {0:496}}\Node%
1141 {\def\Element%
1142 {0:497}}\Node%
1143 {\def\Element%
1144 {0:498}}maisql-\/sql-\/error\endNode{}\endNode{}\Node%
1145 {\def\Element%
1146 {0:499}}\Node%
1147 {\def\Element%
1148 {0:500}}maisql-\/error\endNode{}\endNode{}\Node%
1149 {\def\Element%
1150 {0:501}}\Node%
1151 {\def\Element%
1152 {0:502}}error\endNode{}\endNode{}\Node%
1153 {\def\Element%
1154 {0:503}}\Node%
1155 {\def\Element%
1156 {0:504}}serious-\/condition\endNode{}\endNode{}\Node%
1157 {\def\Element%
1158 {0:505}}\Node%
1159 {\def\Element%
1160 {0:506}}maisql-\/condition\endNode{}\endNode{}\Node%
1161 {\def\Element%
1162 {0:507}}\Node%
1163 {\def\Element%
1164 {0:508}}condition\endNode{}\endNode{}\Node%
1165 {\def\Element%
1166 {0:509}}\Node%
1167 {\def\Element%
1168 {0:510}}t\endNode{}\endNode{}\endNode{}
1169         \endNode{}\endNode{}\Node%
1170 {\def\Element%
1171 {0:511}}\Node%
1172 {\def\Element%
1173 {0:512}}Description\endNode{}\Node%
1174 {\def\Element%
1175 {0:513}}This condition represents errors that occur while
1176         executing SQL statements, either as part of query operations
1177         or command execution, either explicitly or implicitly, as
1178           caused e.g. by \Node%
1179 {\def\Element%
1180 {0:514}}with-\/transaction\endNode{}.
1181           The following initialization arguments and accessors exist:\endNode{}\Node%
1182 {\def\Element%
1183 {0:515}}\Node%
1184 {\def\Element%
1185 {0:516}}Initarg\endNode{}\Node%
1186 {\def\Element%
1187 {0:517}}Accessor\endNode{}\Node%
1188 {\def\Element%
1189 {0:518}}Description\endNode{}\Node%
1190 {\def\Element%
1191 {0:519}}\Node%
1192 {\def\Element%
1193 {0:520}}\Node%
1194 {\def\Element%
1195 {0:521}}:database\endNode{}\endNode{}\Node%
1196 {\def\Element%
1197 {0:522}}\Node%
1198 {\def\Element%
1199 {0:523}}maisql-\/sql-\/error-\/database\endNode{}\endNode{}\Node%
1200 {\def\Element%
1201 {0:524}}The database object that was involved in the
1202               incident.\endNode{}\endNode{}\Node%
1203 {\def\Element%
1204 {0:525}}\Node%
1205 {\def\Element%
1206 {0:526}}\Node%
1207 {\def\Element%
1208 {0:527}}:expression\endNode{}\endNode{}\Node%
1209 {\def\Element%
1210 {0:528}}\Node%
1211 {\def\Element%
1212 {0:529}}maisql-\/sql-\/error-\/expression\endNode{}\endNode{}\Node%
1213 {\def\Element%
1214 {0:530}}The SQL expression whose execution caused the error.\endNode{}\endNode{}\Node%
1215 {\def\Element%
1216 {0:531}}\Node%
1217 {\def\Element%
1218 {0:532}}\Node%
1219 {\def\Element%
1220 {0:533}}:errno\endNode{}\endNode{}\Node%
1221 {\def\Element%
1222 {0:534}}\Node%
1223 {\def\Element%
1224 {0:535}}maisql-\/sql-\/error-\/errno\endNode{}\endNode{}\Node%
1225 {\def\Element%
1226 {0:536}}The numeric or symbolic error specification
1227               returned by the database back-\/end.  The values and
1228               semantics of this are interface specific.\endNode{}\endNode{}\Node%
1229 {\def\Element%
1230 {0:537}}\Node%
1231 {\def\Element%
1232 {0:538}}\Node%
1233 {\def\Element%
1234 {0:539}}:error\endNode{}\endNode{}\Node%
1235 {\def\Element%
1236 {0:540}}\Node%
1237 {\def\Element%
1238 {0:541}}maisql-\/sql-\/error-\/error\endNode{}\endNode{}\Node%
1239 {\def\Element%
1240 {0:542}}A string describing the problem that occurred,
1241               possibly one returned by the database back-\/end.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
1242 {\def\Label%
1243 {0:MAISQL-EXISTS-CONDITION}}\Node%
1244 {\def\Element%
1245 {0:544}}\Node%
1246 {\def\Element%
1247 {0:545}}CLSQL-\/EXISTS-\/CONDITION\endNode{}\Node%
1248 {\def\Element%
1249 {0:546}}condition indicating situations arising because of 
1250           existing connections\endNode{}\Node%
1251 {\def\Element%
1252 {0:547}}Condition Type\endNode{}\endNode{}\Node%
1253 {\def\Element%
1254 {0:548}}\Node%
1255 {\def\Element%
1256 {0:549}}Class Precedence List\endNode{}\Node%
1257 {\def\Element%
1258 {0:550}}        \Node%
1259 {\def\Element%
1260 {0:551}}\Node%
1261 {\def\Element%
1262 {0:552}}\Node%
1263 {\def\Element%
1264 {0:553}}maisql-\/exists-\/condition\endNode{}\endNode{}\Node%
1265 {\def\Element%
1266 {0:554}}\Node%
1267 {\def\Element%
1268 {0:555}}maisql-\/condition\endNode{}\endNode{}\Node%
1269 {\def\Element%
1270 {0:556}}\Node%
1271 {\def\Element%
1272 {0:557}}condition\endNode{}\endNode{}\Node%
1273 {\def\Element%
1274 {0:558}}\Node%
1275 {\def\Element%
1276 {0:559}}t\endNode{}\endNode{}\endNode{}
1277         \endNode{}\endNode{}\Node%
1278 {\def\Element%
1279 {0:560}}\Node%
1280 {\def\Element%
1281 {0:561}}Description\endNode{}\Node%
1282 {\def\Element%
1283 {0:562}}This condition is the super-\/type of all conditions which
1284           represents problems that occur during calls to
1285           \Node%
1286 {\def\Element%
1287 {0:563}}connect\endNode{}, if a connection to the
1288           database exists already.  Depending on the value of
1289           \Node%
1290 {\def\Element%
1291 {0:564}}if-\/exists\endNode{} to the call of
1292           \Node%
1293 {\def\Element%
1294 {0:565}}connect\endNode{}, either a warning, an error or
1295           no condition at all is signalled.  If a warning or error is
1296           signalled, either
1297           \Node%
1298 {\def\Element%
1299 {0:566}}maisql-\/exists-\/warning\endNode{} or
1300           \Node%
1301 {\def\Element%
1302 {0:567}}maisql-\/exists-\/error\endNode{} is signalled,
1303           which are subtypes of
1304           \Node%
1305 {\def\Element%
1306 {0:568}}maisql-\/exists-\/condition\endNode{} and
1307           \Node%
1308 {\def\Element%
1309 {0:569}}maisql-\/warning\endNode{} or
1310           \Node%
1311 {\def\Element%
1312 {0:570}}maisql-\/error\endNode{}.
1313           \Node%
1314 {\def\Element%
1315 {0:571}}maisql-\/exists-\/condition\endNode{} is never
1316           signalled itself.\endNode{}\Node%
1317 {\def\Element%
1318 {0:572}}          The following initialization arguments and accessors exist:\endNode{}\Node%
1319 {\def\Element%
1320 {0:573}}\Node%
1321 {\def\Element%
1322 {0:574}}Initarg\endNode{}\Node%
1323 {\def\Element%
1324 {0:575}}Accessor\endNode{}\Node%
1325 {\def\Element%
1326 {0:576}}Description\endNode{}\Node%
1327 {\def\Element%
1328 {0:577}}\Node%
1329 {\def\Element%
1330 {0:578}}\Node%
1331 {\def\Element%
1332 {0:579}}:old-\/db\endNode{}\endNode{}\Node%
1333 {\def\Element%
1334 {0:580}}\Node%
1335 {\def\Element%
1336 {0:581}}maisql-\/exists-\/condition-\/old-\/db\endNode{}\endNode{}\Node%
1337 {\def\Element%
1338 {0:582}}The database object that represents the existing
1339               connection.  This slot is always filled.\endNode{}\endNode{}\Node%
1340 {\def\Element%
1341 {0:583}}\Node%
1342 {\def\Element%
1343 {0:584}}\Node%
1344 {\def\Element%
1345 {0:585}}:new-\/db\endNode{}\endNode{}\Node%
1346 {\def\Element%
1347 {0:586}}\Node%
1348 {\def\Element%
1349 {0:587}}maisql-\/exists-\/condition-\/new-\/db\endNode{}\endNode{}\Node%
1350 {\def\Element%
1351 {0:588}}The database object that will be used and returned by 
1352               this call to connect, if execution continues normally.
1353               This can be either \Node%
1354 {\def\Element%
1355 {0:589}}nil\endNode{}, indicating that 
1356               a new database object is to be created on continuation,
1357               or a database object representing the newly created
1358               continuation, or the same database object as
1359               \Node%
1360 {\def\Element%
1361 {0:590}}old-\/db\endNode{}, indicating that the existing
1362               database object will be reused.  This slot is always
1363               filled and defaults to \Node%
1364 {\def\Element%
1365 {0:591}}nil\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
1366 {\def\Label%
1367 {0:MAISQL-EXISTS-WARNING}}\Node%
1368 {\def\Element%
1369 {0:593}}\Node%
1370 {\def\Element%
1371 {0:594}}CLSQL-\/EXISTS-\/WARNING\endNode{}\Node%
1372 {\def\Element%
1373 {0:595}}condition representing warnings arising because of 
1374           existing connections\endNode{}\Node%
1375 {\def\Element%
1376 {0:596}}Condition Type\endNode{}\endNode{}\Node%
1377 {\def\Element%
1378 {0:597}}\Node%
1379 {\def\Element%
1380 {0:598}}Class Precedence List\endNode{}\Node%
1381 {\def\Element%
1382 {0:599}}        \Node%
1383 {\def\Element%
1384 {0:600}}\Node%
1385 {\def\Element%
1386 {0:601}}\Node%
1387 {\def\Element%
1388 {0:602}}maisql-\/exists-\/warning\endNode{}\endNode{}\Node%
1389 {\def\Element%
1390 {0:603}}\Node%
1391 {\def\Element%
1392 {0:604}}maisql-\/exists-\/condition\endNode{}\endNode{}\Node%
1393 {\def\Element%
1394 {0:605}}\Node%
1395 {\def\Element%
1396 {0:606}}maisql-\/warning\endNode{}\endNode{}\Node%
1397 {\def\Element%
1398 {0:607}}\Node%
1399 {\def\Element%
1400 {0:608}}warning\endNode{}\endNode{}\Node%
1401 {\def\Element%
1402 {0:609}}\Node%
1403 {\def\Element%
1404 {0:610}}maisql-\/condition\endNode{}\endNode{}\Node%
1405 {\def\Element%
1406 {0:611}}\Node%
1407 {\def\Element%
1408 {0:612}}condition\endNode{}\endNode{}\Node%
1409 {\def\Element%
1410 {0:613}}\Node%
1411 {\def\Element%
1412 {0:614}}t\endNode{}\endNode{}\endNode{}
1413         \endNode{}\endNode{}\Node%
1414 {\def\Element%
1415 {0:615}}\Node%
1416 {\def\Element%
1417 {0:616}}Description\endNode{}\Node%
1418 {\def\Element%
1419 {0:617}}This condition is a subtype of
1420         \Node%
1421 {\def\Element%
1422 {0:618}}maisql-\/exists-\/condition\endNode{}, and is
1423           signalled during calls to \Node%
1424 {\def\Element%
1425 {0:619}}connect\endNode{} when
1426           there is an existing connection, and
1427           \Node%
1428 {\def\Element%
1429 {0:620}}if-\/exists\endNode{} is either
1430           \Node%
1431 {\def\Element%
1432 {0:621}}:warn-\/new\endNode{} or \Node%
1433 {\def\Element%
1434 {0:622}}:warn-\/old\endNode{}.
1435           In the former case, \Node%
1436 {\def\Element%
1437 {0:623}}new-\/db\endNode{} will be the
1438           newly created database object, in the latter case it will be 
1439           the existing old database object.\endNode{}\Node%
1440 {\def\Element%
1441 {0:624}}          The initialization arguments and accessors are the same as
1442           for \Node%
1443 {\def\Element%
1444 {0:625}}maisql-\/exists-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
1445 {\def\Label%
1446 {0:MAISQL-EXISTS-ERROR}}\Node%
1447 {\def\Element%
1448 {0:627}}\Node%
1449 {\def\Element%
1450 {0:628}}CLSQL-\/EXISTS-\/ERROR\endNode{}\Node%
1451 {\def\Element%
1452 {0:629}}condition representing errors arising because of 
1453           existing connections\endNode{}\Node%
1454 {\def\Element%
1455 {0:630}}Condition Type\endNode{}\endNode{}\Node%
1456 {\def\Element%
1457 {0:631}}\Node%
1458 {\def\Element%
1459 {0:632}}Class Precedence List\endNode{}\Node%
1460 {\def\Element%
1461 {0:633}}        \Node%
1462 {\def\Element%
1463 {0:634}}\Node%
1464 {\def\Element%
1465 {0:635}}\Node%
1466 {\def\Element%
1467 {0:636}}maisql-\/exists-\/error\endNode{}\endNode{}\Node%
1468 {\def\Element%
1469 {0:637}}\Node%
1470 {\def\Element%
1471 {0:638}}maisql-\/exists-\/condition\endNode{}\endNode{}\Node%
1472 {\def\Element%
1473 {0:639}}\Node%
1474 {\def\Element%
1475 {0:640}}maisql-\/error\endNode{}\endNode{}\Node%
1476 {\def\Element%
1477 {0:641}}\Node%
1478 {\def\Element%
1479 {0:642}}error\endNode{}\endNode{}\Node%
1480 {\def\Element%
1481 {0:643}}\Node%
1482 {\def\Element%
1483 {0:644}}serious-\/condition\endNode{}\endNode{}\Node%
1484 {\def\Element%
1485 {0:645}}\Node%
1486 {\def\Element%
1487 {0:646}}maisql-\/condition\endNode{}\endNode{}\Node%
1488 {\def\Element%
1489 {0:647}}\Node%
1490 {\def\Element%
1491 {0:648}}condition\endNode{}\endNode{}\Node%
1492 {\def\Element%
1493 {0:649}}\Node%
1494 {\def\Element%
1495 {0:650}}t\endNode{}\endNode{}\endNode{}
1496         \endNode{}\endNode{}\Node%
1497 {\def\Element%
1498 {0:651}}\Node%
1499 {\def\Element%
1500 {0:652}}Description\endNode{}\Node%
1501 {\def\Element%
1502 {0:653}}This condition is a subtype of
1503         \Node%
1504 {\def\Element%
1505 {0:654}}maisql-\/exists-\/condition\endNode{}, and is
1506           signalled during calls to \Node%
1507 {\def\Element%
1508 {0:655}}connect\endNode{} when
1509           there is an existing connection, and
1510           \Node%
1511 {\def\Element%
1512 {0:656}}if-\/exists\endNode{} is \Node%
1513 {\def\Element%
1514 {0:657}}:error\endNode{}.
1515           In this case, \Node%
1516 {\def\Element%
1517 {0:658}}new-\/db\endNode{} will be
1518           \Node%
1519 {\def\Element%
1520 {0:659}}nil\endNode{}, indicating that the database object to 
1521           be returned by \Node%
1522 {\def\Element%
1523 {0:660}}connect\endNode{} depends on user
1524           action in continuing from this correctable error.\endNode{}\Node%
1525 {\def\Element%
1526 {0:661}}          The initialization arguments and accessors are the same as
1527           for \Node%
1528 {\def\Element%
1529 {0:662}}maisql-\/exists-\/condition\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
1530 {\def\Label%
1531 {0:MAISQL-CLOSED-ERROR}}\Node%
1532 {\def\Element%
1533 {0:664}}\Node%
1534 {\def\Element%
1535 {0:665}}CLSQL-\/CLOSED-\/ERROR\endNode{}\Node%
1536 {\def\Element%
1537 {0:666}}condition representing errors because the database 
1538           has already been closed\endNode{}\Node%
1539 {\def\Element%
1540 {0:667}}Condition Type\endNode{}\endNode{}\Node%
1541 {\def\Element%
1542 {0:668}}\Node%
1543 {\def\Element%
1544 {0:669}}Class Precedence List\endNode{}\Node%
1545 {\def\Element%
1546 {0:670}}        \Node%
1547 {\def\Element%
1548 {0:671}}\Node%
1549 {\def\Element%
1550 {0:672}}\Node%
1551 {\def\Element%
1552 {0:673}}maisql-\/closed-\/error\endNode{}\endNode{}\Node%
1553 {\def\Element%
1554 {0:674}}\Node%
1555 {\def\Element%
1556 {0:675}}maisql-\/error\endNode{}\endNode{}\Node%
1557 {\def\Element%
1558 {0:676}}\Node%
1559 {\def\Element%
1560 {0:677}}error\endNode{}\endNode{}\Node%
1561 {\def\Element%
1562 {0:678}}\Node%
1563 {\def\Element%
1564 {0:679}}serious-\/condition\endNode{}\endNode{}\Node%
1565 {\def\Element%
1566 {0:680}}\Node%
1567 {\def\Element%
1568 {0:681}}maisql-\/condition\endNode{}\endNode{}\Node%
1569 {\def\Element%
1570 {0:682}}\Node%
1571 {\def\Element%
1572 {0:683}}condition\endNode{}\endNode{}\Node%
1573 {\def\Element%
1574 {0:684}}\Node%
1575 {\def\Element%
1576 {0:685}}t\endNode{}\endNode{}\endNode{}
1577         \endNode{}\endNode{}\Node%
1578 {\def\Element%
1579 {0:686}}\Node%
1580 {\def\Element%
1581 {0:687}}Description\endNode{}\Node%
1582 {\def\Element%
1583 {0:688}}This condition represents errors that occur because the
1584           user invokes an operation on the given database object,
1585           although the database is invalid because
1586           \Node%
1587 {\def\Element%
1588 {0:689}}disconnect\endNode{} has already been called on
1589           this database object.\endNode{}\Node%
1590 {\def\Element%
1591 {0:690}}Functions which signal this error when called with a
1592           closed database will usually provide a
1593           \Node%
1594 {\def\Element%
1595 {0:691}}continue\endNode{} restart, that will just return nil 
1596           from the function.\endNode{}\Node%
1597 {\def\Element%
1598 {0:692}}          The following initialization arguments and accessors exist:\endNode{}\Node%
1599 {\def\Element%
1600 {0:693}}\Node%
1601 {\def\Element%
1602 {0:694}}Initarg\endNode{}\Node%
1603 {\def\Element%
1604 {0:695}}Accessor\endNode{}\Node%
1605 {\def\Element%
1606 {0:696}}Description\endNode{}\Node%
1607 {\def\Element%
1608 {0:697}}\Node%
1609 {\def\Element%
1610 {0:698}}\Node%
1611 {\def\Element%
1612 {0:699}}:database\endNode{}\endNode{}\Node%
1613 {\def\Element%
1614 {0:700}}\Node%
1615 {\def\Element%
1616 {0:701}}maisql-\/closed-\/error-\/database\endNode{}\endNode{}\Node%
1617 {\def\Element%
1618 {0:702}}The database object that was involved in the
1619               incident.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
1620 {\def\Label%
1621 {0:DEFAULT-DATABASE-TYPE}}\Node%
1622 {\def\Element%
1623 {0:704}}\Node%
1624 {\def\Element%
1625 {0:705}}*DEFAULT-\/DATABASE-\/TYPE*\endNode{}\Node%
1626 {\def\Element%
1627 {0:706}}The default database type to use\endNode{}\Node%
1628 {\def\Element%
1629 {0:707}}Variable\endNode{}\endNode{}\Node%
1630 {\def\Element%
1631 {0:708}}\Node%
1632 {\def\Element%
1633 {0:709}}Value Type\endNode{}\Node%
1634 {\def\Element%
1635 {0:710}}Any keyword representing a valid database back-\/end of
1636           \Node%
1637 {\def\Element%
1638 {0:711}}\Node%
1639 {\def\Element%
1640 {0:712}}CLSQL\endNode{}\endNode{}, or
1641           \Node%
1642 {\def\Element%
1643 {0:713}}nil\endNode{}.\endNode{}\endNode{}\Node%
1644 {\def\Element%
1645 {0:714}}\Node%
1646 {\def\Element%
1647 {0:715}}Initial Value\endNode{}\Node%
1648 {\def\Element%
1649 {0:716}}\Node%
1650 {\def\Element%
1651 {0:717}}nil\endNode{}\endNode{}\endNode{}\Node%
1652 {\def\Element%
1653 {0:718}}\Node%
1654 {\def\Element%
1655 {0:719}}Description\endNode{}\Node%
1656 {\def\Element%
1657 {0:720}}The value of this variable is used in calls to
1658           \Node%
1659 {\def\Element%
1660 {0:721}}initialize-\/database-\/type\endNode{} and
1661           \Node%
1662 {\def\Element%
1663 {0:722}}connect\endNode{} as the default
1664           value of the \Node%
1665 {\def\Element%
1666 {0:723}}database-\/type\endNode{}
1667           parameter.\endNode{}\Node%
1668 {\def\Element%
1669 {0:724}}\Node%
1670 {\def\Element%
1671 {0:725}}If the value of this variable is \Node%
1672 {\def\Element%
1673 {0:726}}nil\endNode{},
1674             then all calls to
1675             \Node%
1676 {\def\Element%
1677 {0:727}}initialize-\/database-\/type\endNode{} or
1678             \Node%
1679 {\def\Element%
1680 {0:728}}connect\endNode{} will have to specify the
1681             \Node%
1682 {\def\Element%
1683 {0:729}}database-\/type\endNode{} to use, or a
1684             general-\/purpose error will be signalled.\endNode{}\endNode{}\endNode{}\Node%
1685 {\def\Element%
1686 {0:730}}\Node%
1687 {\def\Element%
1688 {0:731}}Examples\endNode{}\Node%
1689 {\def\Element%
1690 {0:732}}(setf *default-\/database-\/type* :mysql)
1691 =>\/ :mysql
1692 (initialize-\/database-\/type)
1693 =>\/ t
1694         \endNode{}\endNode{}\Node%
1695 {\def\Element%
1696 {0:733}}\Node%
1697 {\def\Element%
1698 {0:734}}Affected By\endNode{}\Node%
1699 {\def\Element%
1700 {0:735}}None.\endNode{}\endNode{}\Node%
1701 {\def\Element%
1702 {0:736}}\Node%
1703 {\def\Element%
1704 {0:737}}See Also\endNode{}\Node%
1705 {\def\Element%
1706 {0:738}}None.\endNode{}\endNode{}\Node%
1707 {\def\Element%
1708 {0:739}}\Node%
1709 {\def\Element%
1710 {0:740}}Notes\endNode{}\Node%
1711 {\def\Element%
1712 {0:741}}None.\endNode{}\endNode{}\endNode{}\Node%
1713 {\def\Label%
1714 {0:INITIALIZED-DATABASE-TYPES}}\Node%
1715 {\def\Element%
1716 {0:743}}\Node%
1717 {\def\Element%
1718 {0:744}}*INITIALIZED-\/DATABASE-\/TYPES*\endNode{}\Node%
1719 {\def\Element%
1720 {0:745}}List of all initialized database types\endNode{}\Node%
1721 {\def\Element%
1722 {0:746}}Variable\endNode{}\endNode{}\Node%
1723 {\def\Element%
1724 {0:747}}\Node%
1725 {\def\Element%
1726 {0:748}}Value Type\endNode{}\Node%
1727 {\def\Element%
1728 {0:749}}A list of all initialized database types, each of which
1729           represented by it's corresponding keyword.\endNode{}\endNode{}\Node%
1730 {\def\Element%
1731 {0:750}}\Node%
1732 {\def\Element%
1733 {0:751}}Initial Value\endNode{}\Node%
1734 {\def\Element%
1735 {0:752}}\Node%
1736 {\def\Element%
1737 {0:753}}nil\endNode{}\endNode{}\endNode{}\Node%
1738 {\def\Element%
1739 {0:754}}\Node%
1740 {\def\Element%
1741 {0:755}}Description\endNode{}\Node%
1742 {\def\Element%
1743 {0:756}}This variable is updated whenever
1744           \Node%
1745 {\def\Element%
1746 {0:757}}initialize-\/database-\/type\endNode{} is called for a
1747           database type which hasn't already been initialized before,
1748           as determined by this variable.  In that case the keyword
1749           representing the database type is pushed onto the list
1750           stored in
1751           \Node%
1752 {\def\Element%
1753 {0:758}}*INITIALIZED-\/DATABASE-\/TYPES*\endNode{}.\endNode{}\Node%
1754 {\def\Element%
1755 {0:759}}\Node%
1756 {\def\Element%
1757 {0:760}}Attempts to modify the value of this variable will
1758             result in undefined behaviour.\endNode{}\endNode{}\endNode{}\Node%
1759 {\def\Element%
1760 {0:761}}\Node%
1761 {\def\Element%
1762 {0:762}}Examples\endNode{}\Node%
1763 {\def\Element%
1764 {0:763}}(setf *default-\/database-\/type* :mysql)
1765 =>\/ :mysql
1766 (initialize-\/database-\/type)
1767 =>\/ t
1768 *initialized-\/database-\/types*
1769 =>\/ (:MYSQL)
1770         \endNode{}\endNode{}\Node%
1771 {\def\Element%
1772 {0:764}}\Node%
1773 {\def\Element%
1774 {0:765}}Affected By\endNode{}\Node%
1775 {\def\Element%
1776 {0:766}}        \Node%
1777 {\def\Element%
1778 {0:767}}\Node%
1779 {\def\Element%
1780 {0:768}}\Node%
1781 {\def\Element%
1782 {0:769}}initialize-\/database-\/type\endNode{}\endNode{}\endNode{}
1783         \endNode{}\endNode{}\Node%
1784 {\def\Element%
1785 {0:770}}\Node%
1786 {\def\Element%
1787 {0:771}}See Also\endNode{}\Node%
1788 {\def\Element%
1789 {0:772}}None.\endNode{}\endNode{}\Node%
1790 {\def\Element%
1791 {0:773}}\Node%
1792 {\def\Element%
1793 {0:774}}Notes\endNode{}\Node%
1794 {\def\Element%
1795 {0:775}}Direct access to this variable is primarily provided
1796           because of compatibility with Harlequin's \Node%
1797 {\def\Element%
1798 {0:776}}Common
1799             SQL\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
1800 {\def\Label%
1801 {0:INITIALIZE-DATABASE-TYPE}}\Node%
1802 {\def\Element%
1803 {0:778}}\Node%
1804 {\def\Element%
1805 {0:779}}INITIALIZE-\/DATABASE-\/TYPE\endNode{}\Node%
1806 {\def\Element%
1807 {0:780}}Initializes a database type\endNode{}\Node%
1808 {\def\Element%
1809 {0:781}}Function\endNode{}\endNode{}\Node%
1810 {\def\Element%
1811 {0:782}}\Node%
1812 {\def\Element%
1813 {0:783}}Syntax\endNode{}\Node%
1814 {\def\Element%
1815 {0:784}}\Node%
1816 {\def\Element%
1817 {0:785}}initialize-\/database-\/type\endNode{}  \Entity{amp}key \Node%
1818 {\def\Element%
1819 {0:786}}database-\/type\endNode{} =>\/ \Node%
1820 {\def\Element%
1821 {0:787}}result\endNode{}\endNode{}\endNode{}\Node%
1822 {\def\Element%
1823 {0:788}}\Node%
1824 {\def\Element%
1825 {0:789}}Arguments and Values\endNode{}\Node%
1826 {\def\Element%
1827 {0:790}}\Node%
1828 {\def\Element%
1829 {0:791}}\Node%
1830 {\def\Element%
1831 {0:792}}\Node%
1832 {\def\Element%
1833 {0:793}}database-\/type\endNode{}\endNode{}\Node%
1834 {\def\Element%
1835 {0:794}}\Node%
1836 {\def\Element%
1837 {0:795}}The database type to initialize, i.e. a keyword
1838                 symbol denoting a known database back-\/end.  Defaults to
1839                 the value of
1840                 \Node%
1841 {\def\Element%
1842 {0:796}}*default-\/database-\/type*\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
1843 {\def\Element%
1844 {0:797}}\Node%
1845 {\def\Element%
1846 {0:798}}\Node%
1847 {\def\Element%
1848 {0:799}}result\endNode{}\endNode{}\Node%
1849 {\def\Element%
1850 {0:800}}\Node%
1851 {\def\Element%
1852 {0:801}}Either \Node%
1853 {\def\Element%
1854 {0:802}}nil\endNode{} if the initialization
1855                 attempt fails, or \Node%
1856 {\def\Element%
1857 {0:803}}t\endNode{} otherwise.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
1858 {\def\Element%
1859 {0:804}}\Node%
1860 {\def\Element%
1861 {0:805}}Description\endNode{}\Node%
1862 {\def\Element%
1863 {0:806}}If the back-\/end specified by
1864         \Node%
1865 {\def\Element%
1866 {0:807}}database-\/type\endNode{} has not already been
1867           initialized, as seen from
1868           \Node%
1869 {\def\Element%
1870 {0:808}}*initialized-\/database-\/types*\endNode{}, an attempt is 
1871           made to initialize the database.  If this attempt succeeds,
1872           or the back-\/end has already been initialized, the function
1873           returns t, and places the keyword denoting the database type 
1874           onto the list stored in
1875           \Node%
1876 {\def\Element%
1877 {0:809}}*initialized-\/database-\/types*\endNode{}, if not
1878           already present.\endNode{}\Node%
1879 {\def\Element%
1880 {0:810}}If initialization fails, the function returns
1881           \Node%
1882 {\def\Element%
1883 {0:811}}nil\endNode{}, and/or signals an error of type
1884           \Node%
1885 {\def\Element%
1886 {0:812}}maisql-\/error\endNode{}.  The kind of action
1887           taken depends on the back-\/end and the cause of the
1888           problem.\endNode{}\endNode{}\Node%
1889 {\def\Element%
1890 {0:813}}\Node%
1891 {\def\Element%
1892 {0:814}}Examples\endNode{}\Node%
1893 {\def\Element%
1894 {0:815}}*initialized-\/database-\/types*
1895 =>\/ NIL
1896 (setf *default-\/database-\/type* :mysql)
1897 =>\/ :MYSQL
1898 (initialize-\/database-\/type)
1899 >\/>\/ Compiling LAMBDA (\#:G897 \#:G898 \#:G901 \#:G902): 
1900 >\/>\/ Compiling Top-\/Level Form: 
1901 >\/>\/ 
1902 =>\/ T
1903 *initialized-\/database-\/types*
1904 =>\/ (:MYSQL)
1905 (initialize-\/database-\/type)
1906 =>\/ T
1907 *initialized-\/database-\/types*
1908 =>\/ (:MYSQL)
1909         \endNode{}\endNode{}\Node%
1910 {\def\Element%
1911 {0:816}}\Node%
1912 {\def\Element%
1913 {0:817}}Side Effects\endNode{}\Node%
1914 {\def\Element%
1915 {0:818}}The database back-\/end corresponding to the database type
1916           specified is initialized, unless it has already been
1917           initialized.  This can involve any number of other side
1918           effects, as determined by the back-\/end implementation (like
1919           e.g. loading of foreign code, calling of foreign code,
1920           networking operations, etc.).  If initialization is
1921           attempted and succeeds, the
1922           \Node%
1923 {\def\Element%
1924 {0:819}}database-\/type\endNode{} is pushed onto the list 
1925           stored in
1926           \Node%
1927 {\def\Element%
1928 {0:820}}*initialized-\/database-\/types*\endNode{}.\endNode{}\endNode{}\Node%
1929 {\def\Element%
1930 {0:821}}\Node%
1931 {\def\Element%
1932 {0:822}}Affected by\endNode{}\Node%
1933 {\def\Element%
1934 {0:823}}        \Node%
1935 {\def\Element%
1936 {0:824}}\Node%
1937 {\def\Element%
1938 {0:825}}\Node%
1939 {\def\Element%
1940 {0:826}}*default-\/database-\/type*\endNode{}\endNode{}\Node%
1941 {\def\Element%
1942 {0:827}}\Node%
1943 {\def\Element%
1944 {0:828}}*initialized-\/database-\/types*\endNode{}\endNode{}\endNode{}
1945         \endNode{}\endNode{}\Node%
1946 {\def\Element%
1947 {0:829}}\Node%
1948 {\def\Element%
1949 {0:830}}Exceptional Situations\endNode{}\Node%
1950 {\def\Element%
1951 {0:831}}If an error is encountered during the initialization
1952           attempt, the back-\/end may signal errors of kind
1953           \Node%
1954 {\def\Element%
1955 {0:832}}maisql-\/error\endNode{}.\endNode{}\endNode{}\Node%
1956 {\def\Element%
1957 {0:833}}\Node%
1958 {\def\Element%
1959 {0:834}}See Also\endNode{}\Node%
1960 {\def\Element%
1961 {0:835}}None.\endNode{}\endNode{}\Node%
1962 {\def\Element%
1963 {0:836}}\Node%
1964 {\def\Element%
1965 {0:837}}Notes\endNode{}\Node%
1966 {\def\Element%
1967 {0:838}}None.\endNode{}\endNode{}\endNode{}\Node%
1968 {\def\Label%
1969 {0:CONNECT-IF-EXISTS}}\Node%
1970 {\def\Element%
1971 {0:840}}\Node%
1972 {\def\Element%
1973 {0:841}}*CONNECT-\/IF-\/EXISTS*\endNode{}\Node%
1974 {\def\Element%
1975 {0:842}}Default value for the
1976           \Node%
1977 {\def\Element%
1978 {0:843}}if-\/exists\endNode{} parameter of
1979           \Node%
1980 {\def\Element%
1981 {0:844}}connect\endNode{}.\endNode{}\Node%
1982 {\def\Element%
1983 {0:845}}Variable\endNode{}\endNode{}\Node%
1984 {\def\Element%
1985 {0:846}}\Node%
1986 {\def\Element%
1987 {0:847}}Value Type\endNode{}\Node%
1988 {\def\Element%
1989 {0:848}}A valid argument to the \Node%
1990 {\def\Element%
1991 {0:849}}if-\/exists\endNode{} 
1992           parameter of \Node%
1993 {\def\Element%
1994 {0:850}}connect\endNode{}, i.e. one of
1995           \Node%
1996 {\def\Element%
1997 {0:851}}\Node%
1998 {\def\Element%
1999 {0:852}}\Node%
2000 {\def\Element%
2001 {0:853}}:new\endNode{}\endNode{}\Node%
2002 {\def\Element%
2003 {0:854}}\Node%
2004 {\def\Element%
2005 {0:855}}:warn-\/new\endNode{}\endNode{}\Node%
2006 {\def\Element%
2007 {0:856}}\Node%
2008 {\def\Element%
2009 {0:857}}:error\endNode{}\endNode{}\Node%
2010 {\def\Element%
2011 {0:858}}\Node%
2012 {\def\Element%
2013 {0:859}}:warn-\/old\endNode{}\endNode{}\Node%
2014 {\def\Element%
2015 {0:860}}\Node%
2016 {\def\Element%
2017 {0:861}}:old\endNode{}\endNode{}\endNode{}.
2018         \endNode{}\endNode{}\Node%
2019 {\def\Element%
2020 {0:862}}\Node%
2021 {\def\Element%
2022 {0:863}}Initial Value\endNode{}\Node%
2023 {\def\Element%
2024 {0:864}}\Node%
2025 {\def\Element%
2026 {0:865}}:error\endNode{}\endNode{}\endNode{}\Node%
2027 {\def\Element%
2028 {0:866}}\Node%
2029 {\def\Element%
2030 {0:867}}Description\endNode{}\Node%
2031 {\def\Element%
2032 {0:868}}The value of this variable is used in calls to
2033           \Node%
2034 {\def\Element%
2035 {0:869}}connect\endNode{} as the default
2036           value of the \Node%
2037 {\def\Element%
2038 {0:870}}if-\/exists\endNode{}
2039           parameter.  See \Node%
2040 {\def\Element%
2041 {0:871}}\Node%
2042 {\def\Element%
2043 {0:872}}connect\endNode{}\endNode{} for
2044           the semantics of the valid values for this variable.\endNode{}\endNode{}\Node%
2045 {\def\Element%
2046 {0:873}}\Node%
2047 {\def\Element%
2048 {0:874}}Examples\endNode{}\Node%
2049 {\def\Element%
2050 {0:875}}None.\endNode{}\endNode{}\Node%
2051 {\def\Element%
2052 {0:876}}\Node%
2053 {\def\Element%
2054 {0:877}}Affected By\endNode{}\Node%
2055 {\def\Element%
2056 {0:878}}None.\endNode{}\endNode{}\Node%
2057 {\def\Element%
2058 {0:879}}\Node%
2059 {\def\Element%
2060 {0:880}}See Also\endNode{}\Node%
2061 {\def\Element%
2062 {0:881}}        \Node%
2063 {\def\Element%
2064 {0:882}}\Node%
2065 {\def\Element%
2066 {0:883}}\Node%
2067 {\def\Element%
2068 {0:884}}\Node%
2069 {\def\Element%
2070 {0:885}}connect\endNode{}\endNode{}\endNode{}\endNode{}
2071         \endNode{}\endNode{}\Node%
2072 {\def\Element%
2073 {0:886}}\Node%
2074 {\def\Element%
2075 {0:887}}Notes\endNode{}\Node%
2076 {\def\Element%
2077 {0:888}}None.\endNode{}\endNode{}\endNode{}\Node%
2078 {\def\Label%
2079 {0:CONNECTED-DATABASES}}\Node%
2080 {\def\Element%
2081 {0:890}}\Node%
2082 {\def\Element%
2083 {0:891}}CONNECTED-\/DATABASES\endNode{}\Node%
2084 {\def\Element%
2085 {0:892}}Return the list of active database
2086           objects.\endNode{}\Node%
2087 {\def\Element%
2088 {0:893}}Function\endNode{}\endNode{}\Node%
2089 {\def\Element%
2090 {0:894}}\Node%
2091 {\def\Element%
2092 {0:895}}Syntax\endNode{}\Node%
2093 {\def\Element%
2094 {0:896}}\Node%
2095 {\def\Element%
2096 {0:897}}connected-\/databases\endNode{} =>\/ \Node%
2097 {\def\Element%
2098 {0:898}}databases\endNode{}\endNode{}\endNode{}\Node%
2099 {\def\Element%
2100 {0:899}}\Node%
2101 {\def\Element%
2102 {0:900}}Arguments and Values\endNode{}\Node%
2103 {\def\Element%
2104 {0:901}}\Node%
2105 {\def\Element%
2106 {0:902}}\Node%
2107 {\def\Element%
2108 {0:903}}\Node%
2109 {\def\Element%
2110 {0:904}}databases\endNode{}\endNode{}\Node%
2111 {\def\Element%
2112 {0:905}}\Node%
2113 {\def\Element%
2114 {0:906}}The list of active database objects.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
2115 {\def\Element%
2116 {0:907}}\Node%
2117 {\def\Element%
2118 {0:908}}Description\endNode{}\Node%
2119 {\def\Element%
2120 {0:909}}This function returns the list of active database
2121           objects, i.e. all those database objects created by calls to 
2122           \Node%
2123 {\def\Element%
2124 {0:910}}connect\endNode{}, which have not been closed by
2125           calling \Node%
2126 {\def\Element%
2127 {0:911}}disconnect\endNode{} on them.\endNode{}\Node%
2128 {\def\Element%
2129 {0:912}}\Node%
2130 {\def\Element%
2131 {0:913}}The consequences of modifying the list returned by
2132             \Node%
2133 {\def\Element%
2134 {0:914}}connected-\/databases\endNode{} are
2135             undefined.\endNode{}\endNode{}\endNode{}\Node%
2136 {\def\Element%
2137 {0:915}}\Node%
2138 {\def\Element%
2139 {0:916}}Examples\endNode{}\Node%
2140 {\def\Element%
2141 {0:917}}(connected-\/databases)
2142 =>\/ NIL
2143 (connect '(nil "template1" "dent" nil) :database-\/type :postgresql)
2144 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{4830BC65\}>\/
2145 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
2146 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{4830C5AD\}>\/
2147 (connected-\/databases)
2148 =>\/ (\#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{4830C5AD\}>\/
2149     \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{4830BC65\}>\/)
2150 (disconnect)
2151 =>\/ T
2152 (connected-\/databases)
2153 =>\/ (\#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{4830BC65\}>\/)
2154 (disconnect)
2155 =>\/ T
2156 (connected-\/databases)
2157 =>\/ NIL
2158         \endNode{}\endNode{}\Node%
2159 {\def\Element%
2160 {0:918}}\Node%
2161 {\def\Element%
2162 {0:919}}Side Effects\endNode{}\Node%
2163 {\def\Element%
2164 {0:920}}None.\endNode{}\endNode{}\Node%
2165 {\def\Element%
2166 {0:921}}\Node%
2167 {\def\Element%
2168 {0:922}}Affected By\endNode{}\Node%
2169 {\def\Element%
2170 {0:923}}        \Node%
2171 {\def\Element%
2172 {0:924}}\Node%
2173 {\def\Element%
2174 {0:925}}\Node%
2175 {\def\Element%
2176 {0:926}}connect\endNode{}\endNode{}\Node%
2177 {\def\Element%
2178 {0:927}}\Node%
2179 {\def\Element%
2180 {0:928}}disconnect\endNode{}\endNode{}\endNode{}
2181         \endNode{}\endNode{}\Node%
2182 {\def\Element%
2183 {0:929}}\Node%
2184 {\def\Element%
2185 {0:930}}Exceptional Situations\endNode{}\Node%
2186 {\def\Element%
2187 {0:931}}None.\endNode{}\endNode{}\Node%
2188 {\def\Element%
2189 {0:932}}\Node%
2190 {\def\Element%
2191 {0:933}}See Also\endNode{}\Node%
2192 {\def\Element%
2193 {0:934}}None.\endNode{}\endNode{}\Node%
2194 {\def\Element%
2195 {0:935}}\Node%
2196 {\def\Element%
2197 {0:936}}Notes\endNode{}\Node%
2198 {\def\Element%
2199 {0:937}}None.\endNode{}\endNode{}\endNode{}\Node%
2200 {\def\Label%
2201 {0:DEFAULT-DATABASE}}\Node%
2202 {\def\Element%
2203 {0:939}}\Node%
2204 {\def\Element%
2205 {0:940}}*DEFAULT-\/DATABASE*\endNode{}\Node%
2206 {\def\Element%
2207 {0:941}}The default database object to use\endNode{}\Node%
2208 {\def\Element%
2209 {0:942}}Variable\endNode{}\endNode{}\Node%
2210 {\def\Element%
2211 {0:943}}\Node%
2212 {\def\Element%
2213 {0:944}}Value Type\endNode{}\Node%
2214 {\def\Element%
2215 {0:945}}Any object of type \Node%
2216 {\def\Element%
2217 {0:946}}database\endNode{}, or nil to
2218           indicate no default database.\endNode{}\endNode{}\Node%
2219 {\def\Element%
2220 {0:947}}\Node%
2221 {\def\Element%
2222 {0:948}}Initial Value\endNode{}\Node%
2223 {\def\Element%
2224 {0:949}}\Node%
2225 {\def\Element%
2226 {0:950}}nil\endNode{}\endNode{}\endNode{}\Node%
2227 {\def\Element%
2228 {0:951}}\Node%
2229 {\def\Element%
2230 {0:952}}Description\endNode{}\Node%
2231 {\def\Element%
2232 {0:953}}Any function or macro in
2233           \Node%
2234 {\def\Element%
2235 {0:954}}\Node%
2236 {\def\Element%
2237 {0:955}}CLSQL\endNode{}\endNode{} that operates on a
2238           database uses the value of this variable as the default
2239           value for it's \Node%
2240 {\def\Element%
2241 {0:956}}database\endNode{}
2242           parameter.\endNode{}\Node%
2243 {\def\Element%
2244 {0:957}}The value of this parameter is changed by calls to
2245           \Node%
2246 {\def\Element%
2247 {0:958}}connect\endNode{}, which sets
2248           \Node%
2249 {\def\Element%
2250 {0:959}}*default-\/database*\endNode{} to the database object
2251           it returns.  It is also changed by calls to
2252           \Node%
2253 {\def\Element%
2254 {0:960}}disconnect\endNode{}, when the database object
2255           being disconnected is the same as the value of
2256           \Node%
2257 {\def\Element%
2258 {0:961}}*default-\/database*\endNode{}.  In this case
2259           \Node%
2260 {\def\Element%
2261 {0:962}}disconnect\endNode{} sets
2262           \Node%
2263 {\def\Element%
2264 {0:963}}*default-\/database*\endNode{} to the first database
2265           that remains in the list of active databases as returned by
2266           \Node%
2267 {\def\Element%
2268 {0:964}}connected-\/databases\endNode{}, or
2269           \Node%
2270 {\def\Element%
2271 {0:965}}nil\endNode{} if no further active databases
2272           exist.\endNode{}\Node%
2273 {\def\Element%
2274 {0:966}}The user may change \Node%
2275 {\def\Element%
2276 {0:967}}*default-\/database*\endNode{}
2277           at any time to a valid value of his choice.\endNode{}\Node%
2278 {\def\Element%
2279 {0:968}}\Node%
2280 {\def\Element%
2281 {0:969}}If the value of \Node%
2282 {\def\Element%
2283 {0:970}}*default-\/database*\endNode{} is
2284             \Node%
2285 {\def\Element%
2286 {0:971}}nil\endNode{}, then all calls to
2287             \Node%
2288 {\def\Element%
2289 {0:972}}\Node%
2290 {\def\Element%
2291 {0:973}}CLSQL\endNode{}\endNode{} functions on databases
2292             must provide a suitable \Node%
2293 {\def\Element%
2294 {0:974}}database\endNode{}
2295             parameter, or an error will be signalled.\endNode{}\endNode{}\endNode{}\Node%
2296 {\def\Element%
2297 {0:975}}\Node%
2298 {\def\Element%
2299 {0:976}}Examples\endNode{}\Node%
2300 {\def\Element%
2301 {0:977}}(connected-\/databases)
2302 =>\/ NIL
2303 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
2304 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48385F55\}>\/
2305 (connect '(nil "template1" "dent" nil) :database-\/type :postgresql)
2306 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{483868FD\}>\/
2307 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql :if-\/exists :new)
2308 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48387265\}>\/
2309 *default-\/database*
2310 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48387265\}>\/
2311 (disconnect)
2312 =>\/ T
2313 *default-\/database*
2314 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{483868FD\}>\/
2315 (disconnect)
2316 =>\/ T
2317 *default-\/database*
2318 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48385F55\}>\/
2319 (disconnect)
2320 =>\/ T
2321 *default-\/database*
2322 =>\/ NIL
2323 (connected-\/databases)
2324 =>\/ NIL
2325         \endNode{}\endNode{}\Node%
2326 {\def\Element%
2327 {0:978}}\Node%
2328 {\def\Element%
2329 {0:979}}Affected By\endNode{}\Node%
2330 {\def\Element%
2331 {0:980}}        \Node%
2332 {\def\Element%
2333 {0:981}}\Node%
2334 {\def\Element%
2335 {0:982}}\Node%
2336 {\def\Element%
2337 {0:983}}\Node%
2338 {\def\Element%
2339 {0:984}}connect\endNode{}\endNode{}\endNode{}\Node%
2340 {\def\Element%
2341 {0:985}}\Node%
2342 {\def\Element%
2343 {0:986}}\Node%
2344 {\def\Element%
2345 {0:987}}disconnect\endNode{}\endNode{}\endNode{}\endNode{}
2346         \endNode{}\endNode{}\Node%
2347 {\def\Element%
2348 {0:988}}\Node%
2349 {\def\Element%
2350 {0:989}}See Also\endNode{}\Node%
2351 {\def\Element%
2352 {0:990}}        \Node%
2353 {\def\Element%
2354 {0:991}}\Node%
2355 {\def\Element%
2356 {0:992}}\Node%
2357 {\def\Element%
2358 {0:993}}\Node%
2359 {\def\Element%
2360 {0:994}}connected-\/databases\endNode{}\endNode{}\endNode{}\endNode{}
2361         \endNode{}\endNode{}\Node%
2362 {\def\Element%
2363 {0:995}}\Node%
2364 {\def\Element%
2365 {0:996}}Notes\endNode{}\Node%
2366 {\def\Element%
2367 {0:997}}\Node%
2368 {\def\Element%
2369 {0:998}}This variable is intended to facilitate working with
2370             \Node%
2371 {\def\Element%
2372 {0:999}}\Node%
2373 {\def\Element%
2374 {0:1000}}CLSQL\endNode{}\endNode{} in an interactive
2375             fashion at the top-\/level loop, and because of this,
2376             \Node%
2377 {\def\Element%
2378 {0:1001}}connect\endNode{} and
2379             \Node%
2380 {\def\Element%
2381 {0:1002}}disconnect\endNode{} provide some fairly
2382             complex  behaviour to keep
2383             \Node%
2384 {\def\Element%
2385 {0:1003}}*default-\/database*\endNode{} set to  useful values.
2386             Programmatic use of \Node%
2387 {\def\Element%
2388 {0:1004}}\Node%
2389 {\def\Element%
2390 {0:1005}}CLSQL\endNode{}\endNode{}
2391             should never depend on the value of
2392             \Node%
2393 {\def\Element%
2394 {0:1006}}*default-\/database*\endNode{} and should provide
2395             correct database objects via the
2396             \Node%
2397 {\def\Element%
2398 {0:1007}}database\endNode{} parameter to functions
2399             called.\endNode{}\endNode{}\endNode{}\endNode{}\Node%
2400 {\def\Label%
2401 {0:DATABASE}}\Node%
2402 {\def\Element%
2403 {0:1009}}\Node%
2404 {\def\Element%
2405 {0:1010}}DATABASE\endNode{}\Node%
2406 {\def\Element%
2407 {0:1011}}The super-\/type of all
2408           \Node%
2409 {\def\Element%
2410 {0:1012}}\Node%
2411 {\def\Element%
2412 {0:1013}}CLSQL\endNode{}\endNode{} databases\endNode{}\Node%
2413 {\def\Element%
2414 {0:1014}}Class\endNode{}\endNode{}\Node%
2415 {\def\Element%
2416 {0:1015}}\Node%
2417 {\def\Element%
2418 {0:1016}}Class Precedence List\endNode{}\Node%
2419 {\def\Element%
2420 {0:1017}}       \Node%
2421 {\def\Element%
2422 {0:1018}}\Node%
2423 {\def\Element%
2424 {0:1019}}\Node%
2425 {\def\Element%
2426 {0:1020}}database\endNode{}\endNode{}\Node%
2427 {\def\Element%
2428 {0:1021}}\Node%
2429 {\def\Element%
2430 {0:1022}}standard-\/object\endNode{}\endNode{}\Node%
2431 {\def\Element%
2432 {0:1023}}\Node%
2433 {\def\Element%
2434 {0:1024}}t\endNode{}\endNode{}\endNode{}
2435         \endNode{}\endNode{}\Node%
2436 {\def\Element%
2437 {0:1025}}\Node%
2438 {\def\Element%
2439 {0:1026}}Description\endNode{}\Node%
2440 {\def\Element%
2441 {0:1027}}This class is the superclass of all
2442           \Node%
2443 {\def\Element%
2444 {0:1028}}\Node%
2445 {\def\Element%
2446 {0:1029}}CLSQL\endNode{}\endNode{} databases. The different
2447           database back-\/ends derive subclasses of this class to
2448           implement their databases.  No instances of this class are
2449           ever created by \Node%
2450 {\def\Element%
2451 {0:1030}}\Node%
2452 {\def\Element%
2453 {0:1031}}CLSQL\endNode{}\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
2454 {\def\Label%
2455 {0:CLOSED-DATABASE}}\Node%
2456 {\def\Element%
2457 {0:1033}}\Node%
2458 {\def\Element%
2459 {0:1034}}CLOSED-\/DATABASE\endNode{}\Node%
2460 {\def\Element%
2461 {0:1035}}The class representing all closed
2462           \Node%
2463 {\def\Element%
2464 {0:1036}}\Node%
2465 {\def\Element%
2466 {0:1037}}CLSQL\endNode{}\endNode{} databases\endNode{}\Node%
2467 {\def\Element%
2468 {0:1038}}Class\endNode{}\endNode{}\Node%
2469 {\def\Element%
2470 {0:1039}}\Node%
2471 {\def\Element%
2472 {0:1040}}Class Precedence List\endNode{}\Node%
2473 {\def\Element%
2474 {0:1041}}       \Node%
2475 {\def\Element%
2476 {0:1042}}\Node%
2477 {\def\Element%
2478 {0:1043}}\Node%
2479 {\def\Element%
2480 {0:1044}}closed-\/database\endNode{}\endNode{}\Node%
2481 {\def\Element%
2482 {0:1045}}\Node%
2483 {\def\Element%
2484 {0:1046}}standard-\/object\endNode{}\endNode{}\Node%
2485 {\def\Element%
2486 {0:1047}}\Node%
2487 {\def\Element%
2488 {0:1048}}t\endNode{}\endNode{}\endNode{}
2489         \endNode{}\endNode{}\Node%
2490 {\def\Element%
2491 {0:1049}}\Node%
2492 {\def\Element%
2493 {0:1050}}Description\endNode{}\Node%
2494 {\def\Element%
2495 {0:1051}}\Node%
2496 {\def\Element%
2497 {0:1052}}\Node%
2498 {\def\Element%
2499 {0:1053}}CLSQL\endNode{}\endNode{} \Node%
2500 {\def\Element%
2501 {0:1054}}database\endNode{}
2502           instances are changed to this class via
2503           \Node%
2504 {\def\Element%
2505 {0:1055}}change-\/class\endNode{} after they are closed via
2506           \Node%
2507 {\def\Element%
2508 {0:1056}}disconnect\endNode{}.  All functions and generic
2509           functions that take database objects as arguments will
2510           signal errors of type
2511           \Node%
2512 {\def\Element%
2513 {0:1057}}maisql-\/closed-\/error\endNode{} when they are
2514           called on instances of \Node%
2515 {\def\Element%
2516 {0:1058}}closed-\/database\endNode{}, with
2517           the exception of \Node%
2518 {\def\Element%
2519 {0:1059}}database-\/name\endNode{}, which
2520           will continue to work as for instances of
2521           \Node%
2522 {\def\Element%
2523 {0:1060}}database\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
2524 {\def\Label%
2525 {0:DATABASE-NAME}}\Node%
2526 {\def\Element%
2527 {0:1062}}\Node%
2528 {\def\Element%
2529 {0:1063}}DATABASE-\/NAME\endNode{}\Node%
2530 {\def\Element%
2531 {0:1064}}Get the name of a database object\endNode{}\Node%
2532 {\def\Element%
2533 {0:1065}}Generic Function\endNode{}\endNode{}\Node%
2534 {\def\Element%
2535 {0:1066}}\Node%
2536 {\def\Element%
2537 {0:1067}}Syntax\endNode{}\Node%
2538 {\def\Element%
2539 {0:1068}}\Node%
2540 {\def\Element%
2541 {0:1069}}database-\/name\endNode{} \Node%
2542 {\def\Element%
2543 {0:1070}}database\endNode{} =>\/ \Node%
2544 {\def\Element%
2545 {0:1071}}name\endNode{}\endNode{}\endNode{}\Node%
2546 {\def\Element%
2547 {0:1072}}\Node%
2548 {\def\Element%
2549 {0:1073}}Arguments and Values\endNode{}\Node%
2550 {\def\Element%
2551 {0:1074}}\Node%
2552 {\def\Element%
2553 {0:1075}}\Node%
2554 {\def\Element%
2555 {0:1076}}\Node%
2556 {\def\Element%
2557 {0:1077}}database\endNode{}\endNode{}\Node%
2558 {\def\Element%
2559 {0:1078}}\Node%
2560 {\def\Element%
2561 {0:1079}}A database object, either of type
2562                 \Node%
2563 {\def\Element%
2564 {0:1080}}database\endNode{} or of type
2565                 \Node%
2566 {\def\Element%
2567 {0:1081}}closed-\/database\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
2568 {\def\Element%
2569 {0:1082}}\Node%
2570 {\def\Element%
2571 {0:1083}}\Node%
2572 {\def\Element%
2573 {0:1084}}name\endNode{}\endNode{}\Node%
2574 {\def\Element%
2575 {0:1085}}\Node%
2576 {\def\Element%
2577 {0:1086}}A string describing the identity of the database
2578                 to which this database object is connected to.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
2579 {\def\Element%
2580 {0:1087}}\Node%
2581 {\def\Element%
2582 {0:1088}}Description\endNode{}\Node%
2583 {\def\Element%
2584 {0:1089}}This function returns the database name of the given
2585           database.  The database name is a string which somehow
2586           describes the identity of the database to which this
2587           database object is or has been connected.  The database name 
2588           of a database object is determined at
2589           \Node%
2590 {\def\Element%
2591 {0:1090}}connect\endNode{} time, when a call to
2592           \Node%
2593 {\def\Element%
2594 {0:1091}}database-\/name-\/from-\/spec\endNode{} derives the
2595           database name from the connection specification passed to
2596           \Node%
2597 {\def\Element%
2598 {0:1092}}connect\endNode{} in the
2599           \Node%
2600 {\def\Element%
2601 {0:1093}}connection-\/spec\endNode{} parameter.\endNode{}\Node%
2602 {\def\Element%
2603 {0:1094}}The database name is used via
2604           \Node%
2605 {\def\Element%
2606 {0:1095}}find-\/database\endNode{} in
2607           \Node%
2608 {\def\Element%
2609 {0:1096}}connect\endNode{} to determine whether database
2610           connections to the specified database exist already.\endNode{}\Node%
2611 {\def\Element%
2612 {0:1097}}Usually the database name string will include
2613           indications of the  host, database name, user, or port that
2614           where used during the connection attempt.  The only
2615           important thing is that this string shall  try to identify
2616           the database at the other end of the connection.  Connection
2617           specifications parts like passwords and credentials shall
2618           not be used as part of the database name.\endNode{}\endNode{}\Node%
2619 {\def\Element%
2620 {0:1098}}\Node%
2621 {\def\Element%
2622 {0:1099}}Examples\endNode{}\Node%
2623 {\def\Element%
2624 {0:1100}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql)
2625 =>\/ "dent/newesim/dent"
2626 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
2627 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48391DCD\}>\/
2628 (database-\/name *default-\/database*)
2629 =>\/ "dent/newesim/dent"
2630
2631 (database-\/name-\/from-\/spec '(nil "template1" "dent" nil) :postgresql)
2632 =>\/ "/template1/dent"
2633 (connect '(nil "template1" "dent" nil) :database-\/type :postgresql)
2634 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
2635 (database-\/name *default-\/database*)
2636 =>\/ "/template1/dent"
2637
2638 (database-\/name-\/from-\/spec '("www.pmsf.de" "template1" "dent" nil) :postgresql)
2639 =>\/ "www.pmsf.de/template1/dent"
2640         \endNode{}\endNode{}\Node%
2641 {\def\Element%
2642 {0:1101}}\Node%
2643 {\def\Element%
2644 {0:1102}}Side Effects\endNode{}\Node%
2645 {\def\Element%
2646 {0:1103}}None.\endNode{}\endNode{}\Node%
2647 {\def\Element%
2648 {0:1104}}\Node%
2649 {\def\Element%
2650 {0:1105}}Affected By\endNode{}\Node%
2651 {\def\Element%
2652 {0:1106}}       \Node%
2653 {\def\Element%
2654 {0:1107}}\Node%
2655 {\def\Element%
2656 {0:1108}}\Node%
2657 {\def\Element%
2658 {0:1109}}\Node%
2659 {\def\Element%
2660 {0:1110}}database-\/name-\/from-\/spec\endNode{}\endNode{}\endNode{}\endNode{}
2661         \endNode{}\endNode{}\Node%
2662 {\def\Element%
2663 {0:1111}}\Node%
2664 {\def\Element%
2665 {0:1112}}Exceptional Situations\endNode{}\Node%
2666 {\def\Element%
2667 {0:1113}}Will signal an error if the object passed as the
2668           \Node%
2669 {\def\Element%
2670 {0:1114}}database\endNode{} parameter is neither of type
2671           \Node%
2672 {\def\Element%
2673 {0:1115}}database\endNode{} nor of type
2674           \Node%
2675 {\def\Element%
2676 {0:1116}}closed-\/database\endNode{}.\endNode{}\endNode{}\Node%
2677 {\def\Element%
2678 {0:1117}}\Node%
2679 {\def\Element%
2680 {0:1118}}See Also\endNode{}\Node%
2681 {\def\Element%
2682 {0:1119}}       \Node%
2683 {\def\Element%
2684 {0:1120}}\Node%
2685 {\def\Element%
2686 {0:1121}}\Node%
2687 {\def\Element%
2688 {0:1122}}\Node%
2689 {\def\Element%
2690 {0:1123}}connect\endNode{}\endNode{}\endNode{}\Node%
2691 {\def\Element%
2692 {0:1124}}\Node%
2693 {\def\Element%
2694 {0:1125}}\Node%
2695 {\def\Element%
2696 {0:1126}}find-\/database\endNode{}\endNode{}\endNode{}\endNode{}
2697         \endNode{}\endNode{}\Node%
2698 {\def\Element%
2699 {0:1127}}\Node%
2700 {\def\Element%
2701 {0:1128}}Notes\endNode{}\Node%
2702 {\def\Element%
2703 {0:1129}}None.\endNode{}\endNode{}\endNode{}\Node%
2704 {\def\Label%
2705 {0:FIND-DATABASE}}\Node%
2706 {\def\Element%
2707 {0:1131}}\Node%
2708 {\def\Element%
2709 {0:1132}}FIND-\/DATABASE\endNode{}\Node%
2710 {\def\Element%
2711 {0:1133}}Locate a database object through it's
2712           name.\endNode{}\Node%
2713 {\def\Element%
2714 {0:1134}}Function\endNode{}\endNode{}\Node%
2715 {\def\Element%
2716 {0:1135}}\Node%
2717 {\def\Element%
2718 {0:1136}}Syntax\endNode{}\Node%
2719 {\def\Element%
2720 {0:1137}}\Node%
2721 {\def\Element%
2722 {0:1138}}find-\/database\endNode{} \Node%
2723 {\def\Element%
2724 {0:1139}}database\endNode{} \Entity{amp}optional \Node%
2725 {\def\Element%
2726 {0:1140}}errorp\endNode{} =>\/ \Node%
2727 {\def\Element%
2728 {0:1141}}result\endNode{}\endNode{}\endNode{}\Node%
2729 {\def\Element%
2730 {0:1142}}\Node%
2731 {\def\Element%
2732 {0:1143}}Arguments and Values\endNode{}\Node%
2733 {\def\Element%
2734 {0:1144}}\Node%
2735 {\def\Element%
2736 {0:1145}}\Node%
2737 {\def\Element%
2738 {0:1146}}\Node%
2739 {\def\Element%
2740 {0:1147}}database\endNode{}\endNode{}\Node%
2741 {\def\Element%
2742 {0:1148}}\Node%
2743 {\def\Element%
2744 {0:1149}}A database object or a string, denoting a database 
2745                 name.\endNode{}\endNode{}\endNode{}\Node%
2746 {\def\Element%
2747 {0:1150}}\Node%
2748 {\def\Element%
2749 {0:1151}}\Node%
2750 {\def\Element%
2751 {0:1152}}errorp\endNode{}\endNode{}\Node%
2752 {\def\Element%
2753 {0:1153}}\Node%
2754 {\def\Element%
2755 {0:1154}}A generalized boolean.  Defaults to
2756                 \Node%
2757 {\def\Element%
2758 {0:1155}}t\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
2759 {\def\Element%
2760 {0:1156}}\Node%
2761 {\def\Element%
2762 {0:1157}}\Node%
2763 {\def\Element%
2764 {0:1158}}result\endNode{}\endNode{}\Node%
2765 {\def\Element%
2766 {0:1159}}\Node%
2767 {\def\Element%
2768 {0:1160}}Either a database object, or, if
2769                 \Node%
2770 {\def\Element%
2771 {0:1161}}errorp\endNode{} is \Node%
2772 {\def\Element%
2773 {0:1162}}nil\endNode{}, 
2774                 possibly \Node%
2775 {\def\Element%
2776 {0:1163}}nil\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
2777 {\def\Element%
2778 {0:1164}}\Node%
2779 {\def\Element%
2780 {0:1165}}Description\endNode{}\Node%
2781 {\def\Element%
2782 {0:1166}}\Node%
2783 {\def\Element%
2784 {0:1167}}find-\/database\endNode{} locates an active
2785           database object given the specification in
2786           \Node%
2787 {\def\Element%
2788 {0:1168}}database\endNode{}.  If
2789           \Node%
2790 {\def\Element%
2791 {0:1169}}database\endNode{} is an object of type
2792           \Node%
2793 {\def\Element%
2794 {0:1170}}database\endNode{}, \Node%
2795 {\def\Element%
2796 {0:1171}}find-\/database\endNode{}
2797           returns this.  Otherwise it will search the active databases 
2798           as indicated by the list returned by
2799           \Node%
2800 {\def\Element%
2801 {0:1172}}connected-\/databases\endNode{} for a database
2802           whose name (as returned by
2803           \Node%
2804 {\def\Element%
2805 {0:1173}}database-\/name\endNode{} is equal as per
2806           \Node%
2807 {\def\Element%
2808 {0:1174}}string=\endNode{} to the string passed as
2809           \Node%
2810 {\def\Element%
2811 {0:1175}}database\endNode{}.  If it succeeds, it returns 
2812           the first database found.\endNode{}\Node%
2813 {\def\Element%
2814 {0:1176}}If it fails to find a matching database, it will signal
2815           an error of type \Node%
2816 {\def\Element%
2817 {0:1177}}maisql-\/error\endNode{} if
2818           \Node%
2819 {\def\Element%
2820 {0:1178}}errorp\endNode{} is true.  If
2821           \Node%
2822 {\def\Element%
2823 {0:1179}}errorp\endNode{} is \Node%
2824 {\def\Element%
2825 {0:1180}}nil\endNode{}, it
2826           will return \Node%
2827 {\def\Element%
2828 {0:1181}}nil\endNode{} instead.\endNode{}\endNode{}\Node%
2829 {\def\Element%
2830 {0:1182}}\Node%
2831 {\def\Element%
2832 {0:1183}}Examples\endNode{}\Node%
2833 {\def\Element%
2834 {0:1184}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql)
2835 =>\/ "dent/newesim/dent"
2836 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
2837 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48391DCD\}>\/
2838 (database-\/name *default-\/database*)
2839 =>\/ "dent/newesim/dent"
2840
2841 (database-\/name-\/from-\/spec '(nil "template1" "dent" nil) :postgresql)
2842 =>\/ "/template1/dent"
2843 (connect '(nil "template1" "dent" nil) :database-\/type :postgresql)
2844 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
2845 (database-\/name *default-\/database*)
2846 =>\/ "/template1/dent"
2847
2848 (database-\/name-\/from-\/spec '("www.pmsf.de" "template1" "dent" nil) :postgresql)
2849 =>\/ "www.pmsf.de/template1/dent"
2850
2851 (find-\/database "dent/newesim/dent")
2852 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{484E91C5\}>\/
2853 (find-\/database "/template1/dent")
2854 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
2855 (find-\/database "www.pmsf.de/template1/dent" nil)
2856 =>\/ NIL
2857 (find-\/database **)
2858 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
2859         \endNode{}\endNode{}\Node%
2860 {\def\Element%
2861 {0:1185}}\Node%
2862 {\def\Element%
2863 {0:1186}}Side Effects\endNode{}\Node%
2864 {\def\Element%
2865 {0:1187}}None.\endNode{}\endNode{}\Node%
2866 {\def\Element%
2867 {0:1188}}\Node%
2868 {\def\Element%
2869 {0:1189}}Affected By\endNode{}\Node%
2870 {\def\Element%
2871 {0:1190}}       \Node%
2872 {\def\Element%
2873 {0:1191}}\Node%
2874 {\def\Element%
2875 {0:1192}}\Node%
2876 {\def\Element%
2877 {0:1193}}\Node%
2878 {\def\Element%
2879 {0:1194}}connected-\/databases\endNode{}\endNode{}\endNode{}\endNode{}
2880         \endNode{}\endNode{}\Node%
2881 {\def\Element%
2882 {0:1195}}\Node%
2883 {\def\Element%
2884 {0:1196}}Exceptional Situations\endNode{}\Node%
2885 {\def\Element%
2886 {0:1197}}Will signal an error of type
2887         \Node%
2888 {\def\Element%
2889 {0:1198}}maisql-\/error\endNode{} if no matching database
2890           can be found, and \Node%
2891 {\def\Element%
2892 {0:1199}}errorp\endNode{} is true.
2893           Will signal an error if the value of
2894           \Node%
2895 {\def\Element%
2896 {0:1200}}database\endNode{} is neither an object of type
2897           \Node%
2898 {\def\Element%
2899 {0:1201}}database\endNode{} nor a string.\endNode{}\endNode{}\Node%
2900 {\def\Element%
2901 {0:1202}}\Node%
2902 {\def\Element%
2903 {0:1203}}See Also\endNode{}\Node%
2904 {\def\Element%
2905 {0:1204}}       \Node%
2906 {\def\Element%
2907 {0:1205}}\Node%
2908 {\def\Element%
2909 {0:1206}}\Node%
2910 {\def\Element%
2911 {0:1207}}\Node%
2912 {\def\Element%
2913 {0:1208}}database-\/name\endNode{}\endNode{}\endNode{}\Node%
2914 {\def\Element%
2915 {0:1209}}\Node%
2916 {\def\Element%
2917 {0:1210}}\Node%
2918 {\def\Element%
2919 {0:1211}}database-\/name-\/from-\/spec\endNode{}\endNode{}\endNode{}\endNode{}
2920         \endNode{}\endNode{}\Node%
2921 {\def\Element%
2922 {0:1212}}\Node%
2923 {\def\Element%
2924 {0:1213}}Notes\endNode{}\Node%
2925 {\def\Element%
2926 {0:1214}}None.\endNode{}\endNode{}\endNode{}\Node%
2927 {\def\Label%
2928 {0:CONNECT}}\Node%
2929 {\def\Element%
2930 {0:1216}}\Node%
2931 {\def\Element%
2932 {0:1217}}CONNECT\endNode{}\Node%
2933 {\def\Element%
2934 {0:1218}}create a connection to a database\endNode{}\Node%
2935 {\def\Element%
2936 {0:1219}}Function\endNode{}\endNode{}\Node%
2937 {\def\Element%
2938 {0:1220}}\Node%
2939 {\def\Element%
2940 {0:1221}}Syntax\endNode{}\Node%
2941 {\def\Element%
2942 {0:1222}}\Node%
2943 {\def\Element%
2944 {0:1223}}connect\endNode{} \Node%
2945 {\def\Element%
2946 {0:1224}}connection-\/spec\endNode{} \Entity{amp}key \Node%
2947 {\def\Element%
2948 {0:1225}}if-\/exists\endNode{} \Node%
2949 {\def\Element%
2950 {0:1226}}database-\/type\endNode{} =>\/ \Node%
2951 {\def\Element%
2952 {0:1227}}database\endNode{}\endNode{}\endNode{}\Node%
2953 {\def\Element%
2954 {0:1228}}\Node%
2955 {\def\Element%
2956 {0:1229}}Arguments and Values\endNode{}\Node%
2957 {\def\Element%
2958 {0:1230}}\Node%
2959 {\def\Element%
2960 {0:1231}}\Node%
2961 {\def\Element%
2962 {0:1232}}\Node%
2963 {\def\Element%
2964 {0:1233}}connection-\/spec\endNode{}\endNode{}\Node%
2965 {\def\Element%
2966 {0:1234}}\Node%
2967 {\def\Element%
2968 {0:1235}}A connection specification\endNode{}\endNode{}\endNode{}\Node%
2969 {\def\Element%
2970 {0:1236}}\Node%
2971 {\def\Element%
2972 {0:1237}}\Node%
2973 {\def\Element%
2974 {0:1238}}if-\/exists\endNode{}\endNode{}\Node%
2975 {\def\Element%
2976 {0:1239}}\Node%
2977 {\def\Element%
2978 {0:1240}}This indicates the action to take if a connection
2979                 to the same database exists already.  See below for the
2980                 legal values and actions.  It defaults to the value of 
2981                 \Node%
2982 {\def\Element%
2983 {0:1241}}*connect-\/if-\/exists*\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
2984 {\def\Element%
2985 {0:1242}}\Node%
2986 {\def\Element%
2987 {0:1243}}\Node%
2988 {\def\Element%
2989 {0:1244}}database-\/type\endNode{}\endNode{}\Node%
2990 {\def\Element%
2991 {0:1245}}\Node%
2992 {\def\Element%
2993 {0:1246}}A database type specifier, i.e. a keyword.
2994                 This defaults to the value of
2995                 \Node%
2996 {\def\Element%
2997 {0:1247}}*default-\/database-\/type*\endNode{}\endNode{}\endNode{}\endNode{}\Node%
2998 {\def\Element%
2999 {0:1248}}\Node%
3000 {\def\Element%
3001 {0:1249}}\Node%
3002 {\def\Element%
3003 {0:1250}}database\endNode{}\endNode{}\Node%
3004 {\def\Element%
3005 {0:1251}}\Node%
3006 {\def\Element%
3007 {0:1252}}The database object representing the connection.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
3008 {\def\Element%
3009 {0:1253}}\Node%
3010 {\def\Element%
3011 {0:1254}}Description\endNode{}\Node%
3012 {\def\Element%
3013 {0:1255}}This function takes a connection specification and
3014           a database type and creates a connection to the database
3015           specified by those.  The type and structure of the
3016           connection specification depend on the database type.\endNode{}\Node%
3017 {\def\Element%
3018 {0:1256}}The parameter \Node%
3019 {\def\Element%
3020 {0:1257}}if-\/exists\endNode{} specifies
3021           what to do if a connection to the database specified exists
3022           already, which is checked by calling
3023           \Node%
3024 {\def\Element%
3025 {0:1258}}find-\/database\endNode{} on the database name
3026           returned by \Node%
3027 {\def\Element%
3028 {0:1259}}database-\/name-\/from-\/spec\endNode{}
3029           when called with the \Node%
3030 {\def\Element%
3031 {0:1260}}connection-\/spec\endNode{}
3032           and \Node%
3033 {\def\Element%
3034 {0:1261}}database-\/type\endNode{} parameters. The
3035           possible values of \Node%
3036 {\def\Element%
3037 {0:1262}}if-\/exists\endNode{} are:
3038           \Node%
3039 {\def\Element%
3040 {0:1263}}\Node%
3041 {\def\Element%
3042 {0:1264}}\Node%
3043 {\def\Element%
3044 {0:1265}}\Node%
3045 {\def\Element%
3046 {0:1266}}:new\endNode{}\endNode{}\Node%
3047 {\def\Element%
3048 {0:1267}}\Node%
3049 {\def\Element%
3050 {0:1268}}Go ahead and create a new connection.\endNode{}\endNode{}\endNode{}\Node%
3051 {\def\Element%
3052 {0:1269}}\Node%
3053 {\def\Element%
3054 {0:1270}}\Node%
3055 {\def\Element%
3056 {0:1271}}:warn-\/new\endNode{}\endNode{}\Node%
3057 {\def\Element%
3058 {0:1272}}\Node%
3059 {\def\Element%
3060 {0:1273}}This is just like \Node%
3061 {\def\Element%
3062 {0:1274}}:new\endNode{}, but
3063                   also signals a warning of type
3064                   \Node%
3065 {\def\Element%
3066 {0:1275}}maisql-\/exists-\/warning\endNode{},
3067                   indicating the old and newly created
3068                   databases.\endNode{}\endNode{}\endNode{}\Node%
3069 {\def\Element%
3070 {0:1276}}\Node%
3071 {\def\Element%
3072 {0:1277}}\Node%
3073 {\def\Element%
3074 {0:1278}}:error\endNode{}\endNode{}\Node%
3075 {\def\Element%
3076 {0:1279}}\Node%
3077 {\def\Element%
3078 {0:1280}}This will cause \Node%
3079 {\def\Element%
3080 {0:1281}}connect\endNode{} to
3081                   signal a correctable error of type
3082                   \Node%
3083 {\def\Element%
3084 {0:1282}}maisql-\/exists-\/error\endNode{}.  The
3085                   user may choose to proceed, either by indicating
3086                   that a new connection shall be created, via the
3087                   restart \Node%
3088 {\def\Element%
3089 {0:1283}}create-\/new\endNode{}, or by
3090                   indicating that the existing connection shall be
3091                   used, via the restart
3092                   \Node%
3093 {\def\Element%
3094 {0:1284}}use-\/old\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
3095 {\def\Element%
3096 {0:1285}}\Node%
3097 {\def\Element%
3098 {0:1286}}\Node%
3099 {\def\Element%
3100 {0:1287}}:old\endNode{}\endNode{}\Node%
3101 {\def\Element%
3102 {0:1288}}\Node%
3103 {\def\Element%
3104 {0:1289}}This will cause \Node%
3105 {\def\Element%
3106 {0:1290}}connect\endNode{} to
3107                   use an old connection if one exists.\endNode{}\endNode{}\endNode{}\Node%
3108 {\def\Element%
3109 {0:1291}}\Node%
3110 {\def\Element%
3111 {0:1292}}\Node%
3112 {\def\Element%
3113 {0:1293}}:warn-\/old\endNode{}\endNode{}\Node%
3114 {\def\Element%
3115 {0:1294}}\Node%
3116 {\def\Element%
3117 {0:1295}}This is just like \Node%
3118 {\def\Element%
3119 {0:1296}}:old\endNode{}, but
3120                   also signals a warning of type
3121                   \Node%
3122 {\def\Element%
3123 {0:1297}}maisql-\/exists-\/warning\endNode{},
3124                   indicating the old database used, via the slots
3125                   \Node%
3126 {\def\Element%
3127 {0:1298}}old-\/db\endNode{} and
3128                   \Node%
3129 {\def\Element%
3130 {0:1299}}new-\/db\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}
3131         \endNode{}\Node%
3132 {\def\Element%
3133 {0:1300}}The database name of the returned database object will
3134           be the same under \Node%
3135 {\def\Element%
3136 {0:1301}}string=\endNode{} as that which
3137           would be returned by a call to
3138           \Node%
3139 {\def\Element%
3140 {0:1302}}database-\/name-\/from-\/spec\endNode{} with the given 
3141           \Node%
3142 {\def\Element%
3143 {0:1303}}connection-\/spec\endNode{} and
3144           \Node%
3145 {\def\Element%
3146 {0:1304}}database-\/type\endNode{} parameters.\endNode{}\endNode{}\Node%
3147 {\def\Element%
3148 {0:1305}}\Node%
3149 {\def\Element%
3150 {0:1306}}Examples\endNode{}\Node%
3151 {\def\Element%
3152 {0:1307}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql)
3153 =>\/ "dent/newesim/dent"
3154 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
3155 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48036F6D\}>\/
3156 (database-\/name *)
3157 =>\/ "dent/newesim/dent"
3158
3159 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
3160 >\/>\/ In call to CONNECT:
3161 >\/>\/   There is an existing connection \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48036F6D\}>\/ to database dent/newesim/dent.
3162 >\/>\/ 
3163 >\/>\/ Restarts:
3164 >\/>\/   0: [CREATE-\/NEW] Create a new connection.
3165 >\/>\/   1: [USE-\/OLD   ] Use the existing connection.
3166 >\/>\/   2: [ABORT     ] Return to Top-\/Level.
3167 >\/>\/ 
3168 >\/>\/ Debug  (type H for help)
3169 >\/>\/ 
3170 >\/>\/ (CONNECT ("dent" "newesim" "dent" "dent") :IF-\/EXISTS NIL :DATABASE-\/TYPE ...)
3171 >\/>\/ Source: 
3172 >\/>\/ ; File: /prj/CLSQL/sql/sql.cl
3173 >\/>\/ (RESTART-\/CASE (ERROR 'CLSQL-\/EXISTS-\/ERROR :OLD-\/DB OLD-\/DB)
3174 >\/>\/               (CREATE-\/NEW NIL :REPORT "Create a new connection."
3175 >\/>\/                (SETQ RESULT \#))
3176 >\/>\/               (USE-\/OLD NIL :REPORT "Use the existing connection."
3177 >\/>\/                (SETQ RESULT OLD-\/DB)))
3178 >\/>\/ 0] 0
3179 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{480451F5\}>\/
3180         \endNode{}\endNode{}\Node%
3181 {\def\Element%
3182 {0:1308}}\Node%
3183 {\def\Element%
3184 {0:1309}}Side Effects\endNode{}\Node%
3185 {\def\Element%
3186 {0:1310}}A database connection is established, and the resultant
3187           database object is registered, so as to appear in the list
3188           returned by \Node%
3189 {\def\Element%
3190 {0:1311}}connected-\/databases\endNode{}.\endNode{}\endNode{}\Node%
3191 {\def\Element%
3192 {0:1312}}\Node%
3193 {\def\Element%
3194 {0:1313}}Affected by\endNode{}\Node%
3195 {\def\Element%
3196 {0:1314}}       \Node%
3197 {\def\Element%
3198 {0:1315}}\Node%
3199 {\def\Element%
3200 {0:1316}}\Node%
3201 {\def\Element%
3202 {0:1317}}*default-\/database-\/type*\endNode{}\endNode{}\Node%
3203 {\def\Element%
3204 {0:1318}}\Node%
3205 {\def\Element%
3206 {0:1319}}*connect-\/if-\/exists*\endNode{}\endNode{}\endNode{}
3207         \endNode{}\endNode{}\Node%
3208 {\def\Element%
3209 {0:1320}}\Node%
3210 {\def\Element%
3211 {0:1321}}Exceptional Situations\endNode{}\Node%
3212 {\def\Element%
3213 {0:1322}}If the connection specification is not syntactically or
3214           semantically correct for the given database type, an error
3215           of type \Node%
3216 {\def\Element%
3217 {0:1323}}maisql-\/invalid-\/spec-\/error\endNode{} is
3218           signalled.  If during the connection attempt an error is
3219           detected (e.g. because of permission problems, network
3220           trouble  or any other cause), an error of type
3221           \Node%
3222 {\def\Element%
3223 {0:1324}}maisql-\/connect-\/error\endNode{} is
3224           signalled.\endNode{}\Node%
3225 {\def\Element%
3226 {0:1325}}If a connection to the database specified by
3227           \Node%
3228 {\def\Element%
3229 {0:1326}}connection-\/spec\endNode{} exists already,
3230           conditions are signalled according to the
3231           \Node%
3232 {\def\Element%
3233 {0:1327}}if-\/exists\endNode{} parameter, as described
3234           above.\endNode{}\endNode{}\Node%
3235 {\def\Element%
3236 {0:1328}}\Node%
3237 {\def\Element%
3238 {0:1329}}See Also\endNode{}\Node%
3239 {\def\Element%
3240 {0:1330}}       \Node%
3241 {\def\Element%
3242 {0:1331}}\Node%
3243 {\def\Element%
3244 {0:1332}}\Node%
3245 {\def\Element%
3246 {0:1333}}connected-\/databases\endNode{}\endNode{}\Node%
3247 {\def\Element%
3248 {0:1334}}\Node%
3249 {\def\Element%
3250 {0:1335}}\Node%
3251 {\def\Element%
3252 {0:1336}}disconnect\endNode{}\endNode{}\endNode{}\endNode{}
3253         \endNode{}\endNode{}\Node%
3254 {\def\Element%
3255 {0:1337}}\Node%
3256 {\def\Element%
3257 {0:1338}}Notes\endNode{}\Node%
3258 {\def\Element%
3259 {0:1339}}None.\endNode{}\endNode{}\endNode{}\Node%
3260 {\def\Label%
3261 {0:DISCONNECT}}\Node%
3262 {\def\Element%
3263 {0:1341}}\Node%
3264 {\def\Element%
3265 {0:1342}}DISCONNECT\endNode{}\Node%
3266 {\def\Element%
3267 {0:1343}}close a database connection\endNode{}\Node%
3268 {\def\Element%
3269 {0:1344}}Function\endNode{}\endNode{}\Node%
3270 {\def\Element%
3271 {0:1345}}\Node%
3272 {\def\Element%
3273 {0:1346}}Syntax\endNode{}\Node%
3274 {\def\Element%
3275 {0:1347}}\Node%
3276 {\def\Element%
3277 {0:1348}}disconnect\endNode{} \Entity{amp}key \Node%
3278 {\def\Element%
3279 {0:1349}}database\endNode{} =>\/ \Node%
3280 {\def\Element%
3281 {0:1350}}t\endNode{}\endNode{}\endNode{}\Node%
3282 {\def\Element%
3283 {0:1351}}\Node%
3284 {\def\Element%
3285 {0:1352}}Arguments and Values\endNode{}\Node%
3286 {\def\Element%
3287 {0:1353}}\Node%
3288 {\def\Element%
3289 {0:1354}}\Node%
3290 {\def\Element%
3291 {0:1355}}\Node%
3292 {\def\Element%
3293 {0:1356}}database\endNode{}\endNode{}\Node%
3294 {\def\Element%
3295 {0:1357}}\Node%
3296 {\def\Element%
3297 {0:1358}}The database to disconnect, which defaults to the
3298                 database indicated by
3299                 \Node%
3300 {\def\Element%
3301 {0:1359}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
3302 {\def\Element%
3303 {0:1360}}\Node%
3304 {\def\Element%
3305 {0:1361}}Description\endNode{}\Node%
3306 {\def\Element%
3307 {0:1362}}This function takes a \Node%
3308 {\def\Element%
3309 {0:1363}}database\endNode{} object as
3310           returned by \Node%
3311 {\def\Element%
3312 {0:1364}}connect\endNode{}, and closes the
3313           connection.  The class of the object passed is changed to
3314           \Node%
3315 {\def\Element%
3316 {0:1365}}closed-\/database\endNode{} after the disconnection
3317           succeeds,  thereby preventing further use of the object as
3318           an argument to \Node%
3319 {\def\Element%
3320 {0:1366}}\Node%
3321 {\def\Element%
3322 {0:1367}}CLSQL\endNode{}\endNode{} functions,
3323           with the exception of \Node%
3324 {\def\Element%
3325 {0:1368}}database-\/name\endNode{}.
3326           If the user does pass a  closed database object to any other
3327           \Node%
3328 {\def\Element%
3329 {0:1369}}\Node%
3330 {\def\Element%
3331 {0:1370}}CLSQL\endNode{}\endNode{} function, an error of type
3332           \Node%
3333 {\def\Element%
3334 {0:1371}}maisql-\/closed-\/error\endNode{} is
3335           signalled.\endNode{}\endNode{}\Node%
3336 {\def\Element%
3337 {0:1372}}\Node%
3338 {\def\Element%
3339 {0:1373}}Examples\endNode{}\Node%
3340 {\def\Element%
3341 {0:1374}}(disconnect :database (find-\/database "dent/newesim/dent"))
3342 =>\/ T
3343         \endNode{}\endNode{}\Node%
3344 {\def\Element%
3345 {0:1375}}\Node%
3346 {\def\Element%
3347 {0:1376}}Side Effects\endNode{}\Node%
3348 {\def\Element%
3349 {0:1377}}The database connection is closed, and the database
3350           object is removed from the list of connected databases as
3351           returned by \Node%
3352 {\def\Element%
3353 {0:1378}}connected-\/databases\endNode{}.\endNode{}\Node%
3354 {\def\Element%
3355 {0:1379}}The class of the database object is changed to
3356           \Node%
3357 {\def\Element%
3358 {0:1380}}closed-\/database\endNode{}.\endNode{}\Node%
3359 {\def\Element%
3360 {0:1381}}If the database object passed is the same under
3361           \Node%
3362 {\def\Element%
3363 {0:1382}}eq\endNode{} as the value of
3364           \Node%
3365 {\def\Element%
3366 {0:1383}}*default-\/database*\endNode{}, then
3367           \Node%
3368 {\def\Element%
3369 {0:1384}}*default-\/database*\endNode{} is set to the first
3370           remaining database from
3371           \Node%
3372 {\def\Element%
3373 {0:1385}}connected-\/databases\endNode{} or to nil if no
3374           further active database exists.\endNode{}\endNode{}\Node%
3375 {\def\Element%
3376 {0:1386}}\Node%
3377 {\def\Element%
3378 {0:1387}}Affected by\endNode{}\Node%
3379 {\def\Element%
3380 {0:1388}}       \Node%
3381 {\def\Element%
3382 {0:1389}}\Node%
3383 {\def\Element%
3384 {0:1390}}\Node%
3385 {\def\Element%
3386 {0:1391}}*default-\/database*\endNode{}\endNode{}\endNode{}
3387         \endNode{}\endNode{}\Node%
3388 {\def\Element%
3389 {0:1392}}\Node%
3390 {\def\Element%
3391 {0:1393}}Exceptional Situations\endNode{}\Node%
3392 {\def\Element%
3393 {0:1394}}If during the disconnection attempt an error is
3394           detected (e.g. because of network trouble or any other
3395           cause), an error of type \Node%
3396 {\def\Element%
3397 {0:1395}}maisql-\/error\endNode{} 
3398           might be signalled.\endNode{}\endNode{}\Node%
3399 {\def\Element%
3400 {0:1396}}\Node%
3401 {\def\Element%
3402 {0:1397}}See Also\endNode{}\Node%
3403 {\def\Element%
3404 {0:1398}}       \Node%
3405 {\def\Element%
3406 {0:1399}}\Node%
3407 {\def\Element%
3408 {0:1400}}\Node%
3409 {\def\Element%
3410 {0:1401}}\Node%
3411 {\def\Element%
3412 {0:1402}}connect\endNode{}\endNode{}\endNode{}\Node%
3413 {\def\Element%
3414 {0:1403}}\Node%
3415 {\def\Element%
3416 {0:1404}}\Node%
3417 {\def\Element%
3418 {0:1405}}closed-\/database\endNode{}\endNode{}\endNode{}\endNode{}
3419         \endNode{}\endNode{}\Node%
3420 {\def\Element%
3421 {0:1406}}\Node%
3422 {\def\Element%
3423 {0:1407}}Notes\endNode{}\Node%
3424 {\def\Element%
3425 {0:1408}}None.\endNode{}\endNode{}\endNode{}\Node%
3426 {\def\Label%
3427 {0:DATABASE-NAME-FROM-SPEC}}\Node%
3428 {\def\Element%
3429 {0:1410}}\Node%
3430 {\def\Element%
3431 {0:1411}}DATABASE-\/NAME-\/FROM-\/SPEC\endNode{}\Node%
3432 {\def\Element%
3433 {0:1412}}Return the database name string corresponding to
3434           the given connection specification.\endNode{}\Node%
3435 {\def\Element%
3436 {0:1413}}Generic Function\endNode{}\endNode{}\Node%
3437 {\def\Element%
3438 {0:1414}}\Node%
3439 {\def\Element%
3440 {0:1415}}Syntax\endNode{}\Node%
3441 {\def\Element%
3442 {0:1416}}         \Node%
3443 {\def\Element%
3444 {0:1417}}database-\/name-\/from-\/spec\endNode{} \Node%
3445 {\def\Element%
3446 {0:1418}}connection-\/spec\endNode{} \Node%
3447 {\def\Element%
3448 {0:1419}}database-\/type\endNode{} =>\/ \Node%
3449 {\def\Element%
3450 {0:1420}}name\endNode{}\endNode{}\endNode{}\Node%
3451 {\def\Element%
3452 {0:1421}}\Node%
3453 {\def\Element%
3454 {0:1422}}Arguments and Values\endNode{}\Node%
3455 {\def\Element%
3456 {0:1423}}\Node%
3457 {\def\Element%
3458 {0:1424}}\Node%
3459 {\def\Element%
3460 {0:1425}}\Node%
3461 {\def\Element%
3462 {0:1426}}connection-\/spec\endNode{}\endNode{}\Node%
3463 {\def\Element%
3464 {0:1427}}\Node%
3465 {\def\Element%
3466 {0:1428}}A connection specification, whose structure and
3467                 interpretation are dependent on the
3468                 \Node%
3469 {\def\Element%
3470 {0:1429}}database-\/type\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
3471 {\def\Element%
3472 {0:1430}}\Node%
3473 {\def\Element%
3474 {0:1431}}\Node%
3475 {\def\Element%
3476 {0:1432}}database-\/type\endNode{}\endNode{}\Node%
3477 {\def\Element%
3478 {0:1433}}\Node%
3479 {\def\Element%
3480 {0:1434}}A database type specifier, i.e. a keyword.\endNode{}\endNode{}\endNode{}\Node%
3481 {\def\Element%
3482 {0:1435}}\Node%
3483 {\def\Element%
3484 {0:1436}}\Node%
3485 {\def\Element%
3486 {0:1437}}name\endNode{}\endNode{}\Node%
3487 {\def\Element%
3488 {0:1438}}\Node%
3489 {\def\Element%
3490 {0:1439}}A string denoting a database name.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
3491 {\def\Element%
3492 {0:1440}}\Node%
3493 {\def\Element%
3494 {0:1441}}Description\endNode{}\Node%
3495 {\def\Element%
3496 {0:1442}}This generic function takes a connection specification
3497           and a database type and returns the database name of the
3498           database object that would be created had
3499           \Node%
3500 {\def\Element%
3501 {0:1443}}connect\endNode{} been called with the given
3502           connection specification and database types.\endNode{}\Node%
3503 {\def\Element%
3504 {0:1444}}This function is useful in determining a database name
3505           from the connection specification, since the way the
3506           connection specification is converted into a database name
3507           is dependent on the database type.\endNode{}\endNode{}\Node%
3508 {\def\Element%
3509 {0:1445}}\Node%
3510 {\def\Element%
3511 {0:1446}}Examples\endNode{}\Node%
3512 {\def\Element%
3513 {0:1447}}(database-\/name-\/from-\/spec '("dent" "newesim" "dent" "dent") :mysql)
3514 =>\/ "dent/newesim/dent"
3515 (connect '("dent" "newesim" "dent" "dent") :database-\/type :mysql)
3516 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{48391DCD\}>\/
3517 (database-\/name *default-\/database*)
3518 =>\/ "dent/newesim/dent"
3519
3520 (database-\/name-\/from-\/spec '(nil "template1" "dent" nil) :postgresql)
3521 =>\/ "/template1/dent"
3522 (connect '(nil "template1" "dent" nil) :database-\/type :postgresql)
3523 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
3524 (database-\/name *default-\/database*)
3525 =>\/ "/template1/dent"
3526
3527 (database-\/name-\/from-\/spec '("www.pmsf.de" "template1" "dent" nil) :postgresql)
3528 =>\/ "www.pmsf.de/template1/dent"
3529
3530 (find-\/database "dent/newesim/dent")
3531 =>\/ \#\Entity{lt}CLSQL-\/MYSQL:MYSQL-\/DATABASE \{484E91C5\}>\/
3532 (find-\/database "/template1/dent")
3533 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
3534 (find-\/database "www.pmsf.de/template1/dent" nil)
3535 =>\/ NIL
3536 (find-\/database **)
3537 =>\/ \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{48392D2D\}>\/
3538         \endNode{}\endNode{}\Node%
3539 {\def\Element%
3540 {0:1448}}\Node%
3541 {\def\Element%
3542 {0:1449}}Side Effects\endNode{}\Node%
3543 {\def\Element%
3544 {0:1450}}None.\endNode{}\endNode{}\Node%
3545 {\def\Element%
3546 {0:1451}}\Node%
3547 {\def\Element%
3548 {0:1452}}Affected by\endNode{}\Node%
3549 {\def\Element%
3550 {0:1453}}None.\endNode{}\endNode{}\Node%
3551 {\def\Element%
3552 {0:1454}}\Node%
3553 {\def\Element%
3554 {0:1455}}Exceptional Situations\endNode{}\Node%
3555 {\def\Element%
3556 {0:1456}}If the value of \Node%
3557 {\def\Element%
3558 {0:1457}}connection-\/spec\endNode{}
3559           is not a valid connection specification for the given
3560           database type, an error of type
3561           \Node%
3562 {\def\Element%
3563 {0:1458}}maisql-\/invalid-\/spec-\/error\endNode{} might be
3564           signalled.\endNode{}\endNode{}\Node%
3565 {\def\Element%
3566 {0:1459}}\Node%
3567 {\def\Element%
3568 {0:1460}}See Also\endNode{}\Node%
3569 {\def\Element%
3570 {0:1461}}       \Node%
3571 {\def\Element%
3572 {0:1462}}\Node%
3573 {\def\Element%
3574 {0:1463}}\Node%
3575 {\def\Element%
3576 {0:1464}}\Node%
3577 {\def\Element%
3578 {0:1465}}connect\endNode{}\endNode{}\endNode{}\endNode{}
3579         \endNode{}\endNode{}\Node%
3580 {\def\Element%
3581 {0:1466}}\Node%
3582 {\def\Element%
3583 {0:1467}}Notes\endNode{}\Node%
3584 {\def\Element%
3585 {0:1468}}None.\endNode{}\endNode{}\endNode{}\Node%
3586 {\def\Label%
3587 {0:EXECUTE-COMMAND}}\Node%
3588 {\def\Element%
3589 {0:1470}}\Node%
3590 {\def\Element%
3591 {0:1471}}EXECUTE-\/COMMAND\endNode{}\Node%
3592 {\def\Element%
3593 {0:1472}}Execute an SQL command which returns no
3594           values.\endNode{}\Node%
3595 {\def\Element%
3596 {0:1473}}Function\endNode{}\endNode{}\Node%
3597 {\def\Element%
3598 {0:1474}}\Node%
3599 {\def\Element%
3600 {0:1475}}Syntax\endNode{}\Node%
3601 {\def\Element%
3602 {0:1476}}\Node%
3603 {\def\Element%
3604 {0:1477}}execute-\/command\endNode{} \Node%
3605 {\def\Element%
3606 {0:1478}}sql-\/expression\endNode{} \Entity{amp}key \Node%
3607 {\def\Element%
3608 {0:1479}}database\endNode{} =>\/ \Node%
3609 {\def\Element%
3610 {0:1480}}t\endNode{}\endNode{}\endNode{}\Node%
3611 {\def\Element%
3612 {0:1481}}\Node%
3613 {\def\Element%
3614 {0:1482}}Arguments and Values\endNode{}\Node%
3615 {\def\Element%
3616 {0:1483}}\Node%
3617 {\def\Element%
3618 {0:1484}}\Node%
3619 {\def\Element%
3620 {0:1485}}\Node%
3621 {\def\Element%
3622 {0:1486}}sql-\/expression\endNode{}\endNode{}\Node%
3623 {\def\Element%
3624 {0:1487}}\Node%
3625 {\def\Element%
3626 {0:1488}}An \Node%
3627 {\def\Element%
3628 {0:1489}}sql
3629                   expression\endNode{} that represents an SQL
3630                 statement which will return no values.\endNode{}\endNode{}\endNode{}\Node%
3631 {\def\Element%
3632 {0:1490}}\Node%
3633 {\def\Element%
3634 {0:1491}}\Node%
3635 {\def\Element%
3636 {0:1492}}database\endNode{}\endNode{}\Node%
3637 {\def\Element%
3638 {0:1493}}\Node%
3639 {\def\Element%
3640 {0:1494}}A 
3641                 \Node%
3642 {\def\Element%
3643 {0:1495}}database
3644                   object\endNode{}. This will default to the value
3645                 of \Node%
3646 {\def\Element%
3647 {0:1496}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
3648 {\def\Element%
3649 {0:1497}}\Node%
3650 {\def\Element%
3651 {0:1498}}Description\endNode{}\Node%
3652 {\def\Element%
3653 {0:1499}}This will execute the command given by
3654           \Node%
3655 {\def\Element%
3656 {0:1500}}sql-\/expression\endNode{} in the
3657           \Node%
3658 {\def\Element%
3659 {0:1501}}database\endNode{} specified.  If the execution 
3660           succeeds it will return \Node%
3661 {\def\Element%
3662 {0:1502}}t\endNode{}, otherwise an
3663           error of type \Node%
3664 {\def\Element%
3665 {0:1503}}maisql-\/sql-\/error\endNode{} will
3666           be signalled.\endNode{}\endNode{}\Node%
3667 {\def\Element%
3668 {0:1504}}\Node%
3669 {\def\Element%
3670 {0:1505}}Examples\endNode{}\Node%
3671 {\def\Element%
3672 {0:1506}}(execute-\/command "create table eventlog (time char(30),event char(70))")
3673 =>\/ T
3674
3675 (execute-\/command "create table eventlog (time char(30),event char(70))")
3676 >\/>\/ 
3677 >\/>\/ While accessing database \#\Entity{lt}CLSQL-\/POSTGRESQL:POSTGRESQL-\/DATABASE \{480B2B6D\}>\/
3678 >\/>\/   with expression "create table eventlog (time char(30),event char(70))":
3679 >\/>\/   Error NIL: ERROR:  amcreate: eventlog relation already exists
3680 >\/>\/   has occurred.
3681 >\/>\/ 
3682 >\/>\/ Restarts:
3683 >\/>\/   0: [ABORT] Return to Top-\/Level.
3684 >\/>\/ 
3685 >\/>\/ Debug  (type H for help)
3686 >\/>\/ 
3687 >\/>\/ (CLSQL-\/POSTGRESQL::|(PCL::FAST-\/METHOD DATABASE-\/EXECUTE-\/COMMAND (T POSTGRESQL-\/DATABASE))|
3688 >\/>\/  \#\Entity{lt}unused-\/arg>\/
3689 >\/>\/  \#\Entity{lt}unused-\/arg>\/
3690 >\/>\/  \#\Entity{lt}unavailable-\/arg>\/
3691 >\/>\/  \#\Entity{lt}unavailable-\/arg>\/)
3692 >\/>\/ Source: (ERROR 'CLSQL-\/SQL-\/ERROR :DATABASE DATABASE :EXPRESSION ...)
3693 >\/>\/ 0] 0
3694
3695 (execute-\/command "drop table eventlog")
3696 =>\/ T
3697         \endNode{}\endNode{}\Node%
3698 {\def\Element%
3699 {0:1507}}\Node%
3700 {\def\Element%
3701 {0:1508}}Side Effects\endNode{}\Node%
3702 {\def\Element%
3703 {0:1509}}Whatever effects the execution of the SQL statement has
3704           on the underlying database, if any.\endNode{}\endNode{}\Node%
3705 {\def\Element%
3706 {0:1510}}\Node%
3707 {\def\Element%
3708 {0:1511}}Affected by\endNode{}\Node%
3709 {\def\Element%
3710 {0:1512}}None.\endNode{}\endNode{}\Node%
3711 {\def\Element%
3712 {0:1513}}\Node%
3713 {\def\Element%
3714 {0:1514}}Exceptional Situations\endNode{}\Node%
3715 {\def\Element%
3716 {0:1515}}If the execution of  the SQL statement leads to any
3717           errors, an error of type
3718           \Node%
3719 {\def\Element%
3720 {0:1516}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\endNode{}\Node%
3721 {\def\Element%
3722 {0:1517}}\Node%
3723 {\def\Element%
3724 {0:1518}}See Also\endNode{}\Node%
3725 {\def\Element%
3726 {0:1519}}       \Node%
3727 {\def\Element%
3728 {0:1520}}\Node%
3729 {\def\Element%
3730 {0:1521}}\Node%
3731 {\def\Element%
3732 {0:1522}}\Node%
3733 {\def\Element%
3734 {0:1523}}query\endNode{}\endNode{}\endNode{}\endNode{}
3735         \endNode{}\endNode{}\Node%
3736 {\def\Element%
3737 {0:1524}}\Node%
3738 {\def\Element%
3739 {0:1525}}Notes\endNode{}\Node%
3740 {\def\Element%
3741 {0:1526}}None.\endNode{}\endNode{}\endNode{}\Node%
3742 {\def\Label%
3743 {0:QUERY}}\Node%
3744 {\def\Element%
3745 {0:1528}}\Node%
3746 {\def\Element%
3747 {0:1529}}QUERY\endNode{}\Node%
3748 {\def\Element%
3749 {0:1530}}Execute an SQL query and return the tuples as a
3750           list\endNode{}\Node%
3751 {\def\Element%
3752 {0:1531}}Function\endNode{}\endNode{}\Node%
3753 {\def\Element%
3754 {0:1532}}\Node%
3755 {\def\Element%
3756 {0:1533}}Syntax\endNode{}\Node%
3757 {\def\Element%
3758 {0:1534}}\Node%
3759 {\def\Element%
3760 {0:1535}}query\endNode{} \Node%
3761 {\def\Element%
3762 {0:1536}}query-\/expression\endNode{} \Entity{amp}key \Node%
3763 {\def\Element%
3764 {0:1537}}database\endNode{} \Node%
3765 {\def\Element%
3766 {0:1538}}types\endNode{} =>\/ \Node%
3767 {\def\Element%
3768 {0:1539}}result\endNode{}\endNode{}\endNode{}\Node%
3769 {\def\Element%
3770 {0:1540}}\Node%
3771 {\def\Element%
3772 {0:1541}}Arguments and Values\endNode{}\Node%
3773 {\def\Element%
3774 {0:1542}}\Node%
3775 {\def\Element%
3776 {0:1543}}\Node%
3777 {\def\Element%
3778 {0:1544}}\Node%
3779 {\def\Element%
3780 {0:1545}}query-\/expression\endNode{}\endNode{}\Node%
3781 {\def\Element%
3782 {0:1546}}\Node%
3783 {\def\Element%
3784 {0:1547}}An \Node%
3785 {\def\Element%
3786 {0:1548}}sql
3787                   expression\endNode{} that represents an SQL
3788                 query which is expected to return a (possibly empty)
3789                 result set.\endNode{}\endNode{}\endNode{}\Node%
3790 {\def\Element%
3791 {0:1549}}\Node%
3792 {\def\Element%
3793 {0:1550}}\Node%
3794 {\def\Element%
3795 {0:1551}}database\endNode{}\endNode{}\Node%
3796 {\def\Element%
3797 {0:1552}}\Node%
3798 {\def\Element%
3799 {0:1553}}A 
3800                 \Node%
3801 {\def\Element%
3802 {0:1554}}database
3803                   object\endNode{}. This will default to the value
3804                 of \Node%
3805 {\def\Element%
3806 {0:1555}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
3807 {\def\Element%
3808 {0:1556}}\Node%
3809 {\def\Element%
3810 {0:1557}}\Node%
3811 {\def\Element%
3812 {0:1558}}types\endNode{}\endNode{}\Node%
3813 {\def\Element%
3814 {0:1559}}\Node%
3815 {\def\Element%
3816 {0:1560}}A 
3817                 \Node%
3818 {\def\Element%
3819 {0:1561}}field type
3820                   specififier\endNode{}. The default is \Node%
3821 {\def\Element%
3822 {0:1562}}NIL\endNode{}.
3823                 \endNode{}\Node%
3824 {\def\Element%
3825 {0:1563}}                 The purpose of this argument is cause \Node%
3826 {\def\Element%
3827 {0:1564}}\Node%
3828 {\def\Element%
3829 {0:1565}}CLSQL\endNode{}\endNode{} to
3830                   import SQL numeric fields into numeric Lisp objects
3831                   rather than strings. This reduces the cost of
3832                   allocating a temporary string and the \Node%
3833 {\def\Element%
3834 {0:1566}}\Node%
3835 {\def\Element%
3836 {0:1567}}CLSQL\endNode{}\endNode{} users'
3837                   inconvenience of converting number strings into number
3838                   objects.
3839                 \endNode{}\Node%
3840 {\def\Element%
3841 {0:1568}}                 A value of \Node%
3842 {\def\Element%
3843 {0:1569}}:auto\endNode{} causes \Node%
3844 {\def\Element%
3845 {0:1570}}\Node%
3846 {\def\Element%
3847 {0:1571}}CLSQL\endNode{}\endNode{}
3848                   to automatically convert SQL fields into a
3849                   numeric format where applicable. The default value of
3850                   \Node%
3851 {\def\Element%
3852 {0:1572}}NIL\endNode{} causes all fields to be returned as strings
3853                   regardless of the SQL type. Otherwise a list is expected
3854                   which has a element for each field that specifies the
3855                   conversion. If the list is shorter than the number
3856                   of fields, the a value of \Node%
3857 {\def\Element%
3858 {0:1573}}t\endNode{} is
3859                   assumed for the field.  If the list is longer than
3860                   the number of fields, the extra elements are
3861                   ignored.
3862                   \Node%
3863 {\def\Element%
3864 {0:1574}}\Node%
3865 {\def\Element%
3866 {0:1575}}\Node%
3867 {\def\Element%
3868 {0:1576}}:int\endNode{} Field is imported as a
3869                       signed integer, from 8-\/bits to 64-\/bits depending
3870                       upon the field type.
3871                     \endNode{}\Node%
3872 {\def\Element%
3873 {0:1577}}\Node%
3874 {\def\Element%
3875 {0:1578}}:double\endNode{} Field is imported as a
3876                       double-\/float number.
3877                     \endNode{}\Node%
3878 {\def\Element%
3879 {0:1579}}\Node%
3880 {\def\Element%
3881 {0:1580}}t\endNode{} Field is imported as a
3882                       string.
3883                     \endNode{}\endNode{}
3884                 \endNode{}\endNode{}\endNode{}\Node%
3885 {\def\Element%
3886 {0:1581}}\Node%
3887 {\def\Element%
3888 {0:1582}}\Node%
3889 {\def\Element%
3890 {0:1583}}result\endNode{}\endNode{}\Node%
3891 {\def\Element%
3892 {0:1584}}\Node%
3893 {\def\Element%
3894 {0:1585}}A list representing the result set obtained.  For
3895                 each tuple in the result set, there is an element in
3896                 this list, which is itself a list of all the attribute 
3897                 values in the tuple.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
3898 {\def\Element%
3899 {0:1586}}\Node%
3900 {\def\Element%
3901 {0:1587}}Description\endNode{}\Node%
3902 {\def\Element%
3903 {0:1588}}This will execute the query given by
3904           \Node%
3905 {\def\Element%
3906 {0:1589}}query-\/expression\endNode{} in the
3907           \Node%
3908 {\def\Element%
3909 {0:1590}}database\endNode{} specified.  If the execution 
3910           succeeds it will return the result set returned by the
3911           database, otherwise an error of type
3912           \Node%
3913 {\def\Element%
3914 {0:1591}}maisql-\/sql-\/error\endNode{} will 
3915           be signalled.\endNode{}\endNode{}\Node%
3916 {\def\Element%
3917 {0:1592}}\Node%
3918 {\def\Element%
3919 {0:1593}}Examples\endNode{}\Node%
3920 {\def\Element%
3921 {0:1594}}(execute-\/command "create table simple (name char(50), salary numeric(10,2))")
3922 =>\/ T
3923 (execute-\/command "insert into simple values ('Mai, Pierre',10000)")
3924 =>\/ T
3925 (execute-\/command "insert into simple values ('Hacker, Random J.',8000.50)")
3926 =>\/ T
3927 (query "select * from simple")
3928 =>\/ (("Mai, Pierre" "10000.00") ("Hacker, Random J." "8000.50"))
3929 (query "select salary from simple")
3930 =>\/ (("10000.00") ("8000.50"))
3931 (query "select salary from simple where salary >\/ 10000")
3932 =>\/ NIL
3933 (query "select salary,name from simple where salary >\/ 10000")
3934 =>\/ NIL
3935 (query "select salary,name from simple where salary >\/ 9000")
3936 =>\/ (("10000.00" "Mai, Pierre"))
3937 (query "select salary,name from simple where salary >\/ 8000")
3938 =>\/ (("10000.00" "Mai, Pierre") ("8000.50" "Hacker, Random J."))
3939
3940 ;; MySQL-\/specific:
3941 (query "show tables")
3942 =>\/ (("demo") ("log") ("newlog") ("simple") ("spacetrial"))
3943         \endNode{}\endNode{}\Node%
3944 {\def\Element%
3945 {0:1595}}\Node%
3946 {\def\Element%
3947 {0:1596}}Side Effects\endNode{}\Node%
3948 {\def\Element%
3949 {0:1597}}Whatever effects the execution of the SQL query has
3950           on the underlying database, if any.\endNode{}\endNode{}\Node%
3951 {\def\Element%
3952 {0:1598}}\Node%
3953 {\def\Element%
3954 {0:1599}}Affected by\endNode{}\Node%
3955 {\def\Element%
3956 {0:1600}}None.\endNode{}\endNode{}\Node%
3957 {\def\Element%
3958 {0:1601}}\Node%
3959 {\def\Element%
3960 {0:1602}}Exceptional Situations\endNode{}\Node%
3961 {\def\Element%
3962 {0:1603}}If the execution of  the SQL query leads to any
3963           errors, an error of type
3964           \Node%
3965 {\def\Element%
3966 {0:1604}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\endNode{}\Node%
3967 {\def\Element%
3968 {0:1605}}\Node%
3969 {\def\Element%
3970 {0:1606}}See Also\endNode{}\Node%
3971 {\def\Element%
3972 {0:1607}}       \Node%
3973 {\def\Element%
3974 {0:1608}}\Node%
3975 {\def\Element%
3976 {0:1609}}\Node%
3977 {\def\Element%
3978 {0:1610}}\Node%
3979 {\def\Element%
3980 {0:1611}}execute-\/command\endNode{}\endNode{}\endNode{}\endNode{}
3981         \endNode{}\endNode{}\Node%
3982 {\def\Element%
3983 {0:1612}}\Node%
3984 {\def\Element%
3985 {0:1613}}Notes\endNode{}\Node%
3986 {\def\Element%
3987 {0:1614}}None.\endNode{}\endNode{}\endNode{}\Node%
3988 {\def\Label%
3989 {0:MAP-QUERY}}\Node%
3990 {\def\Element%
3991 {0:1616}}\Node%
3992 {\def\Element%
3993 {0:1617}}MAP-\/QUERY\endNode{}\Node%
3994 {\def\Element%
3995 {0:1618}}Map a function over all the tuples from a
3996           query\endNode{}\Node%
3997 {\def\Element%
3998 {0:1619}}Function\endNode{}\endNode{}\Node%
3999 {\def\Element%
4000 {0:1620}}\Node%
4001 {\def\Element%
4002 {0:1621}}Syntax\endNode{}\Node%
4003 {\def\Element%
4004 {0:1622}}\Node%
4005 {\def\Element%
4006 {0:1623}}map-\/query\endNode{} \Node%
4007 {\def\Element%
4008 {0:1624}}output-\/type-\/spec\endNode{} \Node%
4009 {\def\Element%
4010 {0:1625}}function\endNode{} \Node%
4011 {\def\Element%
4012 {0:1626}}query-\/expression\endNode{} \Entity{amp}key \Node%
4013 {\def\Element%
4014 {0:1627}}database\endNode{} \Node%
4015 {\def\Element%
4016 {0:1628}}types\endNode{} =>\/ \Node%
4017 {\def\Element%
4018 {0:1629}}result\endNode{}\endNode{}\endNode{}\Node%
4019 {\def\Element%
4020 {0:1630}}\Node%
4021 {\def\Element%
4022 {0:1631}}Arguments and Values\endNode{}\Node%
4023 {\def\Element%
4024 {0:1632}}\Node%
4025 {\def\Element%
4026 {0:1633}}\Node%
4027 {\def\Element%
4028 {0:1634}}\Node%
4029 {\def\Element%
4030 {0:1635}}output-\/type-\/spec\endNode{}\endNode{}\Node%
4031 {\def\Element%
4032 {0:1636}}\Node%
4033 {\def\Element%
4034 {0:1637}}A sequence type specifier or \Node%
4035 {\def\Element%
4036 {0:1638}}nil\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
4037 {\def\Element%
4038 {0:1639}}\Node%
4039 {\def\Element%
4040 {0:1640}}\Node%
4041 {\def\Element%
4042 {0:1641}}function\endNode{}\endNode{}\Node%
4043 {\def\Element%
4044 {0:1642}}\Node%
4045 {\def\Element%
4046 {0:1643}}A function designator.
4047                 \Node%
4048 {\def\Element%
4049 {0:1644}}function\endNode{} must take as many
4050                 arguments as are attributes in the result set returned
4051                 by executing the SQL
4052                 \Node%
4053 {\def\Element%
4054 {0:1645}}query-\/expression\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
4055 {\def\Element%
4056 {0:1646}}\Node%
4057 {\def\Element%
4058 {0:1647}}\Node%
4059 {\def\Element%
4060 {0:1648}}query-\/expression\endNode{}\endNode{}\Node%
4061 {\def\Element%
4062 {0:1649}}\Node%
4063 {\def\Element%
4064 {0:1650}}An \Node%
4065 {\def\Element%
4066 {0:1651}}sql
4067                   expression\endNode{} that represents an SQL
4068                 query which is expected to return a (possibly empty)
4069                 result set, where each tuple has as many attributes as 
4070                 \Node%
4071 {\def\Element%
4072 {0:1652}}function\endNode{} takes arguments.\endNode{}\endNode{}\endNode{}\Node%
4073 {\def\Element%
4074 {0:1653}}\Node%
4075 {\def\Element%
4076 {0:1654}}\Node%
4077 {\def\Element%
4078 {0:1655}}database\endNode{}\endNode{}\Node%
4079 {\def\Element%
4080 {0:1656}}\Node%
4081 {\def\Element%
4082 {0:1657}}A 
4083                 \Node%
4084 {\def\Element%
4085 {0:1658}}database
4086                   object\endNode{}. This will default to the value
4087                 of \Node%
4088 {\def\Element%
4089 {0:1659}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
4090 {\def\Element%
4091 {0:1660}}\Node%
4092 {\def\Element%
4093 {0:1661}}\Node%
4094 {\def\Element%
4095 {0:1662}}types\endNode{}\endNode{}\Node%
4096 {\def\Element%
4097 {0:1663}}\Node%
4098 {\def\Element%
4099 {0:1664}}               A \Node%
4100 {\def\Element%
4101 {0:1665}}field type specififier\endNode{}. 
4102                 The default is \Node%
4103 {\def\Element%
4104 {0:1666}}NIL\endNode{}. See \Node%
4105 {\def\Element%
4106 {0:1667}}\Node%
4107 {\def\Element%
4108 {0:1668}}query\endNode{}\endNode{}
4109                 for the semantics of this argument.  
4110               \endNode{}\endNode{}\endNode{}\Node%
4111 {\def\Element%
4112 {0:1669}}\Node%
4113 {\def\Element%
4114 {0:1670}}\Node%
4115 {\def\Element%
4116 {0:1671}}result\endNode{}\endNode{}\Node%
4117 {\def\Element%
4118 {0:1672}}\Node%
4119 {\def\Element%
4120 {0:1673}}If \Node%
4121 {\def\Element%
4122 {0:1674}}output-\/type-\/spec\endNode{} is a
4123                 type specifier other than \Node%
4124 {\def\Element%
4125 {0:1675}}nil\endNode{}, then a 
4126                 sequence of the type it denotes.  Otherwise
4127                 \Node%
4128 {\def\Element%
4129 {0:1676}}nil\endNode{} is returned.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
4130 {\def\Element%
4131 {0:1677}}\Node%
4132 {\def\Element%
4133 {0:1678}}Description\endNode{}\Node%
4134 {\def\Element%
4135 {0:1679}}Applies \Node%
4136 {\def\Element%
4137 {0:1680}}function\endNode{} to the
4138           attributes of successive tuples in the result set returned
4139           by executing the SQL
4140           \Node%
4141 {\def\Element%
4142 {0:1681}}query-\/expression\endNode{}.  If the
4143           \Node%
4144 {\def\Element%
4145 {0:1682}}output-\/type-\/spec\endNode{} is
4146           \Node%
4147 {\def\Element%
4148 {0:1683}}nil\endNode{}, then the result of each application
4149           of \Node%
4150 {\def\Element%
4151 {0:1684}}function\endNode{} is discarded, and
4152           \Node%
4153 {\def\Element%
4154 {0:1685}}map-\/query\endNode{} returns
4155           \Node%
4156 {\def\Element%
4157 {0:1686}}nil\endNode{}.  Otherwise the result of each
4158           successive application of \Node%
4159 {\def\Element%
4160 {0:1687}}function\endNode{} is 
4161           collected in a sequence of type
4162           \Node%
4163 {\def\Element%
4164 {0:1688}}output-\/type-\/spec\endNode{}, where the jths
4165           element is the result of applying
4166           \Node%
4167 {\def\Element%
4168 {0:1689}}function\endNode{} to the attributes of the
4169           jths tuple in the result set.  The collected sequence is the 
4170           result of the call to \Node%
4171 {\def\Element%
4172 {0:1690}}map-\/query\endNode{}.
4173         \endNode{}\Node%
4174 {\def\Element%
4175 {0:1691}}If the \Node%
4176 {\def\Element%
4177 {0:1692}}output-\/type-\/spec\endNode{} is a
4178           subtype of \Node%
4179 {\def\Element%
4180 {0:1693}}list\endNode{}, the result will be a
4181           \Node%
4182 {\def\Element%
4183 {0:1694}}list\endNode{}.\endNode{}\Node%
4184 {\def\Element%
4185 {0:1695}}If the \Node%
4186 {\def\Element%
4187 {0:1696}}result-\/type\endNode{} is a subtype
4188           of \Node%
4189 {\def\Element%
4190 {0:1697}}vector\endNode{}, then if the implementation can
4191           determine the element type specified for the
4192           \Node%
4193 {\def\Element%
4194 {0:1698}}result-\/type\endNode{}, the element type of the
4195           resulting array is the result of
4196           \Node%
4197 {\def\Element%
4198 {0:1699}}upgrading\endNode{} that element type; or, if the
4199           implementation can determine that the element type is
4200           unspecified (or \Node%
4201 {\def\Element%
4202 {0:1700}}*\endNode{}), the element type of the
4203           resulting array is \Node%
4204 {\def\Element%
4205 {0:1701}}t\endNode{}; otherwise, an error is
4206           signaled.\endNode{}\endNode{}\Node%
4207 {\def\Element%
4208 {0:1702}}\Node%
4209 {\def\Element%
4210 {0:1703}}Examples\endNode{}\Node%
4211 {\def\Element%
4212 {0:1704}}(map-\/query 'list \#'(lambda (salary name) 
4213                      (declare (ignorable name))
4214                      (read-\/from-\/string salary))
4215            "select salary,name from simple where salary >\/ 8000")
4216 =>\/ (10000.0 8000.5)
4217
4218 (map-\/query '(vector double-\/float)
4219            \#'(lambda (salary name)
4220                (declare (ignorable name))
4221                (let ((*read-\/default-\/float-\/format* 'double-\/float))
4222                  (coerce (read-\/from-\/string salary) 'double-\/float))
4223                   "select salary,name from simple where salary >\/ 8000"))
4224 =>\/ \#(10000.0d0 8000.5d0)
4225 (type-\/of *)
4226 =>\/ (SIMPLE-\/ARRAY DOUBLE-\/FLOAT (2))
4227
4228 (let (list)
4229   (values (map-\/query nil \#'(lambda (salary name) 
4230                              (push (cons name (read-\/from-\/string salary)) list))
4231                      "select salary,name from simple where salary >\/ 8000")
4232           list))
4233 =>\/ NIL
4234 =>\/ (("Hacker, Random J." . 8000.5) ("Mai, Pierre" . 10000.0))
4235         \endNode{}\endNode{}\Node%
4236 {\def\Element%
4237 {0:1705}}\Node%
4238 {\def\Element%
4239 {0:1706}}Side Effects\endNode{}\Node%
4240 {\def\Element%
4241 {0:1707}}Whatever effects the execution of the SQL query has
4242           on the underlying database, if any.\endNode{}\endNode{}\Node%
4243 {\def\Element%
4244 {0:1708}}\Node%
4245 {\def\Element%
4246 {0:1709}}Affected by\endNode{}\Node%
4247 {\def\Element%
4248 {0:1710}}None.\endNode{}\endNode{}\Node%
4249 {\def\Element%
4250 {0:1711}}\Node%
4251 {\def\Element%
4252 {0:1712}}Exceptional Situations\endNode{}\Node%
4253 {\def\Element%
4254 {0:1713}}If the execution of  the SQL query leads to any
4255           errors, an error of type
4256           \Node%
4257 {\def\Element%
4258 {0:1714}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\Node%
4259 {\def\Element%
4260 {0:1715}}An error of type \Node%
4261 {\def\Element%
4262 {0:1716}}type-\/error\endNode{} must
4263           be signaled if the \Node%
4264 {\def\Element%
4265 {0:1717}}output-\/type-\/spec\endNode{} is
4266           not a recognizable subtype of \Node%
4267 {\def\Element%
4268 {0:1718}}list\endNode{}, not a
4269           recognizable subtype of \Node%
4270 {\def\Element%
4271 {0:1719}}vector\endNode{}, and not
4272           \Node%
4273 {\def\Element%
4274 {0:1720}}nil\endNode{}.\endNode{}\Node%
4275 {\def\Element%
4276 {0:1721}}An error of type \Node%
4277 {\def\Element%
4278 {0:1722}}type-\/error\endNode{}
4279           should be signaled if
4280           \Node%
4281 {\def\Element%
4282 {0:1723}}output-\/type-\/spec\endNode{} specifies the number
4283           of elements and the size of the result set is different from
4284           that number.\endNode{}\endNode{}\Node%
4285 {\def\Element%
4286 {0:1724}}\Node%
4287 {\def\Element%
4288 {0:1725}}See Also\endNode{}\Node%
4289 {\def\Element%
4290 {0:1726}}       \Node%
4291 {\def\Element%
4292 {0:1727}}\Node%
4293 {\def\Element%
4294 {0:1728}}\Node%
4295 {\def\Element%
4296 {0:1729}}\Node%
4297 {\def\Element%
4298 {0:1730}}query\endNode{}\endNode{}\endNode{}\Node%
4299 {\def\Element%
4300 {0:1731}}\Node%
4301 {\def\Element%
4302 {0:1732}}\Node%
4303 {\def\Element%
4304 {0:1733}}do-\/query\endNode{}\endNode{}\endNode{}\endNode{}
4305         \endNode{}\endNode{}\Node%
4306 {\def\Element%
4307 {0:1734}}\Node%
4308 {\def\Element%
4309 {0:1735}}Notes\endNode{}\Node%
4310 {\def\Element%
4311 {0:1736}}None.\endNode{}\endNode{}\endNode{}\Node%
4312 {\def\Label%
4313 {0:DO-QUERY}}\Node%
4314 {\def\Element%
4315 {0:1738}}\Node%
4316 {\def\Element%
4317 {0:1739}}DO-\/QUERY\endNode{}\Node%
4318 {\def\Element%
4319 {0:1740}}Iterate over all the tuples of a
4320         query\endNode{}\Node%
4321 {\def\Element%
4322 {0:1741}}Macro\endNode{}\endNode{}\Node%
4323 {\def\Element%
4324 {0:1742}}\Node%
4325 {\def\Element%
4326 {0:1743}}Syntax\endNode{}\Node%
4327 {\def\Element%
4328 {0:1744}}\Node%
4329 {\def\Element%
4330 {0:1745}}do-\/query\endNode{} ((\Entity{amp}rest \Node%
4331 {\def\Element%
4332 {0:1746}}args\endNode{}) \Node%
4333 {\def\Element%
4334 {0:1747}}query-\/expression\endNode{} \Entity{amp}key \Node%
4335 {\def\Element%
4336 {0:1748}}database\endNode{} \Node%
4337 {\def\Element%
4338 {0:1749}}types\endNode{}) \Entity{amp}body \Node%
4339 {\def\Element%
4340 {0:1750}}body\endNode{} =>\/ \Node%
4341 {\def\Element%
4342 {0:1751}}nil\endNode{}\endNode{}\endNode{}\Node%
4343 {\def\Element%
4344 {0:1752}}\Node%
4345 {\def\Element%
4346 {0:1753}}Arguments and Values\endNode{}\Node%
4347 {\def\Element%
4348 {0:1754}}\Node%
4349 {\def\Element%
4350 {0:1755}}\Node%
4351 {\def\Element%
4352 {0:1756}}\Node%
4353 {\def\Element%
4354 {0:1757}}args\endNode{}\endNode{}\Node%
4355 {\def\Element%
4356 {0:1758}}\Node%
4357 {\def\Element%
4358 {0:1759}}A list of variable names.\endNode{}\endNode{}\endNode{}\Node%
4359 {\def\Element%
4360 {0:1760}}\Node%
4361 {\def\Element%
4362 {0:1761}}\Node%
4363 {\def\Element%
4364 {0:1762}}query-\/expression\endNode{}\endNode{}\Node%
4365 {\def\Element%
4366 {0:1763}}\Node%
4367 {\def\Element%
4368 {0:1764}}An \Node%
4369 {\def\Element%
4370 {0:1765}}sql
4371                   expression\endNode{} that represents an SQL
4372                 query which is expected to return a (possibly empty)
4373                 result set, where each tuple has as many attributes as
4374                 \Node%
4375 {\def\Element%
4376 {0:1766}}function\endNode{} takes arguments.\endNode{}\endNode{}\endNode{}\Node%
4377 {\def\Element%
4378 {0:1767}}\Node%
4379 {\def\Element%
4380 {0:1768}}\Node%
4381 {\def\Element%
4382 {0:1769}}database\endNode{}\endNode{}\Node%
4383 {\def\Element%
4384 {0:1770}}\Node%
4385 {\def\Element%
4386 {0:1771}}A 
4387                 \Node%
4388 {\def\Element%
4389 {0:1772}}database
4390                   object\endNode{}. This will default to
4391                 \Node%
4392 {\def\Element%
4393 {0:1773}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
4394 {\def\Element%
4395 {0:1774}}\Node%
4396 {\def\Element%
4397 {0:1775}}\Node%
4398 {\def\Element%
4399 {0:1776}}types\endNode{}\endNode{}\Node%
4400 {\def\Element%
4401 {0:1777}}\Node%
4402 {\def\Element%
4403 {0:1778}}               A \Node%
4404 {\def\Element%
4405 {0:1779}}field type specififier\endNode{}. 
4406                 The default is \Node%
4407 {\def\Element%
4408 {0:1780}}NIL\endNode{}. See \Node%
4409 {\def\Element%
4410 {0:1781}}\Node%
4411 {\def\Element%
4412 {0:1782}}query\endNode{}\endNode{}
4413                 for the semantics of this argument.  
4414               \endNode{}\endNode{}\endNode{}\Node%
4415 {\def\Element%
4416 {0:1783}}\Node%
4417 {\def\Element%
4418 {0:1784}}\Node%
4419 {\def\Element%
4420 {0:1785}}body\endNode{}\endNode{}\Node%
4421 {\def\Element%
4422 {0:1786}}\Node%
4423 {\def\Element%
4424 {0:1787}}A body of Lisp code, like in a
4425                 \Node%
4426 {\def\Element%
4427 {0:1788}}destructuring-\/bind\endNode{} form.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
4428 {\def\Element%
4429 {0:1789}}\Node%
4430 {\def\Element%
4431 {0:1790}}Description\endNode{}\Node%
4432 {\def\Element%
4433 {0:1791}}Executes the \Node%
4434 {\def\Element%
4435 {0:1792}}body\endNode{} of code
4436           repeatedly with the variable names in
4437           \Node%
4438 {\def\Element%
4439 {0:1793}}args\endNode{} bound to the attributes of each
4440           tuple in the result set returned by executing the SQL
4441           \Node%
4442 {\def\Element%
4443 {0:1794}}query-\/expression\endNode{} on the
4444           \Node%
4445 {\def\Element%
4446 {0:1795}}database\endNode{} specified.\endNode{}\Node%
4447 {\def\Element%
4448 {0:1796}}The body of code is executed in a block named
4449           \Node%
4450 {\def\Element%
4451 {0:1797}}nil\endNode{} which may be returned from prematurely
4452           via \Node%
4453 {\def\Element%
4454 {0:1798}}return\endNode{} or
4455           \Node%
4456 {\def\Element%
4457 {0:1799}}return-\/from\endNode{}.  In this case the result
4458           of evaluating the \Node%
4459 {\def\Element%
4460 {0:1800}}do-\/query\endNode{} form will be 
4461           the one supplied to \Node%
4462 {\def\Element%
4463 {0:1801}}return\endNode{} or
4464           \Node%
4465 {\def\Element%
4466 {0:1802}}return-\/from\endNode{}.  Otherwise the result will 
4467           be \Node%
4468 {\def\Element%
4469 {0:1803}}nil\endNode{}.\endNode{}\Node%
4470 {\def\Element%
4471 {0:1804}}The body of code appears also is if wrapped in a
4472           \Node%
4473 {\def\Element%
4474 {0:1805}}destructuring-\/bind\endNode{} form, thus allowing
4475           declarations at the start of the body, especially those
4476           pertaining to the bindings of the variables named in
4477           \Node%
4478 {\def\Element%
4479 {0:1806}}args\endNode{}.\endNode{}\endNode{}\Node%
4480 {\def\Element%
4481 {0:1807}}\Node%
4482 {\def\Element%
4483 {0:1808}}Examples\endNode{}\Node%
4484 {\def\Element%
4485 {0:1809}}(do-\/query ((salary name) "select salary,name from simple")
4486   (format t "\char126{}30A gets \$\char126{}2,5\$\char126{}\%" name (read-\/from-\/string salary)))
4487 >\/>\/ Mai, Pierre                    gets \$10000.00
4488 >\/>\/ Hacker, Random J.              gets \$08000.50
4489 =>\/ NIL
4490
4491 (do-\/query ((salary name) "select salary,name from simple")
4492   (return (cons salary name)))
4493 =>\/ ("10000.00" . "Mai, Pierre")
4494         \endNode{}\endNode{}\Node%
4495 {\def\Element%
4496 {0:1810}}\Node%
4497 {\def\Element%
4498 {0:1811}}Side Effects\endNode{}\Node%
4499 {\def\Element%
4500 {0:1812}}Whatever effects the execution of the SQL query has
4501           on the underlying database, if any.\endNode{}\endNode{}\Node%
4502 {\def\Element%
4503 {0:1813}}\Node%
4504 {\def\Element%
4505 {0:1814}}Affected by\endNode{}\Node%
4506 {\def\Element%
4507 {0:1815}}None.\endNode{}\endNode{}\Node%
4508 {\def\Element%
4509 {0:1816}}\Node%
4510 {\def\Element%
4511 {0:1817}}Exceptional Situations\endNode{}\Node%
4512 {\def\Element%
4513 {0:1818}}If the execution of  the SQL query leads to any
4514           errors, an error of type
4515           \Node%
4516 {\def\Element%
4517 {0:1819}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\Node%
4518 {\def\Element%
4519 {0:1820}}If the number of variable names in
4520           \Node%
4521 {\def\Element%
4522 {0:1821}}args\endNode{} and the number of attributes in
4523           the tuples in the result set don't match up, an error is
4524           signalled.\endNode{}\endNode{}\Node%
4525 {\def\Element%
4526 {0:1822}}\Node%
4527 {\def\Element%
4528 {0:1823}}See Also\endNode{}\Node%
4529 {\def\Element%
4530 {0:1824}}       \Node%
4531 {\def\Element%
4532 {0:1825}}\Node%
4533 {\def\Element%
4534 {0:1826}}\Node%
4535 {\def\Element%
4536 {0:1827}}\Node%
4537 {\def\Element%
4538 {0:1828}}query\endNode{}\endNode{}\endNode{}\Node%
4539 {\def\Element%
4540 {0:1829}}\Node%
4541 {\def\Element%
4542 {0:1830}}\Node%
4543 {\def\Element%
4544 {0:1831}}map-\/query\endNode{}\endNode{}\endNode{}\endNode{}
4545         \endNode{}\endNode{}\Node%
4546 {\def\Element%
4547 {0:1832}}\Node%
4548 {\def\Element%
4549 {0:1833}}Notes\endNode{}\Node%
4550 {\def\Element%
4551 {0:1834}}None.\endNode{}\endNode{}\endNode{}\Node%
4552 {\def\Label%
4553 {0:LOOP-TUPLES}}\Node%
4554 {\def\Element%
4555 {0:1836}}\Node%
4556 {\def\Element%
4557 {0:1837}}LOOP-\/FOR-\/AS-\/TUPLES\endNode{}\Node%
4558 {\def\Element%
4559 {0:1838}}Iterate over all the tuples of a
4560         query via a loop clause\endNode{}\Node%
4561 {\def\Element%
4562 {0:1839}}Loop Clause\endNode{}\endNode{}\Node%
4563 {\def\Element%
4564 {0:1840}}\Node%
4565 {\def\Element%
4566 {0:1841}}Compatibility\endNode{}\Node%
4567 {\def\Element%
4568 {0:1842}}\Node%
4569 {\def\Element%
4570 {0:1843}}\Node%
4571 {\def\Element%
4572 {0:1844}}loop-\/for-\/as-\/tuples\endNode{} only works with \Node%
4573 {\def\Element%
4574 {0:1845}}CMUCL\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
4575 {\def\Element%
4576 {0:1846}}\Node%
4577 {\def\Element%
4578 {0:1847}}Syntax\endNode{}\Node%
4579 {\def\Element%
4580 {0:1848}}\Node%
4581 {\def\Element%
4582 {0:1849}}var\endNode{} [\Node%
4583 {\def\Element%
4584 {0:1850}}type-\/spec\endNode{}] being \{each | the\} \{record | records | tuple | tuples\} \{in | of\} \Node%
4585 {\def\Element%
4586 {0:1851}}query\endNode{} [from \Node%
4587 {\def\Element%
4588 {0:1852}}database\endNode{}]\endNode{}\endNode{}\Node%
4589 {\def\Element%
4590 {0:1853}}\Node%
4591 {\def\Element%
4592 {0:1854}}Arguments and Values\endNode{}\Node%
4593 {\def\Element%
4594 {0:1855}}\Node%
4595 {\def\Element%
4596 {0:1856}}\Node%
4597 {\def\Element%
4598 {0:1857}}\Node%
4599 {\def\Element%
4600 {0:1858}}var\endNode{}\endNode{}\Node%
4601 {\def\Element%
4602 {0:1859}}\Node%
4603 {\def\Element%
4604 {0:1860}}A \Node%
4605 {\def\Element%
4606 {0:1861}}d-\/var-\/spec\endNode{}, as defined in the 
4607                 grammar for \Node%
4608 {\def\Element%
4609 {0:1862}}loop\endNode{}-\/clauses in the
4610                 ANSI Standard for Common Lisp.  This allows for the
4611                 usual loop-\/style destructuring.\endNode{}\endNode{}\endNode{}\Node%
4612 {\def\Element%
4613 {0:1863}}\Node%
4614 {\def\Element%
4615 {0:1864}}\Node%
4616 {\def\Element%
4617 {0:1865}}type-\/spec\endNode{}\endNode{}\Node%
4618 {\def\Element%
4619 {0:1866}}\Node%
4620 {\def\Element%
4621 {0:1867}}An optional \Node%
4622 {\def\Element%
4623 {0:1868}}type-\/spec\endNode{} either
4624                 simple or destructured, as defined in the grammar for
4625                 \Node%
4626 {\def\Element%
4627 {0:1869}}loop\endNode{}-\/clauses in the ANSI Standard
4628                 for Common Lisp.\endNode{}\endNode{}\endNode{}\Node%
4629 {\def\Element%
4630 {0:1870}}\Node%
4631 {\def\Element%
4632 {0:1871}}\Node%
4633 {\def\Element%
4634 {0:1872}}query\endNode{}\endNode{}\Node%
4635 {\def\Element%
4636 {0:1873}}\Node%
4637 {\def\Element%
4638 {0:1874}}An \Node%
4639 {\def\Element%
4640 {0:1875}}sql
4641                   expression\endNode{} that represents an SQL
4642                 query which is expected to return a (possibly empty)
4643                 result set, where each tuple has as many attributes as
4644                 \Node%
4645 {\def\Element%
4646 {0:1876}}function\endNode{} takes arguments.\endNode{}\endNode{}\endNode{}\Node%
4647 {\def\Element%
4648 {0:1877}}\Node%
4649 {\def\Element%
4650 {0:1878}}\Node%
4651 {\def\Element%
4652 {0:1879}}database\endNode{}\endNode{}\Node%
4653 {\def\Element%
4654 {0:1880}}\Node%
4655 {\def\Element%
4656 {0:1881}}An optional
4657                 \Node%
4658 {\def\Element%
4659 {0:1882}}database
4660                   object\endNode{}. This will default to the value
4661                 of \Node%
4662 {\def\Element%
4663 {0:1883}}*default-\/database*\endNode{}.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
4664 {\def\Element%
4665 {0:1884}}\Node%
4666 {\def\Element%
4667 {0:1885}}Description\endNode{}\Node%
4668 {\def\Element%
4669 {0:1886}}This clause is an iteration driver for
4670         \Node%
4671 {\def\Element%
4672 {0:1887}}loop\endNode{}, that binds the given variable
4673           (possibly destructured) to the consecutive tuples (which are 
4674           represented as lists of attribute values) in the result set
4675           returned by executing the SQL \Node%
4676 {\def\Element%
4677 {0:1888}}query\endNode{}
4678           expression on the \Node%
4679 {\def\Element%
4680 {0:1889}}database\endNode{}
4681           specified.\endNode{}\endNode{}\Node%
4682 {\def\Element%
4683 {0:1890}}\Node%
4684 {\def\Element%
4685 {0:1891}}Examples\endNode{}\Node%
4686 {\def\Element%
4687 {0:1892}}(defvar *my-\/db* (connect '("dent" "newesim" "dent" "dent"))
4688   "My database"
4689 =>\/ *MY-\/DB*
4690 (loop with time-\/graph = (make-\/hash-\/table :test \#'equal)
4691       with event-\/graph = (make-\/hash-\/table :test \#'equal)
4692       for (time event) being the tuples of "select time,event from log"
4693       from *my-\/db*
4694       do
4695       (incf (gethash time time-\/graph 0))
4696       (incf (gethash event event-\/graph 0))
4697       finally
4698       (flet ((show-\/graph (k v) (format t "\char126{}40A =>\/ \char126{}5D\char126{}\%" k v)))
4699         (format t "\char126{}\Entity{amp}Time-\/Graph:\char126{}\%===========\char126{}\%")
4700         (maphash \#'show-\/graph time-\/graph)
4701         (format t "\char126{}\Entity{amp}\char126{}\%Event-\/Graph:\char126{}\%============\char126{}\%")
4702         (maphash \#'show-\/graph event-\/graph))
4703       (return (values time-\/graph event-\/graph)))
4704 >\/>\/ Time-\/Graph:
4705 >\/>\/ ===========
4706 >\/>\/ D                                        =>\/ 53000
4707 >\/>\/ X                                        =>\/     3
4708 >\/>\/ test-\/me                                  =>\/  3000
4709 >\/>\/ 
4710 >\/>\/ Event-\/Graph:
4711 >\/>\/ ============
4712 >\/>\/ CLOS Benchmark entry.                    =>\/  9000
4713 >\/>\/ Demo Text...                             =>\/     3
4714 >\/>\/ doit-\/text                                =>\/  3000
4715 >\/>\/ C    Benchmark entry.                    =>\/ 12000
4716 >\/>\/ CLOS Benchmark entry                     =>\/ 32000
4717 =>\/ \#\Entity{lt}EQUAL hash table, 3 entries \{48350A1D\}>\/
4718 =>\/ \#\Entity{lt}EQUAL hash table, 5 entries \{48350FCD\}>\/
4719         \endNode{}\endNode{}\Node%
4720 {\def\Element%
4721 {0:1893}}\Node%
4722 {\def\Element%
4723 {0:1894}}Side Effects\endNode{}\Node%
4724 {\def\Element%
4725 {0:1895}}Whatever effects the execution of the SQL query has
4726           on the underlying database, if any.\endNode{}\endNode{}\Node%
4727 {\def\Element%
4728 {0:1896}}\Node%
4729 {\def\Element%
4730 {0:1897}}Affected by\endNode{}\Node%
4731 {\def\Element%
4732 {0:1898}}None.\endNode{}\endNode{}\Node%
4733 {\def\Element%
4734 {0:1899}}\Node%
4735 {\def\Element%
4736 {0:1900}}Exceptional Situations\endNode{}\Node%
4737 {\def\Element%
4738 {0:1901}}If the execution of  the SQL query leads to any
4739           errors, an error of type
4740           \Node%
4741 {\def\Element%
4742 {0:1902}}maisql-\/sql-\/error\endNode{} is signalled.\endNode{}\Node%
4743 {\def\Element%
4744 {0:1903}}Otherwise, any of the exceptional situations of
4745           \Node%
4746 {\def\Element%
4747 {0:1904}}loop\endNode{} applies.\endNode{}\endNode{}\Node%
4748 {\def\Element%
4749 {0:1905}}\Node%
4750 {\def\Element%
4751 {0:1906}}See Also\endNode{}\Node%
4752 {\def\Element%
4753 {0:1907}}       \Node%
4754 {\def\Element%
4755 {0:1908}}\Node%
4756 {\def\Element%
4757 {0:1909}}\Node%
4758 {\def\Element%
4759 {0:1910}}\Node%
4760 {\def\Element%
4761 {0:1911}}query\endNode{}\endNode{}\endNode{}\Node%
4762 {\def\Element%
4763 {0:1912}}\Node%
4764 {\def\Element%
4765 {0:1913}}\Node%
4766 {\def\Element%
4767 {0:1914}}map-\/query\endNode{}\endNode{}\endNode{}\Node%
4768 {\def\Element%
4769 {0:1915}}\Node%
4770 {\def\Element%
4771 {0:1916}}\Node%
4772 {\def\Element%
4773 {0:1917}}do-\/query\endNode{}\endNode{}\endNode{}\endNode{}
4774         \endNode{}\endNode{}\Node%
4775 {\def\Element%
4776 {0:1918}}\Node%
4777 {\def\Element%
4778 {0:1919}}Notes\endNode{}\Node%
4779 {\def\Element%
4780 {0:1920}}None.\endNode{}\endNode{}\endNode{}\endNode{}\Node%
4781 {\def\Element%
4782 {0:1921}}\Node%
4783 {\def\Element%
4784 {0:1922}}\Node%
4785 {\def\Element%
4786 {0:1923}}CLSQL-\/SYS\endNode{}\endNode{}\Node%
4787 {\def\Element%
4788 {0:1924}}\Node%
4789 {\def\Element%
4790 {0:1925}}This part gives a reference to all the symbols exported
4791         from the package \Node%
4792 {\def\Element%
4793 {0:1926}}CLSQL-\/SYS\endNode{}, which are not also
4794         exported from \Node%
4795 {\def\Element%
4796 {0:1927}}CLSQL\endNode{}.  These symbols are part of
4797         the interface for database back-\/ends, but not part of the normal
4798         user-\/interface of \Node%
4799 {\def\Element%
4800 {0:1928}}\Node%
4801 {\def\Element%
4802 {0:1929}}CLSQL\endNode{}\endNode{}.\endNode{}\endNode{}\Node%
4803 {\def\Label%
4804 {0:DATABASE-INITIALIZE-DATABASE-TYPE}}\Node%
4805 {\def\Element%
4806 {0:1931}}\Node%
4807 {\def\Element%
4808 {0:1932}}DATABASE-\/INITIALIZE-\/DATABASE-\/TYPE\endNode{}\Node%
4809 {\def\Element%
4810 {0:1933}}Back-\/end part of \Node%
4811 {\def\Element%
4812 {0:1934}}\Node%
4813 {\def\Element%
4814 {0:1935}}initialize-\/database-\/type\endNode{}\endNode{}.\endNode{}\Node%
4815 {\def\Element%
4816 {0:1936}}Generic Function\endNode{}\endNode{}\Node%
4817 {\def\Element%
4818 {0:1937}}\Node%
4819 {\def\Element%
4820 {0:1938}}Syntax\endNode{}\Node%
4821 {\def\Element%
4822 {0:1939}}\Node%
4823 {\def\Element%
4824 {0:1940}}database-\/initialize-\/database-\/type\endNode{} \Node%
4825 {\def\Element%
4826 {0:1941}}database-\/type\endNode{} =>\/ \Node%
4827 {\def\Element%
4828 {0:1942}}result\endNode{}\endNode{}\endNode{}\Node%
4829 {\def\Element%
4830 {0:1943}}\Node%
4831 {\def\Element%
4832 {0:1944}}Arguments and Values\endNode{}\Node%
4833 {\def\Element%
4834 {0:1945}}\Node%
4835 {\def\Element%
4836 {0:1946}}\Node%
4837 {\def\Element%
4838 {0:1947}}\Node%
4839 {\def\Element%
4840 {0:1948}}database-\/type\endNode{}\endNode{}\Node%
4841 {\def\Element%
4842 {0:1949}}\Node%
4843 {\def\Element%
4844 {0:1950}}A keyword indicating the database type to
4845                 initialize.\endNode{}\endNode{}\endNode{}\Node%
4846 {\def\Element%
4847 {0:1951}}\Node%
4848 {\def\Element%
4849 {0:1952}}\Node%
4850 {\def\Element%
4851 {0:1953}}result\endNode{}\endNode{}\Node%
4852 {\def\Element%
4853 {0:1954}}\Node%
4854 {\def\Element%
4855 {0:1955}}Either \Node%
4856 {\def\Element%
4857 {0:1956}}t\endNode{} if the initialization
4858                 succeeds or \Node%
4859 {\def\Element%
4860 {0:1957}}nil\endNode{} if it fails.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
4861 {\def\Element%
4862 {0:1958}}\Node%
4863 {\def\Element%
4864 {0:1959}}Description\endNode{}\Node%
4865 {\def\Element%
4866 {0:1960}}This generic function implements the main part of the
4867           database type initialization performed by
4868           \Node%
4869 {\def\Element%
4870 {0:1961}}initialize-\/database-\/type\endNode{}.  After
4871           \Node%
4872 {\def\Element%
4873 {0:1962}}initialize-\/database-\/type\endNode{} has checked
4874           that the given database type has not been initialized
4875           before, as indicated by
4876           \Node%
4877 {\def\Element%
4878 {0:1963}}*initialized-\/database-\/types*\endNode{}, it will call
4879           this function with the database type as it's sole
4880           parameter.  Database back-\/ends are required to define a
4881           method on this generic function which is specialized via an
4882           eql-\/specializer to the keyword representing their database
4883           type.\endNode{}\Node%
4884 {\def\Element%
4885 {0:1964}}Database back-\/ends shall indicate successful
4886           initialization by returning \Node%
4887 {\def\Element%
4888 {0:1965}}t\endNode{} from their
4889           method, and \Node%
4890 {\def\Element%
4891 {0:1966}}nil\endNode{} otherwise.  Methods for
4892           this generic function are allowed to signal errors of type
4893           \Node%
4894 {\def\Element%
4895 {0:1967}}maisql-\/error\endNode{} or subtypes thereof.
4896           They may also signal other types of conditions, if
4897           appropriate, but have to document this.\endNode{}\endNode{}\Node%
4898 {\def\Element%
4899 {0:1968}}\Node%
4900 {\def\Element%
4901 {0:1969}}Examples\endNode{}\Node%
4902 {\def\Element%
4903 {0:1970}}\endNode{}\endNode{}\Node%
4904 {\def\Element%
4905 {0:1971}}\Node%
4906 {\def\Element%
4907 {0:1972}}Side Effects\endNode{}\Node%
4908 {\def\Element%
4909 {0:1973}}All necessary side effects to initialize the database
4910           instance.\endNode{}\endNode{}\Node%
4911 {\def\Element%
4912 {0:1974}}\Node%
4913 {\def\Element%
4914 {0:1975}}Affected By\endNode{}\Node%
4915 {\def\Element%
4916 {0:1976}}None.\endNode{}\endNode{}\Node%
4917 {\def\Element%
4918 {0:1977}}\Node%
4919 {\def\Element%
4920 {0:1978}}Exceptional Situations\endNode{}\Node%
4921 {\def\Element%
4922 {0:1979}}Conditions of type \Node%
4923 {\def\Element%
4924 {0:1980}}maisql-\/error\endNode{}
4925           or other conditions may be signalled, depending on the
4926           database back-\/end.\endNode{}\endNode{}\Node%
4927 {\def\Element%
4928 {0:1981}}\Node%
4929 {\def\Element%
4930 {0:1982}}See Also\endNode{}\Node%
4931 {\def\Element%
4932 {0:1983}}       \Node%
4933 {\def\Element%
4934 {0:1984}}\Node%
4935 {\def\Element%
4936 {0:1985}}\Node%
4937 {\def\Element%
4938 {0:1986}}\Node%
4939 {\def\Element%
4940 {0:1987}}initialize-\/database-\/type\endNode{}\endNode{}\endNode{}\Node%
4941 {\def\Element%
4942 {0:1988}}\Node%
4943 {\def\Element%
4944 {0:1989}}\Node%
4945 {\def\Element%
4946 {0:1990}}*initialized-\/database-\/types*\endNode{}\endNode{}\endNode{}\endNode{}
4947         \endNode{}\endNode{}\Node%
4948 {\def\Element%
4949 {0:1991}}\Node%
4950 {\def\Element%
4951 {0:1992}}Notes\endNode{}\Node%
4952 {\def\Element%
4953 {0:1993}}None.\endNode{}\endNode{}\endNode{}\endNode{}\Node%
4954 {\def\Element%
4955 {0:1994}}\Node%
4956 {\def\Element%
4957 {0:1995}}Database Back-\/ends\endNode{}\Node%
4958 {\def\Element%
4959 {0:1996}}\Node%
4960 {\def\Element%
4961 {0:1997}}MySQL\endNode{}\Node%
4962 {\def\Element%
4963 {0:1998}}\Node%
4964 {\def\Element%
4965 {0:1999}}Libraries\endNode{}\Node%
4966 {\def\Element%
4967 {0:2000}}The MySQL back-\/end needs access to the MySQL C 
4968           client library (\Node%
4969 {\def\Element%
4970 {0:2001}}libmysqlclient.so\endNode{}).
4971           The location of this library is specified via 
4972           \Node%
4973 {\def\Element%
4974 {0:2002}}*mysql-\/so-\/load-\/path*\endNode{}, which defaults
4975           to \Node%
4976 {\def\Element%
4977 {0:2003}}/usr/lib/libmysqlclient.so\endNode{}.
4978           Additional flags to \Node%
4979 {\def\Element%
4980 {0:2004}}ld\endNode{} needed for
4981           linking are specified via
4982           \Node%
4983 {\def\Element%
4984 {0:2005}}*mysql-\/so-\/libraries*\endNode{},
4985           which defaults to \Node%
4986 {\def\Element%
4987 {0:2006}}("-\/lc")\endNode{}.\endNode{}\endNode{}\Node%
4988 {\def\Element%
4989 {0:2007}}\Node%
4990 {\def\Element%
4991 {0:2008}}Initialization\endNode{}\Node%
4992 {\def\Element%
4993 {0:2009}}Use 
4994           \Node%
4995 {\def\Element%
4996 {0:2010}}(mk:load-\/system :clsql-\/mysql)\endNode{}
4997           to load the MySQL back-\/end.  The database type for the MySQL
4998           back-\/end is \Node%
4999 {\def\Element%
5000 {0:2011}}:mysql\endNode{}.\endNode{}\endNode{}\Node%
5001 {\def\Element%
5002 {0:2012}}\Node%
5003 {\def\Element%
5004 {0:2013}}Connection Specification\endNode{}\Node%
5005 {\def\Element%
5006 {0:2014}}\Node%
5007 {\def\Element%
5008 {0:2015}}Syntax of connection-\/spec\endNode{}\Node%
5009 {\def\Element%
5010 {0:2016}}(\Node%
5011 {\def\Element%
5012 {0:2017}}host\endNode{} \Node%
5013 {\def\Element%
5014 {0:2018}}db\endNode{} \Node%
5015 {\def\Element%
5016 {0:2019}}user\endNode{} \Node%
5017 {\def\Element%
5018 {0:2020}}password\endNode{})\endNode{}\endNode{}\Node%
5019 {\def\Element%
5020 {0:2021}}\Node%
5021 {\def\Element%
5022 {0:2022}}Description of connection-\/spec\endNode{}\Node%
5023 {\def\Element%
5024 {0:2023}}\Node%
5025 {\def\Element%
5026 {0:2024}}\Node%
5027 {\def\Element%
5028 {0:2025}}\Node%
5029 {\def\Element%
5030 {0:2026}}host\endNode{}\endNode{}\Node%
5031 {\def\Element%
5032 {0:2027}}\Node%
5033 {\def\Element%
5034 {0:2028}}String representing the hostname or IP address
5035                   the MySQL server resides on, or \Node%
5036 {\def\Element%
5037 {0:2029}}nil\endNode{}
5038                   to indicate the localhost.\endNode{}\endNode{}\endNode{}\Node%
5039 {\def\Element%
5040 {0:2030}}\Node%
5041 {\def\Element%
5042 {0:2031}}\Node%
5043 {\def\Element%
5044 {0:2032}}db\endNode{}\endNode{}\Node%
5045 {\def\Element%
5046 {0:2033}}\Node%
5047 {\def\Element%
5048 {0:2034}}String representing the name of the database on
5049                   the server to connect to.\endNode{}\endNode{}\endNode{}\Node%
5050 {\def\Element%
5051 {0:2035}}\Node%
5052 {\def\Element%
5053 {0:2036}}\Node%
5054 {\def\Element%
5055 {0:2037}}user\endNode{}\endNode{}\Node%
5056 {\def\Element%
5057 {0:2038}}\Node%
5058 {\def\Element%
5059 {0:2039}}String representing the user name to use for
5060                   authentication, or \Node%
5061 {\def\Element%
5062 {0:2040}}nil\endNode{} to use the
5063                   current Unix user ID.\endNode{}\endNode{}\endNode{}\Node%
5064 {\def\Element%
5065 {0:2041}}\Node%
5066 {\def\Element%
5067 {0:2042}}\Node%
5068 {\def\Element%
5069 {0:2043}}password\endNode{}\endNode{}\Node%
5070 {\def\Element%
5071 {0:2044}}\Node%
5072 {\def\Element%
5073 {0:2045}}String representing the unencrypted password to
5074                   use for authentication, or \Node%
5075 {\def\Element%
5076 {0:2046}}nil\endNode{} if
5077                   the authentication record has an empty password
5078                   field.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
5079 {\def\Element%
5080 {0:2047}}\Node%
5081 {\def\Element%
5082 {0:2048}}AODBC\endNode{}\Node%
5083 {\def\Element%
5084 {0:2049}}\Node%
5085 {\def\Element%
5086 {0:2050}}Libraries\endNode{}\Node%
5087 {\def\Element%
5088 {0:2051}}The AODBC back-\/end requires access to the ODBC interface
5089           of \Node%
5090 {\def\Element%
5091 {0:2052}}AllegroCL\endNode{}.\endNode{}\endNode{}\Node%
5092 {\def\Element%
5093 {0:2053}}\Node%
5094 {\def\Element%
5095 {0:2054}}Initialization\endNode{}\Node%
5096 {\def\Element%
5097 {0:2055}}Use 
5098           \Node%
5099 {\def\Element%
5100 {0:2056}}(mk:load-\/system :clsql-\/aodbc)\endNode{}
5101           to load the MySQL back-\/end.  The database type for the AODBC
5102           back-\/end is \Node%
5103 {\def\Element%
5104 {0:2057}}:aodbc\endNode{}.\endNode{}\endNode{}\Node%
5105 {\def\Element%
5106 {0:2058}}\Node%
5107 {\def\Element%
5108 {0:2059}}Connection Specification\endNode{}\Node%
5109 {\def\Element%
5110 {0:2060}}\Node%
5111 {\def\Element%
5112 {0:2061}}Syntax of connection-\/spec\endNode{}\Node%
5113 {\def\Element%
5114 {0:2062}}(\Node%
5115 {\def\Element%
5116 {0:2063}}dsn\endNode{} \Node%
5117 {\def\Element%
5118 {0:2064}}user\endNode{} \Node%
5119 {\def\Element%
5120 {0:2065}}password\endNode{})\endNode{}\endNode{}\Node%
5121 {\def\Element%
5122 {0:2066}}\Node%
5123 {\def\Element%
5124 {0:2067}}Description of connection-\/spec\endNode{}\Node%
5125 {\def\Element%
5126 {0:2068}}\Node%
5127 {\def\Element%
5128 {0:2069}}\Node%
5129 {\def\Element%
5130 {0:2070}}\Node%
5131 {\def\Element%
5132 {0:2071}}dsn\endNode{}\endNode{}\Node%
5133 {\def\Element%
5134 {0:2072}}\Node%
5135 {\def\Element%
5136 {0:2073}}String representing the ODBC data source name.\endNode{}\endNode{}\endNode{}\Node%
5137 {\def\Element%
5138 {0:2074}}\Node%
5139 {\def\Element%
5140 {0:2075}}\Node%
5141 {\def\Element%
5142 {0:2076}}user\endNode{}\endNode{}\Node%
5143 {\def\Element%
5144 {0:2077}}\Node%
5145 {\def\Element%
5146 {0:2078}}String representing the user name to use for
5147                   authentication.\endNode{}\endNode{}\endNode{}\Node%
5148 {\def\Element%
5149 {0:2079}}\Node%
5150 {\def\Element%
5151 {0:2080}}\Node%
5152 {\def\Element%
5153 {0:2081}}password\endNode{}\endNode{}\Node%
5154 {\def\Element%
5155 {0:2082}}\Node%
5156 {\def\Element%
5157 {0:2083}}String representing the unencrypted password to
5158                   use for authentication.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
5159 {\def\Element%
5160 {0:2084}}\Node%
5161 {\def\Element%
5162 {0:2085}}PostgreSQL\endNode{}\Node%
5163 {\def\Element%
5164 {0:2086}}\Node%
5165 {\def\Element%
5166 {0:2087}}Libraries\endNode{}\Node%
5167 {\def\Element%
5168 {0:2088}}The PostgreSQL back-\/end needs access to the PostgreSQL C 
5169           client library (\Node%
5170 {\def\Element%
5171 {0:2089}}libpq.so\endNode{}).  The
5172           location of this library is specified via 
5173           \Node%
5174 {\def\Element%
5175 {0:2090}}*postgresql-\/so-\/load-\/path*\endNode{}, which defaults
5176           to \Node%
5177 {\def\Element%
5178 {0:2091}}/usr/lib/libpq.so\endNode{}.  Additional flags 
5179           to \Node%
5180 {\def\Element%
5181 {0:2092}}ld\endNode{} needed for linking are
5182           specified via \Node%
5183 {\def\Element%
5184 {0:2093}}*postgresql-\/so-\/libraries*\endNode{},
5185           which defaults to \Node%
5186 {\def\Element%
5187 {0:2094}}("-\/lcrypt" "-\/lc")\endNode{}.\endNode{}\endNode{}\Node%
5188 {\def\Element%
5189 {0:2095}}\Node%
5190 {\def\Element%
5191 {0:2096}}Initialization\endNode{}\Node%
5192 {\def\Element%
5193 {0:2097}}Use 
5194           \Node%
5195 {\def\Element%
5196 {0:2098}}(mk:load-\/system :clsql-\/postgresql)\endNode{}
5197           to load the PostgreSQL back-\/end.  The database type for the
5198           PostgreSQL back-\/end is \Node%
5199 {\def\Element%
5200 {0:2099}}:postgresql\endNode{}.\endNode{}\endNode{}\Node%
5201 {\def\Element%
5202 {0:2100}}\Node%
5203 {\def\Element%
5204 {0:2101}}Connection Specification\endNode{}\Node%
5205 {\def\Element%
5206 {0:2102}}\Node%
5207 {\def\Element%
5208 {0:2103}}Syntax of connection-\/spec\endNode{}\Node%
5209 {\def\Element%
5210 {0:2104}}(\Node%
5211 {\def\Element%
5212 {0:2105}}host\endNode{} \Node%
5213 {\def\Element%
5214 {0:2106}}db\endNode{} \Node%
5215 {\def\Element%
5216 {0:2107}}user\endNode{} \Node%
5217 {\def\Element%
5218 {0:2108}}password\endNode{} \Entity{amp}optional \Node%
5219 {\def\Element%
5220 {0:2109}}port\endNode{} \Node%
5221 {\def\Element%
5222 {0:2110}}options\endNode{} \Node%
5223 {\def\Element%
5224 {0:2111}}tty\endNode{})\endNode{}\endNode{}\Node%
5225 {\def\Element%
5226 {0:2112}}\Node%
5227 {\def\Element%
5228 {0:2113}}Description of connection-\/spec\endNode{}\Node%
5229 {\def\Element%
5230 {0:2114}}For every parameter in the connection-\/spec,
5231             \Node%
5232 {\def\Element%
5233 {0:2115}}nil\endNode{} indicates that the PostgreSQL default
5234             environment variables (see PostgreSQL documentation) will
5235             be used, or if those are unset, the compiled-\/in defaults
5236             of the C client library are used.\endNode{}\Node%
5237 {\def\Element%
5238 {0:2116}}\Node%
5239 {\def\Element%
5240 {0:2117}}\Node%
5241 {\def\Element%
5242 {0:2118}}\Node%
5243 {\def\Element%
5244 {0:2119}}host\endNode{}\endNode{}\Node%
5245 {\def\Element%
5246 {0:2120}}\Node%
5247 {\def\Element%
5248 {0:2121}}String representing the hostname or IP address
5249                   the PostgreSQL server resides on.  Use the empty
5250                   string to indicate a connection to localhost via
5251                   Unix-\/Domain sockets instead of TCP/IP.\endNode{}\endNode{}\endNode{}\Node%
5252 {\def\Element%
5253 {0:2122}}\Node%
5254 {\def\Element%
5255 {0:2123}}\Node%
5256 {\def\Element%
5257 {0:2124}}db\endNode{}\endNode{}\Node%
5258 {\def\Element%
5259 {0:2125}}\Node%
5260 {\def\Element%
5261 {0:2126}}String representing the name of the database on
5262                   the server to connect to.\endNode{}\endNode{}\endNode{}\Node%
5263 {\def\Element%
5264 {0:2127}}\Node%
5265 {\def\Element%
5266 {0:2128}}\Node%
5267 {\def\Element%
5268 {0:2129}}user\endNode{}\endNode{}\Node%
5269 {\def\Element%
5270 {0:2130}}\Node%
5271 {\def\Element%
5272 {0:2131}}String representing the user name to use for
5273                   authentication.\endNode{}\endNode{}\endNode{}\Node%
5274 {\def\Element%
5275 {0:2132}}\Node%
5276 {\def\Element%
5277 {0:2133}}\Node%
5278 {\def\Element%
5279 {0:2134}}password\endNode{}\endNode{}\Node%
5280 {\def\Element%
5281 {0:2135}}\Node%
5282 {\def\Element%
5283 {0:2136}}String representing the unencrypted password to
5284                   use for authentication.\endNode{}\endNode{}\endNode{}\Node%
5285 {\def\Element%
5286 {0:2137}}\Node%
5287 {\def\Element%
5288 {0:2138}}\Node%
5289 {\def\Element%
5290 {0:2139}}port\endNode{}\endNode{}\Node%
5291 {\def\Element%
5292 {0:2140}}\Node%
5293 {\def\Element%
5294 {0:2141}}String representing the port to use for
5295                   communication with the PostgreSQL server.\endNode{}\endNode{}\endNode{}\Node%
5296 {\def\Element%
5297 {0:2142}}\Node%
5298 {\def\Element%
5299 {0:2143}}\Node%
5300 {\def\Element%
5301 {0:2144}}options\endNode{}\endNode{}\Node%
5302 {\def\Element%
5303 {0:2145}}\Node%
5304 {\def\Element%
5305 {0:2146}}String representing further runtime options for
5306                   the PostgreSQL server.\endNode{}\endNode{}\endNode{}\Node%
5307 {\def\Element%
5308 {0:2147}}\Node%
5309 {\def\Element%
5310 {0:2148}}\Node%
5311 {\def\Element%
5312 {0:2149}}tty\endNode{}\endNode{}\Node%
5313 {\def\Element%
5314 {0:2150}}\Node%
5315 {\def\Element%
5316 {0:2151}}String representing the tty or file to use for
5317                   debugging messages from the PostgreSQL server.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
5318 {\def\Element%
5319 {0:2152}}\Node%
5320 {\def\Element%
5321 {0:2153}}PostgreSQL Socket\endNode{}\Node%
5322 {\def\Element%
5323 {0:2154}}\Node%
5324 {\def\Element%
5325 {0:2155}}Libraries\endNode{}\Node%
5326 {\def\Element%
5327 {0:2156}}The PostgreSQL Socket back-\/end needs
5328           \Node%
5329 {\def\Element%
5330 {0:2157}}no\endNode{} access to the PostgreSQL C
5331           client library, since it communicates directly with the
5332           PostgreSQL server using the published frontend/backend
5333           protocol, version 2.0.  This eases installation and makes it
5334           possible to dump CMU CL images containing CLSQL and this
5335           backend, contrary to backends which require FFI code.\endNode{}\endNode{}\Node%
5336 {\def\Element%
5337 {0:2158}}\Node%
5338 {\def\Element%
5339 {0:2159}}Initialization\endNode{}\Node%
5340 {\def\Element%
5341 {0:2160}}Use 
5342           \Node%
5343 {\def\Element%
5344 {0:2161}}(mk:load-\/system :clsql-\/postgresql-\/socket)\endNode{}
5345           to load the PostgreSQL Socket back-\/end.  The database type for the
5346           PostgreSQL Socket back-\/end is 
5347           \Node%
5348 {\def\Element%
5349 {0:2162}}:postgresql-\/socket\endNode{}.\endNode{}\endNode{}\Node%
5350 {\def\Element%
5351 {0:2163}}\Node%
5352 {\def\Element%
5353 {0:2164}}Connection Specification\endNode{}\Node%
5354 {\def\Element%
5355 {0:2165}}\Node%
5356 {\def\Element%
5357 {0:2166}}Syntax of connection-\/spec\endNode{}\Node%
5358 {\def\Element%
5359 {0:2167}}(\Node%
5360 {\def\Element%
5361 {0:2168}}host\endNode{} \Node%
5362 {\def\Element%
5363 {0:2169}}db\endNode{} \Node%
5364 {\def\Element%
5365 {0:2170}}user\endNode{} \Node%
5366 {\def\Element%
5367 {0:2171}}password\endNode{} \Entity{amp}optional \Node%
5368 {\def\Element%
5369 {0:2172}}port\endNode{} \Node%
5370 {\def\Element%
5371 {0:2173}}options\endNode{} \Node%
5372 {\def\Element%
5373 {0:2174}}tty\endNode{})\endNode{}\endNode{}\Node%
5374 {\def\Element%
5375 {0:2175}}\Node%
5376 {\def\Element%
5377 {0:2176}}Description of connection-\/spec\endNode{}\Node%
5378 {\def\Element%
5379 {0:2177}}\Node%
5380 {\def\Element%
5381 {0:2178}}\Node%
5382 {\def\Element%
5383 {0:2179}}\Node%
5384 {\def\Element%
5385 {0:2180}}host\endNode{}\endNode{}\Node%
5386 {\def\Element%
5387 {0:2181}}\Node%
5388 {\def\Element%
5389 {0:2182}}If this is a string, it represents the hostname or
5390                   IP address the PostgreSQL server resides on.  In
5391                   this case communication with the server proceeds via
5392                   a TCP connection to the given host and port.\endNode{}\Node%
5393 {\def\Element%
5394 {0:2183}}                 If this is a pathname, then it is assumed to name the
5395                   directory that contains the server's Unix-\/Domain
5396                   sockets.  The full name to the socket is then
5397                   constructed from this and the port number passed,
5398                   and communication will proceed via a connection to
5399                   this unix-\/domain socket.\endNode{}\endNode{}\endNode{}\Node%
5400 {\def\Element%
5401 {0:2184}}\Node%
5402 {\def\Element%
5403 {0:2185}}\Node%
5404 {\def\Element%
5405 {0:2186}}db\endNode{}\endNode{}\Node%
5406 {\def\Element%
5407 {0:2187}}\Node%
5408 {\def\Element%
5409 {0:2188}}String representing the name of the database on
5410                   the server to connect to.\endNode{}\endNode{}\endNode{}\Node%
5411 {\def\Element%
5412 {0:2189}}\Node%
5413 {\def\Element%
5414 {0:2190}}\Node%
5415 {\def\Element%
5416 {0:2191}}user\endNode{}\endNode{}\Node%
5417 {\def\Element%
5418 {0:2192}}\Node%
5419 {\def\Element%
5420 {0:2193}}String representing the user name to use for
5421                   authentication.\endNode{}\endNode{}\endNode{}\Node%
5422 {\def\Element%
5423 {0:2194}}\Node%
5424 {\def\Element%
5425 {0:2195}}\Node%
5426 {\def\Element%
5427 {0:2196}}password\endNode{}\endNode{}\Node%
5428 {\def\Element%
5429 {0:2197}}\Node%
5430 {\def\Element%
5431 {0:2198}}String representing the unencrypted password to
5432                   use for authentication.  This can be the empty
5433                   string if no password is required for
5434                   authentication.\endNode{}\endNode{}\endNode{}\Node%
5435 {\def\Element%
5436 {0:2199}}\Node%
5437 {\def\Element%
5438 {0:2200}}\Node%
5439 {\def\Element%
5440 {0:2201}}port\endNode{}\endNode{}\Node%
5441 {\def\Element%
5442 {0:2202}}\Node%
5443 {\def\Element%
5444 {0:2203}}Integer representing the port to use for
5445                   communication with the PostgreSQL server.  This
5446                   defaults to 5432.\endNode{}\endNode{}\endNode{}\Node%
5447 {\def\Element%
5448 {0:2204}}\Node%
5449 {\def\Element%
5450 {0:2205}}\Node%
5451 {\def\Element%
5452 {0:2206}}options\endNode{}\endNode{}\Node%
5453 {\def\Element%
5454 {0:2207}}\Node%
5455 {\def\Element%
5456 {0:2208}}String representing further runtime options for
5457                   the PostgreSQL server.\endNode{}\endNode{}\endNode{}\Node%
5458 {\def\Element%
5459 {0:2209}}\Node%
5460 {\def\Element%
5461 {0:2210}}\Node%
5462 {\def\Element%
5463 {0:2211}}tty\endNode{}\endNode{}\Node%
5464 {\def\Element%
5465 {0:2212}}\Node%
5466 {\def\Element%
5467 {0:2213}}String representing the tty or file to use for
5468                   debugging messages from the PostgreSQL server.\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\Node%
5469 {\def\Element%
5470 {0:2214}}\Node%
5471 {\def\Element%
5472 {0:2215}}\Node%
5473 {\def\Element%
5474 {0:2216}}This glossary is still very thinly populated, and not all
5475       references in the main text have been properly linked and
5476       coordinated with this glossary.  This will hopefully change in
5477       future revisions.
5478     \endNode{}\endNode{}\Node%
5479 {\def\Element%
5480 {0:2217}}\Node%
5481 {\def\Element%
5482 {0:2218}}Active database\endNode{}\Node%
5483 {\def\Element%
5484 {0:2219}}\endNode{}\endNode{}\Node%
5485 {\def\Element%
5486 {0:2220}}\Node%
5487 {\def\Element%
5488 {0:2221}}Connection\endNode{}\Node%
5489 {\def\Element%
5490 {0:2222}}\endNode{}\endNode{}\Node%
5491 {\def\Element%
5492 {0:2223}}\Node%
5493 {\def\Element%
5494 {0:2224}}Closed Database\endNode{}\Node%
5495 {\def\Element%
5496 {0:2225}}\Node%
5497 {\def\Element%
5498 {0:2226}}       An object of type \Node%
5499 {\def\Element%
5500 {0:2227}}closed-\/database\endNode{}.  This is
5501         in contrast to the terms connection, database, active
5502         database or \Node%
5503 {\def\Element%
5504 {0:2228}}database object\endNode{}
5505         which don't include objects which are closed database.
5506       \endNode{}\endNode{}\endNode{}\Node%
5507 {\def\Element%
5508 {0:2229}}\Node%
5509 {\def\Element%
5510 {0:2230}}database\endNode{}\Node%
5511 {\def\Element%
5512 {0:2231}}\endNode{}\endNode{}\Node%
5513 {\def\Label%
5514 {0:GLOSS-FFI}}\Node%
5515 {\def\Element%
5516 {0:2233}}Foreign Function Interface 
5517       (\Node%
5518 {\def\Element%
5519 {0:2234}}FFI\endNode{})
5520     \endNode{}\Node%
5521 {\def\Element%
5522 {0:2235}}\Node%
5523 {\def\Element%
5524 {0:2236}}       An interface from Common Lisp to a external library which
5525         contains compiled functions written in other programming
5526         languages, typically C.
5527       \endNode{}\endNode{}\endNode{}\Node%
5528 {\def\Label%
5529 {0:GLOSS-DATABASE-OBJECT}}\Node%
5530 {\def\Element%
5531 {0:2238}}Database Object\endNode{}\Node%
5532 {\def\Element%
5533 {0:2239}}\Node%
5534 {\def\Element%
5535 {0:2240}}An object of type \Node%
5536 {\def\Element%
5537 {0:2241}}database\endNode{}.\endNode{}\endNode{}\endNode{}\Node%
5538 {\def\Label%
5539 {0:GLOSS-FIELD-TYPES}}\Node%
5540 {\def\Element%
5541 {0:2243}}Field Types Specifier\endNode{}\Node%
5542 {\def\Element%
5543 {0:2244}}\Node%
5544 {\def\Element%
5545 {0:2245}}A value that specifies the type of each field in a query.\endNode{}\endNode{}\endNode{}\Node%
5546 {\def\Label%
5547 {0:GLOSS-SQL}}\Node%
5548 {\def\Element%
5549 {0:2247}}Structured Query Language
5550       (\Node%
5551 {\def\Element%
5552 {0:2248}}SQL\endNode{})
5553     \endNode{}\Node%
5554 {\def\Element%
5555 {0:2249}}\Node%
5556 {\def\Element%
5557 {0:2250}}       An ANSI standard language for storing and retrieving data
5558         in a relational database.
5559       \endNode{}\endNode{}\endNode{}\Node%
5560 {\def\Label%
5561 {0:GLOSS-SQL-EXPRESSION}}\Node%
5562 {\def\Element%
5563 {0:2252}}SQL Expression\endNode{}\Node%
5564 {\def\Element%
5565 {0:2253}}\Node%
5566 {\def\Element%
5567 {0:2254}}Either a string containing a valid SQL statement, or
5568         an object of type \Node%
5569 {\def\Element%
5570 {0:2255}}sql-\/expression\endNode{}\Node%
5571 {\def\Element%
5572 {0:2256}}\Node%
5573 {\def\Element%
5574 {0:2257}}This has not been implemented yet, so only strings
5575           are valid SQL expressions for the moment.\endNode{}\endNode{}
5576       \endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endNode{}\endFOT{}