r10285: * doc/*.xml: Fix spelling of Vladimir
[clsql.git] / doc / ref-recording.xml
1 <?xml version='1.0' ?>
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">
5 %myents;
6 ]>
7
8 <!-- SQL I/0 Recording --> 
9
10 <reference id="ref-recording"> 
11   <title>SQL I/O Recording</title> 
12     <partintro>
13     <para>
14       &clsql; provides a facility for recording SQL commands sent to
15       and/or results returned from the underlying RDBMS to user
16       sprecified streams. This is useful for monitoring &clsql;
17       activity and for debugging applications.
18     </para>
19     <para> 
20       This section documents the functions provided for enabling and
21       disabling SQL recording as well as for manipulating the streams
22       on to which SQL commands and results are recorded.
23     </para>
24   </partintro>
25
26   <refentry id="start-sql-recording">
27     <refmeta>
28       <refentrytitle>START-SQL-RECORDING</refentrytitle>
29     </refmeta>
30     <refnamediv>
31       <refname>START-SQL-RECORDING</refname>
32       <refpurpose>Start recording SQL commands or results.</refpurpose>
33       <refclass>Function</refclass>
34     </refnamediv>
35     <refsect1>
36       <title>Syntax</title>
37       <synopsis>
38       <function>start-sql-recording</function> &amp;key <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
39     </refsect1>
40     <refsect1>
41       <title>Arguments and Values</title>
42       <variablelist>
43         <varlistentry>
44           <term><parameter>type</parameter></term>
45           <listitem>
46             <para>
47               One of the following keyword symbols:
48               <symbol>:commands</symbol>, <symbol>:results</symbol> or
49               <symbol>:both</symbol>, defaulting to
50               <symbol>:commands</symbol>.
51             </para>
52           </listitem>
53         </varlistentry>              <varlistentry>
54           <term><parameter>database</parameter></term>
55           <listitem>
56             <para>A 
57             <glossterm linkend="gloss-database-object">database
58             object</glossterm>. This will default to
59             <symbol>*default-database*</symbol>.</para>
60           </listitem>
61         </varlistentry>
62       </variablelist>
63     </refsect1>
64     <refsect1>
65       <title>Description</title>
66       <para>Starts recording of SQL commands sent to and/or results
67       returned from <parameter>database</parameter> which defaults to
68       <symbol>*default-database*</symbol>. The SQL is output on one or
69       more broadcast streams, initially just
70       <symbol>*standard-output*</symbol>, and the functions
71       <function>add-sql-stream</function> and
72       <function>delete-sql-stream</function> may be used to add or
73       delete command or result recording streams. The default value of
74       <parameter>type</parameter> is <symbol>:commands</symbol> which
75       means that SQL commands sent to <parameter>database</parameter>
76       are recorded. If <parameter>type</parameter> is
77       <symbol>:results</symbol> then SQL results returned from
78       <parameter>database</parameter> are recorded. Both commands and
79       results may be recorded by passing <parameter>type</parameter>
80       value of <symbol>:both</symbol>.
81       </para>
82     </refsect1>
83     <refsect1>
84       <title>Examples</title>
85       <screen>
86 (start-sql-recording :type :both)
87 => 
88 (select [last-name] :from [employee] 
89                     :where [= [emplid] 1] 
90                     :field-names nil
91                     :flatp t)
92 ;; 2004-07-02 16:42:12 dent/test/dent => SELECT last_name FROM employee WHERE (emplid = 1)
93 ;; 2004-07-02 16:42:12 dent/test/dent &lt;= (Lenin)
94 => ("Lenin")
95       </screen>
96     </refsect1>
97     <refsect1>
98       <title>Side Effects</title>
99       <para>
100         The command and result recording broadcast streams associated
101         with <parameter>database</parameter> are reinitialised with
102         only <symbol>*standard-output*</symbol> as their component
103         streams.
104       </para>
105     </refsect1>
106     <refsect1>
107       <title>Affected by</title>
108       <para>
109         None. 
110       </para>
111     </refsect1>
112     <refsect1>
113       <title>Exceptional Situations</title>
114       <para>
115         None. 
116       </para>
117     </refsect1>
118     <refsect1>
119       <title>See Also</title>
120       <simplelist>
121         <member><link linkend="stop-sql-recording"><function>stop-sql-recording</function></link></member>
122         <member><link linkend="sql-recording-p"><function>sql-recording-p</function></link></member>
123         <member><link linkend="sql-stream"><function>sql-stream</function></link></member>
124         <member><link linkend="add-sql-stream"><function>add-sql-stream</function></link></member>
125         <member><link linkend="delete-sql-stream"><function>delete-sql-stream</function></link></member>
126         <member><link linkend="list-sql-streams"><function>list-sql-streams</function></link></member>
127       </simplelist>
128     </refsect1>
129     <refsect1>
130       <title>Notes</title>
131       <para>
132         None. 
133       </para>
134     </refsect1>
135   </refentry>
136
137   <refentry id="stop-sql-recording">
138     <refmeta>
139       <refentrytitle>STOP-SQL-RECORDING</refentrytitle>
140     </refmeta>
141     <refnamediv>
142       <refname>STOP-SQL-RECORDING</refname>
143       <refpurpose>Stop recording SQL commands or results.</refpurpose>
144       <refclass>Function</refclass>
145     </refnamediv>
146     <refsect1>
147       <title>Syntax</title>
148       <synopsis>
149       <function>stop-sql-recording</function> &amp;key <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
150     </refsect1>
151     <refsect1>
152       <title>Arguments and Values</title>
153       <variablelist>
154         <varlistentry>
155           <term><parameter>type</parameter></term>
156           <listitem>
157             <para>
158               One of the following keyword symbols:
159               <symbol>:commands</symbol>, <symbol>:results</symbol> or
160               <symbol>:both</symbol>, defaulting to
161               <symbol>:commands</symbol>.
162             </para>
163           </listitem>
164         </varlistentry>              <varlistentry>
165           <term><parameter>database</parameter></term>
166           <listitem>
167             <para>A 
168             <glossterm linkend="gloss-database-object">database
169             object</glossterm>. This will default to
170             <symbol>*default-database*</symbol>.</para>
171           </listitem>
172         </varlistentry> 
173       </variablelist>
174     </refsect1>
175     <refsect1>
176       <title>Description</title>
177       <para>Stops recording of SQL commands sent to and/or results
178       returned from <parameter>database</parameter> which defaults to
179       <symbol>*default-database*</symbol>. The default value of
180       <parameter>type</parameter> is <symbol>:commands</symbol> which
181       means that SQL commands sent to <parameter>database</parameter>
182       will no longer be recorded. If <parameter>type</parameter> is
183       <symbol>:results</symbol> then SQL results returned from
184       <parameter>database</parameter> will no longer be
185       recorded. Recording may be stopped for both commands and results
186       by passing <parameter>type</parameter> value of
187       <symbol>:both</symbol>.
188       </para>
189     </refsect1>
190     <refsect1>
191       <title>Examples</title>
192       <screen>
193 (start-sql-recording :type :both)
194 => 
195 (select [last-name] :from [employee] 
196                        :where [= [emplid] 1] 
197                        :field-names nil
198                        :flatp t)
199 ;; 2004-07-02 16:42:12 dent/test/dent => SELECT last_name FROM employee WHERE (emplid = 1)
200 ;; 2004-07-02 16:42:12 dent/test/dent &lt;= (Lenin)
201 => ("Lenin")
202 (stop-sql-recording :type :results)
203 => 
204 (select [last-name] :from [employee] 
205                        :where [= [emplid] 1] 
206                        :field-names nil
207                        :flatp t)
208 ;; 2004-07-02 16:44:11 dent/test/dent => SELECT last_name FROM employee WHERE (emplid = 1)
209 => ("Lenin")
210       </screen>
211     </refsect1>
212     <refsect1>
213       <title>Side Effects</title>
214       <para>
215         The command and result recording broadcast streams associated
216         with <parameter>database</parameter> are reinitialised to
217         &nil;.
218       </para>
219     </refsect1>
220     <refsect1>
221       <title>Affected by</title>
222       <para>
223         None. 
224       </para>
225     </refsect1>
226     <refsect1>
227       <title>Exceptional Situations</title>
228       <para>
229         None. 
230       </para>
231     </refsect1>
232     <refsect1>
233       <title>See Also</title>
234       <simplelist>
235         <member><link linkend="start-sql-recording"><function>start-sql-recording</function></link></member>
236         <member><link linkend="sql-recording-p"><function>sql-recording-p</function></link></member>
237       </simplelist>
238     </refsect1>
239     <refsect1>
240       <title>Notes</title>
241       <para>
242         None. 
243       </para>
244     </refsect1>
245   </refentry>
246
247   <refentry id="sql-recording-p">
248     <refmeta>
249       <refentrytitle>SQL-RECORDING-P</refentrytitle>
250     </refmeta>
251     <refnamediv>
252       <refname>SQL-RECORDING-P</refname>
253       <refpurpose>Tests whether SQL commands or results are being recorded.</refpurpose>
254       <refclass>Function</refclass>
255     </refnamediv>
256     <refsect1>
257       <title>Syntax</title>
258       <synopsis>
259       <function>sql-recording-p</function> &amp;key <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
260     </refsect1>
261     <refsect1>
262       <title>Arguments and Values</title>
263       <variablelist>
264         <varlistentry>
265           <term><parameter>type</parameter></term>
266           <listitem>
267             <para>
268               One of the following keyword symbols:
269               <symbol>:commands</symbol>, <symbol>:results</symbol>,
270               <symbol>:both</symbol> or <symbol>:either</symbol>
271               defaulting to <symbol>:commands</symbol>.
272             </para>
273           </listitem>
274         </varlistentry>              
275         <varlistentry>
276           <term><parameter>database</parameter></term>
277           <listitem>
278             <para>A 
279             <glossterm linkend="gloss-database-object">database
280             object</glossterm>. This will default to
281             <symbol>*default-database*</symbol>.</para>
282           </listitem>
283         </varlistentry> 
284         <varlistentry>
285           <term><parameter>result</parameter></term>
286           <listitem>
287             <para>
288               A Boolean. 
289             </para>
290           </listitem>
291         </varlistentry>              
292       </variablelist>
293     </refsect1>
294     <refsect1>
295       <title>Description</title>
296       <para>Predicate to test whether the SQL recording specified by
297       <parameter>type</parameter> is currently enabled for
298       <parameter>database</parameter> which defaults to
299       <symbol>*default-database*</symbol>.
300       <parameter>type</parameter> may be one of
301       <symbol>:commands</symbol>, <symbol>:results</symbol>,
302       <symbol>:both</symbol> or <symbol>:either</symbol>, defaulting
303       to <symbol>:commands</symbol>, otherwise &nil; is returned.
304       </para>
305     </refsect1>
306     <refsect1>
307       <title>Examples</title>
308       <screen>
309 (start-sql-recording :type :commands)
310 => 
311 (sql-recording-p :type :commands)
312 => T
313 (sql-recording-p :type :both)
314 => NIL
315 (sql-recording-p :type :either)
316 => T
317       </screen>
318     </refsect1>
319     <refsect1>
320       <title>Side Effects</title>
321       <para>
322         None. 
323       </para>
324     </refsect1>
325     <refsect1>
326       <title>Affected by</title>
327       <simplelist>
328         <member><link linkend="start-sql-recording"><function>start-sql-recording</function></link></member>
329         <member><link linkend="stop-sql-recording"><function>stop-sql-recording</function></link></member>      
330       </simplelist>
331     </refsect1>
332     <refsect1>
333       <title>Exceptional Situations</title>
334       <para>
335         None. 
336       </para>
337     </refsect1>
338     <refsect1>
339       <title>See Also</title>
340       <simplelist>
341         <member><link linkend="start-sql-recording"><function>start-sql-recording</function></link></member>
342         <member><link linkend="stop-sql-recording"><function>stop-sql-recording</function></link></member>
343       </simplelist>
344     </refsect1>
345     <refsect1>
346       <title>Notes</title>
347       <para>
348         The <symbol>:both</symbol> and <symbol>:either</symbol> values
349         for the <parameter>type</parameter> keyword argument are
350         &clsql; extensions.
351       </para>
352     </refsect1>
353   </refentry>
354
355   <refentry id="sql-stream">
356     <refmeta>
357       <refentrytitle>SQL-STREAM</refentrytitle>
358     </refmeta>
359     <refnamediv>
360       <refname>SQL-STREAM</refname>
361       <refpurpose>Returns the broadcast stream used for recording SQL commands or results.</refpurpose>
362       <refclass>Function</refclass>
363     </refnamediv>
364     <refsect1>
365       <title>Syntax</title>
366       <synopsis>
367       <function>sql-stream</function> &amp;key <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
368     </refsect1>
369     <refsect1>
370       <title>Arguments and Values</title>
371       <variablelist>
372         <varlistentry>
373           <term><parameter>type</parameter></term>
374           <listitem>
375             <para>
376               One of the following keyword symbols:
377               <symbol>:commands</symbol> or <symbol>:results</symbol>,
378               defaulting to <symbol>:commands</symbol>.
379             </para>
380           </listitem>
381         </varlistentry>              <varlistentry>
382           <term><parameter>database</parameter></term>
383           <listitem>
384             <para>A 
385             <glossterm linkend="gloss-database-object">database
386             object</glossterm>. This will default to
387             <symbol>*default-database*</symbol>.</para>
388           </listitem>
389         </varlistentry> 
390         <varlistentry>
391           <term><parameter>result</parameter></term>
392           <listitem>
393             <para>
394               A broadcast stream or &nil;. 
395             </para>
396           </listitem>
397         </varlistentry>
398       </variablelist>
399     </refsect1>
400     <refsect1>
401       <title>Description</title>
402       <para>Returns the broadcast stream used for recording SQL
403       commands sent to or results returned from
404       <parameter>database</parameter> which defaults to
405       <symbol>*default-database*</symbol>. <parameter>type</parameter>
406       must be one of <symbol>:commands</symbol> or
407       <symbol>:results</symbol>, defaulting to
408       <symbol>:commands</symbol>, and determines whether the stream
409       returned is that used for recording SQL commands or results.
410       </para>
411     </refsect1>
412     <refsect1>
413       <title>Examples</title>
414       <screen>
415 (start-sql-recording :type :commands)
416 => 
417 (sql-stream :type :commands)
418 => #&lt;Broadcast Stream>
419 (sql-stream :type :results)
420 => NIL
421       </screen>
422     </refsect1>
423     <refsect1>
424       <title>Side Effects</title>
425       <para>
426         None. 
427       </para>
428     </refsect1>
429     <refsect1>
430       <title>Affected by</title>
431       <para>
432         None. 
433       </para>
434     </refsect1>
435     <refsect1>
436       <title>Exceptional Situations</title>
437       <para>
438         An error is signalled if <parameter>type</parameter> is not
439         one of <symbol>:commands</symbol> or
440         <symbol>:results</symbol>.
441       </para>
442     </refsect1>
443     <refsect1>
444       <title>See Also</title>
445       <simplelist>
446         <member><link linkend="start-sql-recording"><function>start-sql-recording</function></link></member>
447         <member><link linkend="add-sql-stream"><function>add-sql-stream</function></link></member>
448         <member><link linkend="delete-sql-stream"><function>delete-sql-stream</function></link></member>
449         <member><link linkend="list-sql-streams"><function>list-sql-streams</function></link></member>
450       </simplelist>
451     </refsect1>
452     <refsect1>
453       <title>Notes</title>
454       <para>
455         None. 
456       </para>
457     </refsect1>
458   </refentry>
459
460   <refentry id="add-sql-stream">
461     <refmeta>
462       <refentrytitle>ADD-SQL-STREAM</refentrytitle>
463     </refmeta>
464     <refnamediv>
465       <refname>ADD-SQL-STREAM</refname>
466       <refpurpose>Add a component to the broadcast streams used for recording SQL commands or results.</refpurpose>
467       <refclass>Function</refclass>
468     </refnamediv>
469     <refsect1>
470       <title>Syntax</title>
471       <synopsis>
472       <function>add-sql-stream</function> <replaceable>stream</replaceable> &amp;key <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
473     </refsect1>
474     <refsect1>
475       <title>Arguments and Values</title>
476       <variablelist>
477         <varlistentry>
478           <term><parameter>stream</parameter></term>
479           <listitem>
480             <para>
481               A stream or &t;. 
482             </para>
483           </listitem>
484         </varlistentry>              
485         <varlistentry>
486           <term><parameter>type</parameter></term>
487           <listitem>
488             <para>
489               One of the following keyword symbols:
490               <symbol>:commands</symbol>, <symbol>:results</symbol> or
491               <symbol>:both</symbol>, defaulting to
492               <symbol>:commands</symbol>.
493             </para>
494           </listitem>
495         </varlistentry>              
496         <varlistentry>
497           <term><parameter>database</parameter></term>
498           <listitem>
499             <para>A 
500             <glossterm linkend="gloss-database-object">database
501             object</glossterm>. This will default to
502             <symbol>*default-database*</symbol>.</para>
503           </listitem>
504         </varlistentry> 
505         <varlistentry>
506           <term><parameter>result</parameter></term>
507           <listitem>
508             <para>
509               The added stream. 
510             </para>
511           </listitem>
512         </varlistentry>              
513       </variablelist>
514     </refsect1>
515     <refsect1>
516       <title>Description</title>
517       <para>Adds the supplied stream <parameter>stream</parameter> (or
518       &t; for <symbol>*standard-output*</symbol>) as a component of
519       the recording broadcast stream for the SQL recording type
520       specified by <parameter>type</parameter> on
521       <parameter>database</parameter> which defaults to
522       <symbol>*default-database*</symbol>. <parameter>type</parameter>
523       must be one of <symbol>:commands</symbol>,
524       <symbol>:results</symbol>, or <symbol>:both</symbol>, defaulting
525       to <symbol>:commands</symbol>, depending on whether the stream
526       is to be added for recording SQL commands, results or both.
527       </para>
528     </refsect1>
529     <refsect1>
530       <title>Examples</title>
531       <screen>
532 (start-sql-recording :type :commands)
533 => 
534 (with-output-to-string (s) 
535   (add-sql-stream s :type :commands)
536   (print-query [select [emplid] [first-name] [last-name] [email] :from [employee]] 
537                :stream s))
538
539 ;; 2004-07-02 17:38:45 dent/test/dent => SELECT emplid,first_name,last_name,email FROM employee
540 => 
541 ";; 2004-07-02 17:38:45 dent/test/dent => SELECT emplid,first_name,last_name,email FROM employee
542 1  Vladimir   Lenin     lenin@soviet.org     
543 2  Josef      Stalin    stalin@soviet.org    
544 3  Leon       Trotsky   trotsky@soviet.org   
545 4  Nikita     Kruschev  kruschev@soviet.org  
546 5  Leonid     Brezhnev  brezhnev@soviet.org  
547 6  Yuri       Andropov  andropov@soviet.org  
548 7  Konstantin Chernenko chernenko@soviet.org 
549 8  Mikhail    Gorbachev gorbachev@soviet.org 
550 9  Boris      Yeltsin   yeltsin@soviet.org   
551 10 Vladimir   Putin     putin@soviet.org     "
552       </screen>
553     </refsect1>
554     <refsect1>
555       <title>Side Effects</title>
556       <para>
557         The specified broadcast stream(s) associated with
558         <parameter>database</parameter> are modified.
559       </para>
560     </refsect1>
561     <refsect1>
562       <title>Affected by</title>
563       <para>
564         None. 
565       </para>
566     </refsect1>
567     <refsect1>
568       <title>Exceptional Situations</title>
569       <para>
570         None. 
571       </para>
572     </refsect1>
573     <refsect1>
574       <title>See Also</title>
575       <simplelist>
576         <member><link linkend="start-sql-recording"><function>start-sql-recording</function></link></member>
577         <member><link linkend="sql-stream"><function>sql-stream</function></link></member>
578         <member><link linkend="delete-sql-stream"><function>delete-sql-stream</function></link></member>
579         <member><link linkend="list-sql-streams"><function>list-sql-streams</function></link></member>
580       </simplelist>
581     </refsect1>
582     <refsect1>
583       <title>Notes</title>
584       <para>
585         None. 
586       </para>
587     </refsect1>
588   </refentry>
589
590   <refentry id="delete-sql-stream">
591     <refmeta>
592       <refentrytitle>DELETE-SQL-STREAM</refentrytitle>
593     </refmeta>
594     <refnamediv>
595       <refname>DELETE-SQL-STREAM</refname>
596       <refpurpose>Remove a component from the broadcast streams used for recording SQL commands or results.</refpurpose>
597       <refclass>Function</refclass>
598     </refnamediv>
599     <refsect1>
600       <title>Syntax</title>
601       <synopsis>
602       <function>delete-sql-stream</function> <replaceable>stream</replaceable> &amp;KEY <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
603     </refsect1>
604     <refsect1>
605       <title>Arguments and Values</title>
606       <variablelist>
607         <varlistentry>
608           <term><parameter>stream</parameter></term>
609           <listitem>
610             <para>
611               A stream or &t;. 
612             </para>
613           </listitem>
614         </varlistentry>              
615         <varlistentry>
616           <term><parameter>stream</parameter></term>
617           <listitem>
618             <para>
619               A stream or &t;. 
620             </para>
621           </listitem>
622         </varlistentry> 
623         <varlistentry>
624           <term><parameter>type</parameter></term>
625         <listitem>
626           <para>
627             One of the following keyword symbols:
628             <symbol>:commands</symbol>, <symbol>:results</symbol> or
629             <symbol>:both</symbol>, defaulting to
630             <symbol>:commands</symbol>.
631           </para>
632         </listitem>
633         </varlistentry>  
634         <varlistentry>
635           <term><parameter>database</parameter></term>
636           <listitem>
637             <para>A 
638             <glossterm linkend="gloss-database-object">database
639             object</glossterm>. This will default to
640             <symbol>*default-database*</symbol>.</para>
641           </listitem>
642         </varlistentry> 
643         <varlistentry>
644           <term><parameter>result</parameter></term>
645           <listitem>
646             <para>
647               The added stream. 
648             </para>
649           </listitem>
650         </varlistentry>              
651       </variablelist>
652     </refsect1>
653     <refsect1>
654       <title>Description</title>
655       <para>Removes the supplied stream <parameter>stream</parameter>
656       from the recording broadcast stream for the SQL recording type
657       specified by <parameter>type</parameter> on
658       <parameter>database</parameter> which defaults to
659       <symbol>*default-database*</symbol>. <parameter>type</parameter>
660       must be one of <symbol>:commands</symbol>,
661       <symbol>:results</symbol>, or <symbol>:both</symbol>, defaulting
662       to <symbol>:commands</symbol>, depending on whether the stream
663       is to be added for recording SQL commands, results or both.
664       </para>
665     </refsect1>
666     <refsect1>
667       <title>Examples</title>
668       <screen>
669 (list-sql-streams :type :both)
670 => (#&lt;Stream for descriptor 7> #&lt;Stream for descriptor 7>)
671 (delete-sql-stream *standard-output* :type :results)
672 => #&lt;Stream for descriptor 7>
673 (list-sql-streams :type :both)
674 => (#&lt;Stream for descriptor 7>)
675       </screen>
676     </refsect1>
677     <refsect1>
678       <title>Side Effects</title>
679       <para>
680         The specified broadcast stream(s) associated with
681         <parameter>database</parameter> are modified.     
682       </para>
683     </refsect1>
684     <refsect1>
685       <title>Affected by</title>
686       <para>
687         None. 
688       </para>
689     </refsect1>
690     <refsect1>
691       <title>Exceptional Situations</title>
692       <para>
693         None. 
694       </para>
695     </refsect1>
696     <refsect1>
697       <title>See Also</title>
698       <simplelist>
699         <member><link linkend="start-sql-recording"><function>start-sql-recording</function></link></member>
700         <member><link linkend="stop-sql-recording"><function>stop-sql-recording</function></link></member>
701         <member><link linkend="sql-recording-p"><function>sql-recording-p</function></link></member>
702         <member><link linkend="sql-stream"><function>sql-stream</function></link></member>
703         <member><link linkend="add-sql-stream"><function>add-sql-stream</function></link></member>
704         <member><link linkend="delete-sql-stream"><function>delete-sql-stream</function></link></member>
705         <member><link linkend="list-sql-streams"><function>list-sql-streams</function></link></member>
706       </simplelist>
707     </refsect1>
708     <refsect1>
709       <title>Notes</title>
710       <para>
711         None. 
712       </para>
713     </refsect1>
714   </refentry>
715
716   <refentry id="list-sql-streams">
717     <refmeta>
718       <refentrytitle>LIST-SQL-STREAMS</refentrytitle>
719     </refmeta>
720     <refnamediv>
721       <refname>LIST-SQL-STREAMS</refname>
722       <refpurpose>List the components of the broadcast streams used for recording SQL commands or results.</refpurpose>
723       <refclass>Function</refclass>
724     </refnamediv>
725     <refsect1>
726       <title>Syntax</title>
727       <synopsis>
728       <function>list-sql-streams</function> &amp;key <replaceable>type</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
729     </refsect1>
730     <refsect1>
731       <title>Arguments and Values</title>
732       <variablelist>
733         <varlistentry>
734           <term><parameter>type</parameter></term>
735           <listitem>
736             <para>
737               One of the following keyword symbols:
738               <symbol>:commands</symbol>, <symbol>:results</symbol> or
739               <symbol>:both</symbol>, defaulting to
740               <symbol>:commands</symbol>.
741             </para>
742           </listitem>
743         </varlistentry>              
744         <varlistentry>
745           <term><parameter>database</parameter></term>
746           <listitem>
747             <para>A 
748             <glossterm linkend="gloss-database-object">database
749             object</glossterm>. This will default to
750             <symbol>*default-database*</symbol>.</para>
751           </listitem>
752         </varlistentry> 
753         <varlistentry>
754           <term><parameter>result</parameter></term>
755           <listitem>
756             <para>
757               A list. 
758             </para>
759           </listitem>
760         </varlistentry>              
761       </variablelist>
762     </refsect1>
763     <refsect1>
764       <title>Description</title>
765       <para>Returns the list of component streams for the broadcast
766       stream recording SQL commands sent to and/or results returned
767       from <parameter>database</parameter> which defaults to
768       <symbol>*default-database*</symbol>. <parameter>type</parameter>
769       must be one of <symbol>:commands</symbol>,
770       <symbol>:results</symbol>, or <symbol>:both</symbol>, defaulting
771       to <symbol>:commands</symbol>, and determines whether the listed
772       streams contain those recording SQL commands, results or both.
773       </para>
774     </refsect1>
775     <refsect1>
776       <title>Examples</title>
777       <screen>
778 (list-sql-streams :type :both)
779 => NIL
780 (start-sql-recording :type :both)
781 => 
782 (list-sql-streams :type :both)
783 => (#&lt;Stream for descriptor 7> #&lt;Stream for descriptor 7>)
784       </screen>
785     </refsect1>
786     <refsect1>
787       <title>Side Effects</title>
788       <para>
789         None. 
790       </para>
791     </refsect1>
792     <refsect1>
793       <title>Affected by</title>
794       <para>
795       <simplelist>
796         <member><link linkend="add-sql-stream"><function>add-sql-stream</function></link></member>
797         <member><link linkend="delete-sql-stream"><function>delete-sql-stream</function></link></member>      
798       </simplelist>
799       </para>
800     </refsect1>
801     <refsect1>
802       <title>Exceptional Situations</title>
803       <para>
804         An error is signalled if <parameter>type</parameter> is passed
805         a value other than <symbol>:commands</symbol>,
806         <symbol>:results</symbol> or <symbol>:both</symbol>.
807       </para>
808     </refsect1>
809     <refsect1>
810       <title>See Also</title>
811       <simplelist>
812         <member><link linkend="sql-stream"><function>sql-stream</function></link></member>
813         <member><link linkend="add-sql-stream"><function>add-sql-stream</function></link></member>
814         <member><link linkend="delete-sql-stream"><function>delete-sql-stream</function></link></member>
815       </simplelist>
816     </refsect1>
817     <refsect1>
818       <title>Notes</title>
819       <para>
820         None. 
821       </para>
822     </refsect1>
823   </refentry>
824
825 </reference>