2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4 <!ENTITY % myents SYSTEM "entities.inc">
8 <!-- Condition System -->
10 <reference id="ref-conditions">
11 <title>CLSQL Condition System</title>
14 &clsql; provides and uses a condition system in which all errors
15 and warnings are of type <link
16 linkend="sql-condition"><errortype>sql-condition</errortype></link>. This
17 section describes the various subclasses of <link
18 linkend="sql-condition"><errortype>sql-condition</errortype></link>
19 defined by &clsql;. Details are also provided for how they are
20 used in &clsql; and intended to be signalled in user
21 code. Finally, slot accessors for some of the condition types
26 <refentry id="backend-warning-behavior">
28 <refentrytitle>*BACKEND-WARNING-BEHAVIOR*</refentrytitle>
31 <refname><emphasis>Variable</emphasis> <emphasis role="bold">*BACKEND-WARNING-BEHAVIOR*</emphasis></refname>
32 <refpurpose>Controls behaviour on warnings from underlying RDBMS.</refpurpose>
33 <refclass>Variable</refclass>
36 <title>Value Type</title>
38 Meaningful values are <symbol>:warn</symbol>,
39 <symbol>:error</symbol>, <symbol>:ignore</symbol> and &nil;.
43 <title>Initial Value</title>
44 <para><symbol>:warn</symbol></para>
47 <title>Description</title> Action to perform on warning messages
48 from backend. Default is to <symbol>:warn</symbol>. May also be
49 set to <symbol>:error</symbol> to signal an error or
50 <symbol>:ignore</symbol> or &nil; to silently ignore the
54 <title>Examples</title>
60 <title>Affected By</title>
64 <title>See Also</title>
69 <para><symbol>*backend-warning-behaviour*</symbol> is a &clsql;
74 <refentry id="sql-condition">
76 <refentrytitle>SQL-CONDITION</refentrytitle>
79 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold"><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-CONDITION</emphasis></emphasis></refname>
80 <refpurpose>the super-type of all
82 conditions</refpurpose>
83 <refclass>Condition Type</refclass>
86 <title>Class Precedence List</title>
88 <simplelist type="inline">
89 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
90 <member><errortype>condition</errortype></member>
91 <member><errortype>t</errortype></member>
96 <title>Description</title>
98 This is the super-type of all &clsql;-specific conditions
99 defined by &clsql;, or any of it's database-specific
100 interfaces. There are no defined initialization arguments nor
106 <para><errortype>sql-condition</errortype> is a &clsql;
111 <refentry id="sql-error">
113 <refentrytitle>SQL-ERROR</refentrytitle>
116 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-ERROR</emphasis></refname>
117 <refpurpose>the super-type of all
120 <refclass>Condition Type</refclass>
123 <title>Class Precedence List</title>
125 <simplelist type="inline">
126 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
127 <member><errortype>simple-error</errortype></member>
128 <member><errortype>simple-condition</errortype></member>
129 <member><errortype>error</errortype></member>
130 <member><errortype>serious-condition</errortype></member>
131 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
132 <member><errortype>condition</errortype></member>
133 <member><errortype>t</errortype></member>
138 <title>Description</title>
140 This is the super-type of all &clsql;-specific conditions that
141 represent errors, as defined by &clsql;, or any of it's
142 database-specific interfaces. There are no defined
143 initialization arguments nor any accessors.
148 <para><errortype>sql-error</errortype> is a &clsql; extension.</para>
152 <refentry id="sql-warning">
154 <refentrytitle>SQL-WARNING</refentrytitle>
157 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-WARNING</emphasis></refname>
158 <refpurpose>the super-type of all
160 warnings</refpurpose>
161 <refclass>Condition Type</refclass>
164 <title>Class Precedence List</title>
166 <simplelist type="inline">
167 <member><link linkend="sql-warning"><errortype>sql-warning</errortype></link></member>
168 <member><errortype>warning</errortype></member>
169 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
170 <member><errortype>condition</errortype></member>
171 <member><errortype>t</errortype></member>
176 <title>Description</title>
178 This is the super-type of all &clsql;-specific conditions that
179 represent warnings, as defined by &clsql;, or any of it's
180 database-specific interfaces. There are no defined
181 initialization arguments nor any accessors.
186 <para><errortype>sql-warning</errortype> is a &clsql; extension.</para>
190 <refentry id="sql-database-warning">
192 <refentrytitle>SQL-DATABASE-WARNING</refentrytitle>
195 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-DATABASE-WARNING</emphasis></refname>
196 <refpurpose>Used to warn while accessing a
197 &clsql; database.</refpurpose>
198 <refclass>Condition Type</refclass>
201 <title>Class Precedence List</title>
203 <simplelist type="inline">
204 <member><link linkend="sql-database-warning"><errortype>sql-database-warning</errortype></link></member>
205 <member><link linkend="sql-warning"><errortype>sql-warning</errortype></link></member>
206 <member><errortype>warning</errortype></member>
207 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
208 <member><errortype>condition</errortype></member>
209 <member><errortype>t</errortype></member>
214 <title>Description</title>
216 This condition represents warnings signalled while accessing
220 The following initialization arguments and accessors exist:
223 <segtitle>Initarg</segtitle>
224 <segtitle>Accessor</segtitle>
225 <segtitle>Description</segtitle>
227 <seg><symbol>:database</symbol></seg>
228 <seg><function>sql-warning-database</function></seg>
229 <seg>The database object that was involved in the
236 <para><errortype>sql-database-warning</errortype> is a &clsql;
241 <!-- Specific Conditions -->
243 <refentry id="sql-user-error">
245 <refentrytitle>SQL-USER-ERROR</refentrytitle>
248 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-USER-ERROR</emphasis></refname>
249 <refpurpose>condition representing errors because of invalid
250 parameters from the library user.</refpurpose>
251 <refclass>Condition Type</refclass>
254 <title>Class Precedence List</title>
256 <simplelist type="inline">
257 <member><errortype>sql-user-error</errortype></member>
258 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
259 <member><errortype>simple-error</errortype></member>
260 <member><errortype>simple-condition</errortype></member>
261 <member><errortype>error</errortype></member>
262 <member><errortype>serious-condition</errortype></member>
263 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
264 <member><errortype>condition</errortype></member>
265 <member><errortype>t</errortype></member>
270 <title>Description</title>
272 This condition represents errors that occur because the user
273 supplies invalid data to &clsql;. This includes errors such
274 as an invalid format connection specification or an error in
275 the syntax for the <function>LOOP</function> macro extensions.
278 The following initialization arguments and accessors exist:
281 <segtitle>Initarg</segtitle>
282 <segtitle>Accessor</segtitle>
283 <segtitle>Description</segtitle>
285 <seg><symbol>:message</symbol></seg>
286 <seg><function>sql-user-error-message</function></seg>
287 <seg>The error message.</seg>
293 <para>The slot accessor
294 <function>sql-user-error-message</function> is a &clsql;
299 <refentry id="sql-database-error">
301 <refentrytitle>SQL-DATABASE-ERROR</refentrytitle>
304 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-DATABASE-ERROR</emphasis></refname>
305 <refpurpose>condition representing errors during query or
306 command execution</refpurpose>
307 <refclass>Condition Type</refclass>
310 <title>Class Precedence List</title>
312 <simplelist type="inline">
313 <member><link linkend="sql-database-error"><errortype>sql-database-error</errortype></link></member>
314 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
315 <member><errortype>simple-error</errortype></member>
316 <member><errortype>simple-condition</errortype></member>
317 <member><errortype>error</errortype></member>
318 <member><errortype>serious-condition</errortype></member>
319 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
320 <member><errortype>condition</errortype></member>
321 <member><errortype>t</errortype></member>
326 <title>Description</title>
328 This condition represents errors that occur while executing
329 SQL statements, either as part of query operations or command
330 execution, either explicitly or implicitly, as caused e.g. by
331 <function>with-transaction</function>.
334 The following initialization arguments and accessors exist:
337 <segtitle>Initarg</segtitle>
338 <segtitle>Accessor</segtitle>
339 <segtitle>Description</segtitle>
341 <seg><symbol>:database</symbol></seg>
342 <seg><function>sql-error-database</function></seg>
343 <seg>The database object that was involved in the
347 <seg><symbol>:error-id</symbol></seg>
348 <seg><function>sql-error-error-id</function></seg>
349 <seg>The numeric or symbolic error specification
350 returned by the database back-end. The values and
351 semantics of this are interface specific.</seg>
354 <seg><symbol>:secondary-error-id</symbol></seg>
355 <seg><function>sql-error-secondary-error-id</function></seg>
356 <seg>The secondary numeric or symbolic error specification
357 returned by the database back-end. The values and
358 semantics of this are interface specific.</seg>
361 <seg><symbol>:message</symbol></seg>
362 <seg><function>sql-error-database-message</function></seg>
363 <seg>A string describing the problem that occurred,
364 possibly one returned by the database back-end.</seg>
372 <function>sql-error-database</function> is a &clsql;
378 <refentry id="sql-connection-error">
380 <refentrytitle>SQL-CONNECTION-ERROR</refentrytitle>
383 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-CONNECTION-ERROR</emphasis></refname>
384 <refpurpose>condition representing errors during
385 connection</refpurpose>
386 <refclass>Condition Type</refclass>
389 <title>Class Precedence List</title>
391 <simplelist type="inline">
392 <member><link linkend="sql-connection-error"><errortype>sql-connection-error</errortype></link></member>
393 <member><link linkend="sql-database-error"><errortype>sql-database-error</errortype></link></member>
394 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
395 <member><errortype>simple-error</errortype></member>
396 <member><errortype>simple-condition</errortype></member>
397 <member><errortype>error</errortype></member>
398 <member><errortype>serious-condition</errortype></member>
399 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
400 <member><errortype>condition</errortype></member>
401 <member><errortype>t</errortype></member>
406 <title>Description</title>
408 This condition represents errors that occur while trying to
409 connect to a database.
412 The following initialization arguments and accessors exist:
415 <segtitle>Initarg</segtitle>
416 <segtitle>Accessor</segtitle>
417 <segtitle>Description</segtitle>
419 <seg><symbol>:database-type</symbol></seg>
420 <seg><function>sql-error-database-type</function></seg>
421 <seg>Database type for the connection attempt</seg>
424 <seg><symbol>:connection-spec</symbol></seg>
425 <seg><function>sql-error-connection-spec</function></seg>
426 <seg>The connection specification used in the
427 connection attempt.</seg>
430 <seg><symbol>:database</symbol></seg>
431 <seg><function>sql-error-database</function></seg>
432 <seg>The database object that was involved in the
436 <seg><symbol>:error-id</symbol></seg>
437 <seg><function>sql-error-error-id</function></seg>
438 <seg>The numeric or symbolic error specification
439 returned by the database back-end. The values and
440 semantics of this are interface specific.</seg>
443 <seg><symbol>:secondary-error-id</symbol></seg>
444 <seg><function>sql-error-secondary-error-id</function></seg>
445 <seg>The secondary numeric or symbolic error specification
446 returned by the database back-end. The values and
447 semantics of this are interface specific.</seg>
450 <seg><symbol>:message</symbol></seg>
451 <seg><function>sql-database-error-error</function></seg>
452 <seg>A string describing the problem that occurred,
453 possibly one returned by the database back-end.</seg>
461 <function>sql-error-database</function>,
462 <function>sql-error-database-type</function> and
463 <function>sql-error-connection-spec</function> are
469 <refentry id="sql-database-data-error">
471 <refentrytitle>SQL-DATABASE-DATA-ERROR</refentrytitle>
474 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-DATABASE-DATA-ERROR</emphasis></refname>
475 <refpurpose>Used to signal an error with the SQL data passed
476 to a database.</refpurpose>
477 <refclass>Condition Type</refclass>
480 <title>Class Precedence List</title>
482 <simplelist type="inline">
483 <member><errortype>sql-database-data-error</errortype></member>
484 <member><link linkend="sql-database-error"><errortype>sql-database-error</errortype></link></member>
485 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
486 <member><errortype>simple-error</errortype></member>
487 <member><errortype>simple-condition</errortype></member>
488 <member><errortype>error</errortype></member>
489 <member><errortype>serious-condition</errortype></member>
490 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
491 <member><errortype>condition</errortype></member>
492 <member><errortype>t</errortype></member>
497 <title>Description</title>
498 <para>This condition represents errors that occur while
499 executing SQL statements, specifically as a result of
500 malformed SQL expressions.
503 The following initialization arguments and accessors exist:
506 <segtitle>Initarg</segtitle>
507 <segtitle>Accessor</segtitle>
508 <segtitle>Description</segtitle>
510 <seg><symbol>:expression</symbol></seg>
511 <seg><function>sql-error-expression</function></seg>
512 <seg>The SQL expression whose execution caused the error.</seg>
515 <seg><symbol>:database</symbol></seg>
516 <seg><function>sql-error-database</function></seg>
517 <seg>The database object that was involved in the
521 <seg><symbol>:error-id</symbol></seg>
522 <seg><function>sql-error-error-id</function></seg>
523 <seg>The numeric or symbolic error specification
524 returned by the database back-end. The values and
525 semantics of this are interface specific.</seg>
528 <seg><symbol>:secondary-error-id</symbol></seg>
529 <seg><function>sql-error-secondary-error-id</function></seg>
530 <seg>The secondary numeric or symbolic error specification
531 returned by the database back-end. The values and
532 semantics of this are interface specific.</seg>
535 <seg><symbol>:message</symbol></seg>
536 <seg><function>sql-error-database-message</function></seg>
537 <seg>A string describing the problem that occurred,
538 possibly one returned by the database back-end.</seg>
546 <function>sql-error-database</function> and
547 <function>sql-error-expression</function> are
553 <refentry id="sql-temporary-error">
555 <refentrytitle>SQL-TEMPORARY-ERROR</refentrytitle>
558 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-TEMPORARY-ERROR</emphasis></refname>
559 <refpurpose>Used to signal a temporary error in the database
560 backend.</refpurpose>
561 <refclass>Condition Type</refclass>
564 <title>Class Precedence List</title>
566 <simplelist type="inline">
567 <member><errortype>sql-temporary-error</errortype></member>
568 <member><link linkend="sql-database-error"><errortype>sql-database-error</errortype></link></member>
569 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
570 <member><errortype>simple-error</errortype></member>
571 <member><errortype>simple-condition</errortype></member>
572 <member><errortype>error</errortype></member>
573 <member><errortype>serious-condition</errortype></member>
574 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
575 <member><errortype>condition</errortype></member>
576 <member><errortype>t</errortype></member>
581 <title>Description</title>
583 This condition represents errors occurring when the database
584 cannot currently process a valid interaction because, for
585 example, it is still executing another command possibly issued
589 The following initialization arguments and accessors exist:
592 <segtitle>Initarg</segtitle>
593 <segtitle>Accessor</segtitle>
594 <segtitle>Description</segtitle>
596 <seg><symbol>:database</symbol></seg>
597 <seg><function>sql-error-database</function></seg>
598 <seg>The database object that was involved in the
602 <seg><symbol>:error-id</symbol></seg>
603 <seg><function>sql-error-error-id</function></seg>
604 <seg>The numeric or symbolic error specification
605 returned by the database back-end. The values and
606 semantics of this are interface specific.</seg>
609 <seg><symbol>:secondary-error-id</symbol></seg>
610 <seg><function>sql-error-secondary-error-id</function></seg>
611 <seg>The secondary numeric or symbolic error specification
612 returned by the database back-end. The values and
613 semantics of this are interface specific.</seg>
616 <seg><symbol>:message</symbol></seg>
617 <seg><function>sql-error-database-message</function></seg>
618 <seg>A string describing the problem that occurred,
619 possibly one returned by the database back-end.</seg>
627 <function>sql-error-database</function> is a &clsql;
633 <refentry id="sql-timeout-error">
635 <refentrytitle>SQL-TIMEOUT-ERROR</refentrytitle>
638 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-TIMEOUT-ERROR</emphasis></refname>
639 <refpurpose>condition representing errors when a connection
640 times out.</refpurpose>
641 <refclass>Condition Type</refclass>
644 <title>Class Precedence List</title>
646 <simplelist type="inline">
647 <member><link linkend="sql-connection-error"><errortype>sql-connection-error</errortype></link></member>
648 <member><link linkend="sql-database-error"><errortype>sql-database-error</errortype></link></member>
649 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
650 <member><errortype>simple-error</errortype></member>
651 <member><errortype>simple-condition</errortype></member>
652 <member><errortype>error</errortype></member>
653 <member><errortype>serious-condition</errortype></member>
654 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
655 <member><errortype>condition</errortype></member>
656 <member><errortype>t</errortype></member>
661 <title>Description</title>
662 <para>This condition represents errors that occur when the
663 database times out while processing some operation. The
664 following initialization arguments and accessors exist:</para>
666 <segtitle>Initarg</segtitle>
667 <segtitle>Accessor</segtitle>
668 <segtitle>Description</segtitle>
670 <seg><symbol>:database-type</symbol></seg>
671 <seg><function>sql-error-database-type</function></seg>
672 <seg>Database type for the connection attempt</seg>
675 <seg><symbol>:connection-spec</symbol></seg>
676 <seg><function>sql-error-connection-spec</function></seg>
677 <seg>The connection specification used in the
678 connection attempt.</seg>
681 <seg><symbol>:database</symbol></seg>
682 <seg><function>sql-error-database</function></seg>
683 <seg>The database object that was involved in the
687 <seg><symbol>:error-id</symbol></seg>
688 <seg><function>sql-error-error-id</function></seg>
689 <seg>The numeric or symbolic error specification
690 returned by the database back-end. The values and
691 semantics of this are interface specific.</seg>
694 <seg><symbol>:secondary-error-id</symbol></seg>
695 <seg><function>sql-error-secondary-error-id</function></seg>
696 <seg>The secondary numeric or symbolic error specification
697 returned by the database back-end. The values and
698 semantics of this are interface specific.</seg>
701 <seg><symbol>:message</symbol></seg>
702 <seg><function>sql-error-database-message</function></seg>
703 <seg>A string describing the problem that occurred,
704 possibly one returned by the database back-end.</seg>
712 <function>sql-error-database</function>,
713 <function>sql-error-database-type</function> and
714 <function>sql-error-connection-spec</function> are
720 <refentry id="sql-fatal-error">
722 <refentrytitle>SQL-FATAL-ERROR</refentrytitle>
725 <refname><emphasis>Condition Type</emphasis> <emphasis role="bold">SQL-FATAL-ERROR</emphasis></refname>
726 <refpurpose>condition representing a fatal error in a database
727 connection</refpurpose>
728 <refclass>Condition Type</refclass>
731 <title>Class Precedence List</title>
733 <simplelist type="inline">
734 <member><link linkend="sql-connection-error"><errortype>sql-connection-error</errortype></link></member>
735 <member><link linkend="sql-database-error"><errortype>sql-database-error</errortype></link></member>
736 <member><link linkend="sql-error"><errortype>sql-error</errortype></link></member>
737 <member><errortype>simple-error</errortype></member>
738 <member><errortype>simple-condition</errortype></member>
739 <member><errortype>error</errortype></member>
740 <member><errortype>serious-condition</errortype></member>
741 <member><link linkend="sql-condition"><errortype>sql-condition</errortype></link></member>
742 <member><errortype>condition</errortype></member>
743 <member><errortype>t</errortype></member>
748 <title>Description</title>
749 <para>This condition represents errors occurring when the
750 database connection is no longer usable.
753 The following initialization arguments and accessors exist:
756 <segtitle>Initarg</segtitle>
757 <segtitle>Accessor</segtitle>
758 <segtitle>Description</segtitle>
760 <seg><symbol>:database-type</symbol></seg>
761 <seg><function>sql-error-database-type</function></seg>
762 <seg>Database type for the connection attempt</seg>
765 <seg><symbol>:connection-spec</symbol></seg>
766 <seg><function>sql-error-connection-spec</function></seg>
767 <seg>The connection specification used in the
768 connection attempt.</seg>
771 <seg><symbol>:database</symbol></seg>
772 <seg><function>sql-error-database</function></seg>
773 <seg>The database object that was involved in the
777 <seg><symbol>:error-id</symbol></seg>
778 <seg><function>sql-error-error-id</function></seg>
779 <seg>The numeric or symbolic error specification
780 returned by the database back-end. The values and
781 semantics of this are interface specific.</seg>
784 <seg><symbol>:secondary-error-id</symbol></seg>
785 <seg><function>sql-error-secondary-error-id</function></seg>
786 <seg>The secondary numeric or symbolic error specification
787 returned by the database back-end. The values and
788 semantics of this are interface specific.</seg>
791 <seg><symbol>:message</symbol></seg>
792 <seg><function>sql-error-database-message</function></seg>
793 <seg>A string describing the problem that occurred,
794 possibly one returned by the database back-end.</seg>
802 <function>sql-error-database</function>,
803 <function>sql-error-database-type</function> and
804 <function>sql-error-connection-spec</function> are