r9734: Document idiosyncrasies of the individual backends and differences from CommonSQL.
[clsql.git] / doc / ref-oodml.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 <!-- Object Oriented Data Manipulation Language --> 
9 <reference id="ref-oodml"> 
10   <title>Object Oriented Data Manipulation Language (OODML)</title> 
11     <partintro>
12     <para>
13       <!-- introduction --> 
14     </para>
15   </partintro>
16
17   <refentry id="db-auto-sync">
18     <refnamediv>
19       <refname>*DB-AUTO-SYNC*</refname>
20       <refpurpose><!-- purpose --></refpurpose>
21       <refclass>Variable</refclass>
22     </refnamediv>
23     <refsect1>
24       <title>Value Type</title>
25       <para>
26         <!-- value type --> 
27       </para> 
28     </refsect1>
29     <refsect1>
30       <title>Initial Value</title>
31       <para><symbol>nil</symbol></para>
32     </refsect1>
33     <refsect1>
34       <title>Description</title>
35       <!-- description --> 
36     </refsect1>
37     <refsect1>
38       <title>Examples</title>
39       <screen>
40         <!-- examples --> 
41       </screen>
42     </refsect1>
43     <refsect1>
44       <title>Affected By</title>
45       <para>None.</para>
46     </refsect1>
47     <refsect1>
48       <title>See Also</title>
49       <para>None.</para>
50     </refsect1>
51     <refsect1>
52       <title>Notes</title>
53       <para>None.</para>
54     </refsect1>
55   </refentry>
56
57   <refentry id="default-update-objects-max-len">
58     <refnamediv>
59       <refname>*DEFAULT-UPDATE-OBJECTS-MAX-LEN*</refname>
60       <refpurpose><!-- purpose --></refpurpose>
61       <refclass>Variable</refclass>
62     </refnamediv>
63     <refsect1>
64       <title>Value Type</title>
65       <para>
66         <!-- value type --> 
67       </para> 
68     </refsect1>
69     <refsect1>
70       <title>Initial Value</title>
71       <para><symbol>nil</symbol></para>
72     </refsect1>
73     <refsect1>
74       <title>Description</title>
75       <!-- description --> 
76     </refsect1>
77     <refsect1>
78       <title>Examples</title>
79       <screen>
80         <!-- examples --> 
81       </screen>
82     </refsect1>
83     <refsect1>
84       <title>Affected By</title>
85       <para>None.</para>
86     </refsect1>
87     <refsect1>
88       <title>See Also</title>
89       <para>None.</para>
90     </refsect1>
91     <refsect1>
92       <title>Notes</title>
93       <para>None.</para>
94     </refsect1>
95   </refentry>
96
97   <refentry id="delete-instance-records">
98     <refnamediv>
99       <refname>DELETE-INSTANCE-RECORDS</refname>
100       <refpurpose><!-- purpose --></refpurpose>
101       <refclass>Function</refclass>
102     </refnamediv>
103     <refsect1>
104       <title>Syntax</title>
105       <synopsis>
106       <function> (DELETE-INSTANCE-RECORDS OBJECT) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
107     </refsect1>
108     <refsect1>
109       <title>Arguments and Values</title>
110       <variablelist>
111         <!-- arguments and values --> 
112       </variablelist>
113     </refsect1>
114     <refsect1>
115       <title>Description</title>
116       <para>Deletes the records represented by OBJECT in the
117       appropriate table of the database associated with OBJECT. If
118       OBJECT is not yet associated with a database, an error is
119       signalled.
120       </para>
121     </refsect1>
122     <refsect1>
123       <title>Examples</title>
124       <screen>
125         <!-- examples -->
126       </screen>
127     </refsect1>
128     <refsect1>
129       <title>Side Effects</title>
130       <para>
131         <!-- side effects --> 
132       </para>
133     </refsect1>
134     <refsect1>
135       <title>Affected by</title>
136       <para>
137         <simplelist>
138           <!-- affected by --> 
139         </simplelist>
140       </para>
141     </refsect1>
142     <refsect1>
143       <title>Exceptional Situations</title>
144       <para>
145         <!-- execeptional situations -->
146       </para>
147     </refsect1>
148     <refsect1>
149       <title>See Also</title>
150       <para>
151         <simplelist>
152           <!-- see also --> 
153         </simplelist>
154       </para>
155     </refsect1>
156     <refsect1>
157       <title>Notes</title>
158       <para>
159         <!-- notes --> 
160       </para>
161     </refsect1>
162   </refentry> 
163
164   <refentry id="instance-refreshed">
165     <refnamediv>
166       <refname>INSTANCE-REFRESHED</refname>
167       <refpurpose><!-- purpose --></refpurpose>
168       <refclass>Function</refclass>
169     </refnamediv>
170     <refsect1>
171       <title>Syntax</title>
172       <synopsis>
173       <function> (INSTANCE-REFRESHED OBJECT) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
174     </refsect1>
175     <refsect1>
176       <title>Arguments and Values</title>
177       <variablelist>
178         <!-- arguments and values --> 
179       </variablelist>
180     </refsect1>
181     <refsect1>
182       <title>Description</title>
183       <para>Provides a hook which is called within an object
184       oriented call to SELECT with a non-nil value of REFRESH when
185       the View Class instance OBJECT has been updated from the
186       database. A method specialised on STANDARD-DB-OBJECT is
187       provided which has no effects. Methods specialised on
188       particular View Classes can be used to specify any operations
189       that need to be made on View Classes instances which have been
190       updated in calls to SELECT.
191       </para>
192     </refsect1>
193     <refsect1>
194       <title>Examples</title>
195       <screen>
196         <!-- examples -->
197       </screen>
198     </refsect1>
199     <refsect1>
200       <title>Side Effects</title>
201       <para>
202         <!-- side effects --> 
203       </para>
204     </refsect1>
205     <refsect1>
206       <title>Affected by</title>
207       <para>
208         <simplelist>
209           <!-- affected by --> 
210         </simplelist>
211       </para>
212     </refsect1>
213     <refsect1>
214       <title>Exceptional Situations</title>
215       <para>
216         <!-- execeptional situations -->
217       </para>
218     </refsect1>
219     <refsect1>
220       <title>See Also</title>
221       <para>
222         <simplelist>
223           <!-- see also --> 
224         </simplelist>
225       </para>
226     </refsect1>
227     <refsect1>
228       <title>Notes</title>
229       <para>
230         <!-- notes --> 
231       </para>
232     </refsect1>
233   </refentry> 
234
235   <refentry id="update-instance-from-records">
236     <refnamediv>
237       <refname>UPDATE-INSTANCE-FROM-RECORDS</refname>
238       <refpurpose><!-- purpose --></refpurpose>
239       <refclass>Function</refclass>
240     </refnamediv>
241     <refsect1>
242       <title>Syntax</title>
243       <synopsis>
244       <function> (UPDATE-INSTANCE-FROM-RECORDS OBJECT &amp;KEY DATABASE) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
245     </refsect1>
246     <refsect1>
247       <title>Arguments and Values</title>
248       <variablelist>
249         <!-- arguments and values --> 
250       </variablelist>
251     </refsect1>
252     <refsect1>
253       <title>Description</title>
254       <para>Updates the slot values of the View Class instance
255       OBJECT using the attribute values of the appropriate table of
256       DATABASE which defaults to the database associated with OBJECT
257       or, if OBJECT is not associated with a database,
258       *DEFAULT-DATABASE*.  Join slots are updated but instances of
259       the class on which the join is made are not updated.
260       </para>
261     </refsect1>
262     <refsect1>
263       <title>Examples</title>
264       <screen>
265         <!-- examples -->
266       </screen>
267     </refsect1>
268     <refsect1>
269       <title>Side Effects</title>
270       <para>
271         <!-- side effects --> 
272       </para>
273     </refsect1>
274     <refsect1>
275       <title>Affected by</title>
276       <para>
277         <simplelist>
278           <!-- affected by --> 
279         </simplelist>
280       </para>
281     </refsect1>
282     <refsect1>
283       <title>Exceptional Situations</title>
284       <para>
285         <!-- execeptional situations -->
286       </para>
287     </refsect1>
288     <refsect1>
289       <title>See Also</title>
290       <para>
291         <simplelist>
292           <!-- see also --> 
293         </simplelist>
294       </para>
295     </refsect1>
296     <refsect1>
297       <title>Notes</title>
298       <para>
299         <!-- notes --> 
300       </para>
301     </refsect1>
302   </refentry> 
303
304   <refentry id="update-objects-joins">
305     <refnamediv>
306       <refname>UPDATE-OBJECTS-JOINS</refname>
307       <refpurpose><!-- purpose --></refpurpose>
308       <refclass>Function</refclass>
309     </refnamediv>
310     <refsect1>
311       <title>Syntax</title>
312       <synopsis>
313       <function> (UPDATE-OBJECTS-JOINS OBJECTS &amp;KEY (SLOTS T) (FORCE-P T) CLASS-NAME (MAX-LEN *DEFAULT-UPDATE-OBJECTS-MAX-LEN*)) [function]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
314     </refsect1>
315     <refsect1>
316       <title>Arguments and Values</title>
317       <variablelist>
318         <!-- arguments and values --> 
319       </variablelist>
320     </refsect1>
321     <refsect1>
322       <title>Description</title>
323       <para>Updates from the records of the appropriate
324       database tables the join slots specified by SLOTS in
325       the supplied list of View Class instances OBJECTS.
326       SLOTS is t by default which means that all join slots
327       with :retrieval :immediate are updated. CLASS-NAME is
328       used to specify the View Class of all instance in
329       OBJECTS and default to nil which means that the class
330       of the first instance in OBJECTS is used. FORCE-P is t
331       by default which means that all join slots are updated
332       whereas a value of nil means that only unbound join
333       slots are updated. MAX-LEN defaults to
334       *DEFAULT-UPDATE-OBJECTS-MAX-LEN* and when non-nil
335       specifies that UPDATE-OBJECT-JOINS may issue multiple
336       database queries with a maximum of MAX-LEN instances
337       updated in each query.
338       </para>
339     </refsect1>
340     <refsect1>
341       <title>Examples</title>
342       <screen>
343         <!-- examples -->
344       </screen>
345     </refsect1>
346     <refsect1>
347       <title>Side Effects</title>
348       <para>
349         <!-- side effects --> 
350       </para>
351     </refsect1>
352     <refsect1>
353       <title>Affected by</title>
354       <para>
355         <simplelist>
356           <!-- affected by --> 
357         </simplelist>
358       </para>
359     </refsect1>
360     <refsect1>
361       <title>Exceptional Situations</title>
362       <para>
363         <!-- execeptional situations -->
364       </para>
365     </refsect1>
366     <refsect1>
367       <title>See Also</title>
368       <para>
369         <simplelist>
370           <!-- see also --> 
371         </simplelist>
372       </para>
373     </refsect1>
374     <refsect1>
375       <title>Notes</title>
376       <para>
377         <!-- notes --> 
378       </para>
379     </refsect1>
380   </refentry>
381
382   <refentry id="update-record-from-slot">
383     <refnamediv>
384       <refname>UPDATE-RECORD-FROM-SLOT</refname>
385       <refpurpose><!-- purpose --></refpurpose>
386       <refclass>Function</refclass>
387     </refnamediv>
388     <refsect1>
389       <title>Syntax</title>
390       <synopsis>
391       <function> (UPDATE-RECORD-FROM-SLOT OBJECT SLOT &amp;KEY DATABASE) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
392     </refsect1>
393     <refsect1>
394       <title>Arguments and Values</title>
395       <variablelist>
396         <!-- arguments and values --> 
397       </variablelist>
398     </refsect1>
399     <refsect1>
400       <title>Description</title>
401       <para>Updates the value stored in the column represented by
402       the slot, specified by the CLOS slot name SLOT, of View Class
403       instance OBJECT. DATABASE defaults to *DEFAULT-DATABASE* and
404       specifies the database in which the update is made only if
405       OBJECT is not associated with a database. In this case, a
406       record is created in DATABASE and the attribute represented by
407       SLOT is initialised from the value of the supplied slots with
408       other attributes having default values. Furthermore, OBJECT
409       becomes associated with DATABASE.
410       </para>
411     </refsect1>
412     <refsect1>
413       <title>Examples</title>
414       <screen>
415         <!-- examples -->
416       </screen>
417     </refsect1>
418     <refsect1>
419       <title>Side Effects</title>
420       <para>
421         <!-- side effects --> 
422       </para>
423     </refsect1>
424     <refsect1>
425       <title>Affected by</title>
426       <para>
427         <simplelist>
428           <!-- affected by --> 
429         </simplelist>
430       </para>
431     </refsect1>
432     <refsect1>
433       <title>Exceptional Situations</title>
434       <para>
435         <!-- execeptional situations -->
436       </para>
437     </refsect1>
438     <refsect1>
439       <title>See Also</title>
440       <para>
441         <simplelist>
442           <!-- see also --> 
443         </simplelist>
444       </para>
445     </refsect1>
446     <refsect1>
447       <title>Notes</title>
448       <para>
449         <!-- notes --> 
450       </para>
451     </refsect1>
452   </refentry> 
453
454   <refentry id="update-record-from-slots">
455     <refnamediv>
456       <refname>UPDATE-RECORD-FROM-SLOTS</refname>
457       <refpurpose><!-- purpose --></refpurpose>
458       <refclass>Function</refclass>
459     </refnamediv>
460     <refsect1>
461       <title>Syntax</title>
462       <synopsis>
463       <function> (UPDATE-RECORD-FROM-SLOTS OBJECT SLOTS &amp;KEY DATABASE) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
464     </refsect1>
465     <refsect1>
466       <title>Arguments and Values</title>
467       <variablelist>
468         <!-- arguments and values --> 
469       </variablelist>
470     </refsect1>
471     <refsect1>
472       <title>Description</title>
473       <para>Updates the values stored in the columns represented by
474       the slots, specified by the CLOS slot names SLOTS, of View
475       Class instance OBJECT. DATABASE defaults to *DEFAULT-DATABASE*
476       and specifies the database in which the update is made only if
477       OBJECT is not associated with a database. In this case, a
478       record is created in the appropriate table of DATABASE and the
479       attributes represented by SLOTS are initialised from the
480       values of the supplied slots with other attributes having
481       default values. Furthermore, OBJECT becomes associated with
482       DATABASE.
483       </para>
484     </refsect1>
485     <refsect1>
486       <title>Examples</title>
487       <screen>
488         <!-- examples -->
489       </screen>
490     </refsect1>
491     <refsect1>
492       <title>Side Effects</title>
493       <para>
494         <!-- side effects --> 
495       </para>
496     </refsect1>
497     <refsect1>
498       <title>Affected by</title>
499       <para>
500         <simplelist>
501           <!-- affected by --> 
502         </simplelist>
503       </para>
504     </refsect1>
505     <refsect1>
506       <title>Exceptional Situations</title>
507       <para>
508         <!-- execeptional situations -->
509       </para>
510     </refsect1>
511     <refsect1>
512       <title>See Also</title>
513       <para>
514         <simplelist>
515           <!-- see also --> 
516         </simplelist>
517       </para>
518     </refsect1>
519     <refsect1>
520       <title>Notes</title>
521       <para>
522         <!-- notes --> 
523       </para>
524     </refsect1>
525   </refentry> 
526
527
528   <refentry id="update-records-from-instance">
529     <refnamediv>
530       <refname>UPDATE-RECORDS-FROM-INSTANCE</refname>
531       <refpurpose><!-- purpose --></refpurpose>
532       <refclass>Function</refclass>
533     </refnamediv>
534     <refsect1>
535       <title>Syntax</title>
536       <synopsis>
537       <function> (UPDATE-RECORDS-FROM-INSTANCE OBJECT &amp;KEY DATABASE) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
538     </refsect1>
539     <refsect1>
540       <title>Arguments and Values</title>
541       <variablelist>
542         <!-- arguments and values --> 
543       </variablelist>
544     </refsect1>
545     <refsect1>
546       <title>Description</title>
547       <para>Using an instance of a View Class, OBJECT, update the
548       table that stores its instance data. DATABASE defaults to
549       *DEFAULT-DATABASE* and specifies the database in which the
550       update is made only if OBJECT is not associated with a
551       database. In this case, a record is created in the appropriate
552       table of DATABASE using values from the slot values of OBJECT,
553       and OBJECT becomes associated with DATABASE.
554       </para>
555     </refsect1>
556     <refsect1>
557       <title>Examples</title>
558       <screen>
559         <!-- examples -->
560       </screen>
561     </refsect1>
562     <refsect1>
563       <title>Side Effects</title>
564       <para>
565         <!-- side effects --> 
566       </para>
567     </refsect1>
568     <refsect1>
569       <title>Affected by</title>
570       <para>
571         <simplelist>
572           <!-- affected by --> 
573         </simplelist>
574       </para>
575     </refsect1>
576     <refsect1>
577       <title>Exceptional Situations</title>
578       <para>
579         <!-- execeptional situations -->
580       </para>
581     </refsect1>
582     <refsect1>
583       <title>See Also</title>
584       <para>
585         <simplelist>
586           <!-- see also --> 
587         </simplelist>
588       </para>
589     </refsect1>
590     <refsect1>
591       <title>Notes</title>
592       <para>
593         <!-- notes --> 
594       </para>
595     </refsect1>
596   </refentry> 
597
598   <refentry id="update-slot-from-record">
599     <refnamediv>
600       <refname>UPDATE-SLOT-FROM-RECORD</refname>
601       <refpurpose><!-- purpose --></refpurpose>
602       <refclass>Function</refclass>
603     </refnamediv>
604     <refsect1>
605       <title>Syntax</title>
606       <synopsis>
607       <function> (UPDATE-SLOT-FROM-RECORD OBJECT SLOT &amp;KEY DATABASE) [generic]</function> => <returnvalue><!-- result --></returnvalue></synopsis>
608     </refsect1>
609     <refsect1>
610       <title>Arguments and Values</title>
611       <variablelist>
612         <!-- arguments and values --> 
613       </variablelist>
614     </refsect1>
615     <refsect1>
616       <title>Description</title>
617       <para>Updates the slot value, specified by the CLOS slot name
618       SLOT, of the View Class instance OBJECT using the attribute
619       values of the appropriate table of DATABASE which defaults to
620       the database associated with OBJECT or, if OBJECT is not
621       associated with a database, *DEFAULT-DATABASE*.  Join slots
622       are updated but instances of the class on which the join is
623       made are not updated.
624       </para>
625     </refsect1>
626     <refsect1>
627       <title>Examples</title>
628       <screen>
629         <!-- examples -->
630       </screen>
631     </refsect1>
632     <refsect1>
633       <title>Side Effects</title>
634       <para>
635         <!-- side effects --> 
636       </para>
637     </refsect1>
638     <refsect1>
639       <title>Affected by</title>
640       <para>
641         <simplelist>
642           <!-- affected by --> 
643         </simplelist>
644       </para>
645     </refsect1>
646     <refsect1>
647       <title>Exceptional Situations</title>
648       <para>
649         <!-- execeptional situations -->
650       </para>
651     </refsect1>
652     <refsect1>
653       <title>See Also</title>
654       <para>
655         <simplelist>
656           <!-- see also --> 
657         </simplelist>
658       </para>
659     </refsect1>
660     <refsect1>
661       <title>Notes</title>
662       <para>
663         <!-- notes --> 
664       </para>
665     </refsect1>
666   </refentry> 
667
668 </reference>