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 <!-- Object Oriented Data Manipulation Language -->
9 <reference id="ref-oodml">
10 <title>Object Oriented Data Manipulation Language (OODML)</title>
13 Object Oriented Data Manipulation Language (OODML) provides a
14 Common Lisp Object System (CLOS) interface to SQL
15 databases. View classes are defined with the <link
16 linkend="ref-ooddl">OODDL</link> interface and objects are read
17 and written with the OODML.
20 The main function for reading data with the OODML is the <link
21 linkend="select"><function>select</function></link>
22 function. The <function>select</function> is also used in the
23 FDML. However, when <function>select</function> is given a view
24 class name, it returns a list of instances of view classes.
27 View class instances can be updated to reflect any changes in
28 the database with the functions <link
29 linkend="update-slot-from-record"><function>update-slot-from-record</function></link>
31 linkend="update-instance-from-records"><function>update-instance-from-records</function></link>.
33 <para>To update the database to reflect changes made to instances of view classes, use the functions <link
34 linkend="update-records-from-instance"><function>update-records-from-instance</function></link>,
36 linkend="update-record-from-slot"><function>update-record-from-slot</function></link>, and
38 linkend="update-record-from-slots"><function>update-record-from-slots</function></link>.
42 linkend="delete-instance-records"><function>delete-instance-records</function></link>
43 deletes the records corresponding to an instance of a view
48 <refentry id="db-auto-sync">
50 <refname>*DB-AUTO-SYNC*</refname>
51 <refpurpose>Enables SQL storage during Lisp object creation.</refpurpose>
52 <refclass>Variable</refclass>
55 <title>Value Type</title>
61 <title>Initial Value</title>
65 <title>Description</title>
67 When this variable is &t; an instance is stored in the SQL
68 database when the instance is created by
69 <function>make-instance</function>. Furthermore, the
70 appropriate database records are updated whenever the slots of
71 a <glossterm linkend="gloss-view-class">View Class</glossterm>
72 instance are modified.
75 When this variable is &nil;, which is the default value,
76 &clsql; behaves like &commonsql;: instances of view classes
77 are stored or updated in the SQL database only when <link
78 linkend="update-records-from-instance"><function>update-record-from-instance</function></link>,
80 linkend="update-record-from-slot"><function>update-record-from-slot</function></link>
82 linkend="update-record-from-slots"><function>update-record-from-slots</function></link>
87 <title>Examples</title>
89 (let ((instance (make-instance 'foo)))
90 (update-records-from-instance instance))
94 (let ((*db-auto-sync* t))
100 (setf (slot-value instance 'bar) "baz")
101 (update-record-from-slot instance 'bar))
105 (let ((*db-auto-sync* t))
106 (setf (slot-value instance 'bar) "baz"))
110 <title>Affected By</title>
114 <title>See Also</title>
116 <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
117 <member><link linkend="update-record-from-slot"><function>update-record-from-slot</function></link></member>
118 <member><link linkend="update-record-from-slots"><function>update-record-from-slots</function></link></member>
123 <para>This is a CLSQL extension to the CommonSQL API.</para>
127 <refentry id="default-caching">
129 <refname>*DEFAULT-CACHING*</refname>
130 <refpurpose>Controls the default caching behavior.</refpurpose>
131 <refclass>Variable</refclass>
134 <title>Value Type</title>
140 <title>Initial Value</title>
144 <title>Description</title>
146 This variable stores the default value of the
147 <varname>CACHING</varname> keyword for the <link
148 linkend="select"><function>select</function></link>.
152 <title>Examples</title>
154 (let ((*default-caching* nil)))
159 (select 'foo :caching nil)
163 <title>Affected By</title>
167 <title>See Also</title>
169 <member><link linkend="select"><function>select</function></link></member>
173 <title>Notes</title> <para>This is a CLSQL extension to the
174 &commonsql; API. &commonsql; has caching on at all times.</para>
178 <refentry id="default-update-objects-max-len">
180 <refname>*DEFAULT-UPDATE-OBJECTS-MAX-LEN*</refname>
181 <refpurpose>The default maximum number of objects each query to perform a join</refpurpose>
182 <refclass>Variable</refclass>
185 <title>Value Type</title>
191 <title>Initial Value</title>
195 <title>Description</title>
197 This special variable provides the default value for the
198 <parameter>max-len</parameter> argument of the function <link
199 linkend="update-objects-joins"><function>update-object-joins</function></link>.
203 <title>Examples</title>
205 (setq *default-update-objects-max-len* 100)
209 <title>Affected By</title>
213 <title>See Also</title>
215 <member><link linkend="update-objects-joins"><function>update-object-joins</function></link></member>
224 <refentry id="instance-refreshed">
226 <refname>INSTANCE-REFRESHED</refname>
227 <refpurpose>User hook to call on object refresh.</refpurpose>
228 <refclass>Generic function</refclass>
231 <title>Syntax</title>
233 <function>instance-refreshed</function> <replaceable>object</replaceable> => <returnvalue><!-- no result --></returnvalue></synopsis>
236 <title>Arguments and Values</title>
239 <term><parameter>object</parameter></term>
242 The <glossterm linkend="gloss-view-class">View Class</glossterm> object which is being refreshed.
249 <title>Description</title>
250 <para>Provides a hook which is called within an object oriented
251 call to <function>select</function> with a non-nil value of
252 <parameter>refresh</parameter> when the <glossterm
253 linkend="gloss-view-class">View Class</glossterm> instance
254 <parameter>object</parameter> has been updated from the
255 database. A method specialised on
256 <type>standard-db-object</type> is provided which has no
257 effects. Methods specialised on particular View Classes can be
258 used to specify any operations that need to be made on View
259 Classes instances which have been updated in calls to
260 <function>select</function>.
264 <title>Examples</title>
266 (slot-value employee1 'email)
267 => "lenin@soviet.org"
268 (defmethod instance-refreshed ((e employee))
269 (format t "~&Details for ~A ~A have been updated from the database."
270 (slot-value e 'first-name)
271 (slot-value e 'last-name)))
272 => #<Standard-Method INSTANCE-REFRESHED (EMPLOYEE) {48174D9D}>
273 (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)
274 => (#<EMPLOYEE {48149995}>)
275 (slot-value (car *) 'email)
276 => "lenin@soviet.org"
277 (update-records [employee] :av-pairs '(([email] "v.lenin@soviet.org"))
278 :where [= [emplid] 1])
280 (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)
281 => (#<EMPLOYEE {48149995}>)
282 (slot-value (car *) 'email)
283 => "lenin@soviet.org"
284 (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t :refresh t)
285 Details for Vladimir Lenin have been updated from the database.
286 => (#<EMPLOYEE {48149995}>)
287 (slot-value (car *) 'email)
288 => "v.lenin@soviet.org"
292 <title>Side Effects</title>
294 The user hook function may cause side effects.
298 <title>Exceptional Situations</title>
304 <title>See Also</title>
307 <member><link linkend="select"><function>select</function></link></member>
319 <refentry id="delete-instance-records">
321 <refname>DELETE-INSTANCE-RECORDS</refname>
322 <refpurpose>Delete SQL records represented by a <glossterm linkend="gloss-view-class">View Class</glossterm>
324 <refclass>Function</refclass>
327 <title>Syntax</title>
329 <function>delete-instance-records</function> <replaceable>object</replaceable> => <returnvalue><!-- no result --></returnvalue></synopsis>
332 <title>Arguments and Values</title>
335 <term><parameter>object</parameter></term>
338 An instance of a <glossterm linkend="gloss-view-class">View
346 <title>Description</title>
347 <para>Deletes the records represented by
348 <parameter>object</parameter> in the appropriate table of the
349 database associated with <parameter>object</parameter>. If
350 <parameter>object</parameter> is not yet associated with a
351 database, an error is signalled.
355 <title>Examples</title>
357 (def-view-class tab ()
358 ((a :initarg :a :type integer :db-kind :key)
359 (b :initarg :b :type string)))
360 => #<Standard-Db-Class TAB {49B01845}>
361 (create-view-from-class 'tab)
363 (defvar obj (let ((*db-auto-sync* t))
364 (make-instance 'tab :a 5 :b "the string")))
366 (start-sql-recording :type :both)
368 (delete-instance-records obj)
369 ;; 2004-07-17 11:07:19 foo/bar/baz => DELETE FROM tab WHERE tab.a = 5
370 ;; 2004-07-17 11:07:19 foo/bar/baz <= T
375 <title>Side Effects</title>
377 Deletes data from the SQL database.
381 <title>Affected by</title>
383 Permissions granted by the SQL database to the user in the
388 <title>Exceptional Situations</title>
390 An exception may be signaled if the database connection user
391 does not have sufficient privileges to modify the database. An
392 error of type <type>sql-database-error</type> is signalled if
393 <replaceable>object</replaceable> is not associated with an
398 <title>See Also</title>
400 <member><link linkend="update-records"><function>update-records</function></link></member>
401 <member><link linkend="delete-records"><function>delete-records</function></link></member>
402 <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
408 Instances are referenced in the database by values stored in
410 <function>delete-records-from-instance</function> is called
411 with an instance of a class that does not contain any keys,
412 then all records in that table will be deleted.
417 <refentry id="update-records-from-instance">
419 <refname>UPDATE-RECORDS-FROM-INSTANCE</refname>
420 <refpurpose>Update database from view class object.</refpurpose>
421 <refclass>Function</refclass>
424 <title>Syntax</title>
426 <function>update-records-from-instance</function> <replaceable>object</replaceable> &key <replaceable>database</replaceable> => <returnvalue><!-- no result --></returnvalue></synopsis>
429 <title>Arguments and Values</title>
432 <term><parameter>object</parameter></term>
435 An instance of a <glossterm linkend="gloss-view-class">View
441 <term><parameter>database</parameter></term>
444 <glossterm linkend="gloss-database-object">database
445 object</glossterm>. This will default to the value of
446 <symbol>*default-database*</symbol>.
453 <title>Description</title>
454 <para>Using an instance of a <glossterm
455 linkend="gloss-view-class">View Class</glossterm>,
456 <parameter>object</parameter>, update the table that stores its
457 instance data. <parameter>database</parameter> specifies the
458 database in which the update is made only if
459 <parameter>object</parameter> is not associated with a
460 database. In this case, a record is created in the appropriate
461 table of <parameter>database</parameter> using values from the
462 slot values of <parameter>object</parameter>, and
463 <parameter>object</parameter> becomes associated with
464 <parameter>database</parameter>.
468 <title>Examples</title>
470 (select [email] :from [employee] :where [= [emplid] 1] :field-names nil :flatp t)
471 => ("lenin@soviet.org")
472 (defvar *e1* (car (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)))
474 (slot-value *e1* 'email)
475 => "lenin@soviet.org"
476 (setf (slot-value *e1* 'email) "v.lenin@soviet.org")
477 => "v.lenin@soviet.org"
478 (update-records-from-instance *e1*)
480 (select [email] :from [employee] :where [= [emplid] 1] :field-names nil :flatp t)
481 => ("v.lenin@soviet.org")
485 <title>Side Effects</title>
487 Modifies the database.
491 <title>Affected by</title>
497 <title>Exceptional Situations</title>
503 <title>See Also</title>
505 <member><link linkend="update-record-from-slot"><function>update-record-from-slot</function></link></member>
506 <member><link linkend="update-record-from-slots"><function>update-record-from-slots</function></link></member>
507 <member><link linkend="update-records"><function>update-records</function></link></member>
518 <refentry id="update-record-from-slot">
520 <refname>UPDATE-RECORD-FROM-SLOT</refname>
521 <refpurpose>Updates database from slot value.</refpurpose>
522 <refclass>Function</refclass>
525 <title>Syntax</title>
527 <function>update-record-from-slot</function> <replaceable>object</replaceable> <replaceable>slot</replaceable> &key <replaceable>database</replaceable> => <returnvalue><!-- no result --></returnvalue></synopsis>
530 <title>Arguments and Values</title>
533 <term><parameter>object</parameter></term>
536 An instance of a <glossterm linkend="gloss-view-class">View Class</glossterm>.
541 <term><parameter>slot</parameter></term>
544 The name of a slot in <parameter>object</parameter>.
549 <term><parameter>database</parameter></term>
552 A <glossterm linkend="gloss-database-object">database
553 object</glossterm>. This will default to the value of
554 <symbol>*default-database*</symbol>.
561 <title>Description</title>
562 <para>Updates the value stored in the column represented by the
563 slot, specified by the CLOS slot name
564 <parameter>slot</parameter>, of <glossterm linkend="gloss-view-class">View Class</glossterm> instance
565 <parameter>object</parameter>. <parameter>database</parameter>
566 specifies the database in which the update is made only if
567 <parameter>object</parameter> is not associated with a
568 database. In this case, a record is created in
569 <parameter>database</parameter> and the attribute represented by
570 <parameter>slot</parameter> is initialised from the value of the
571 supplied slots with other attributes having default
572 values. Furthermore, <parameter>object</parameter> becomes
573 associated with <parameter>database</parameter>.
577 <title>Examples</title>
579 (select [email] :from [employee] :where [= [emplid] 1] :field-names nil :flatp t)
580 => ("lenin@soviet.org")
581 (defvar *e1* (car (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)))
583 (slot-value *e1* 'email)
584 => "lenin@soviet.org"
585 (setf (slot-value *e1* 'email) "v.lenin@soviet.org")
586 => "v.lenin@soviet.org"
587 (update-record-from-slot *e1* 'email)
589 (select [email] :from [employee] :where [= [emplid] 1] :field-names nil :flatp t)
590 => ("v.lenin@soviet.org")
594 <title>Side Effects</title>
600 <title>Affected By</title>
606 <title>Exceptional Situations</title>
612 <title>See Also</title>
614 <member><link linkend="update-record-from-slots"><function>update-record-from-slots</function></link></member>
615 <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
626 <refentry id="update-record-from-slots">
628 <refname>UPDATE-RECORD-FROM-SLOTS</refname>
629 <refpurpose>Update database from slots of view class object.</refpurpose>
630 <refclass>function</refclass>
633 <title>syntax</title>
635 <function>update-record-from-slots</function> <replaceable>object</replaceable> <replaceable>slots</replaceable> &key <replaceable>database</replaceable> => <returnvalue><!-- no result --></returnvalue></synopsis>
638 <title>Arguments and Values</title>
641 <term><parameter>object</parameter></term>
644 An instance of a <glossterm linkend="gloss-view-class">View Class</glossterm>.
649 <term><parameter>slots</parameter></term>
652 A list of slot names in <parameter>object</parameter>.
657 <term><parameter>database</parameter></term>
660 A <glossterm linkend="gloss-database-object">database
661 object</glossterm>. This will default to the value of
662 <symbol>*default-database*</symbol>.
669 <title>Description</title>
670 <para>Updates the values stored in the columns represented by
671 the slots, specified by the clos slot names
672 <parameter>slots</parameter>, of <glossterm linkend="gloss-view-class">View Class</glossterm> instance
673 <parameter>object</parameter>. <parameter>database</parameter>
674 specifies the database in which the update is made only if
675 <parameter>object</parameter> is not associated with a
676 database. In this case, a record is created in the appropriate
677 table of <parameter>database</parameter> and the attributes
678 represented by <parameter>slots</parameter> are initialised from
679 the values of the supplied slots with other attributes having
680 default values. Furthermore, <parameter>object</parameter>
681 becomes associated with <parameter>database</parameter>.
685 <title>Examples</title>
687 (select [last-name] [email] :from [employee] :where [= [emplid] 1] :field-names nil)
688 => (("Lenin" "lenin@soviet.org"))
689 (defvar *e1* (car (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)))
691 (slot-value *e1* 'last-name)
693 (slot-value *e1* 'email)
694 => "lenin@soviet.org"
695 (setf (slot-value *e1* 'last-name) "Ivanovich")
697 (setf (slot-value *e1* 'email) "v.ivanovich@soviet.org")
698 => "v.ivanovich@soviet.org"
699 (update-record-from-slots *e1* '(email last-name))
701 (select [last-name] [email] :from [employee] :where [= [emplid] 1] :field-names nil)
702 => (("Ivanovich" "v.ivanovich@soviet.org"))
706 <title>Side Effects</title>
708 Modifies the SQL database.
712 <title>Affected by</title>
718 <title>Exceptional Situations</title>
724 <title>See Also</title>
727 <member><link linkend="update-record-from-slot"><function>update-record-from-slot</function></link></member>
728 <member><link linkend="update-records-from-instance"><function>update-records-from-instance</function></link></member>
740 <refentry id="update-instance-from-records">
742 <refname>UPDATE-INSTANCE-FROM-RECORDS</refname>
743 <refpurpose>Update slot values from database.</refpurpose>
744 <refclass>Function</refclass>
747 <title>Syntax</title>
749 <function>update-instance-from-records</function> <replaceable>object</replaceable> &key <replaceable>database</replaceable> => <returnvalue>object</returnvalue></synopsis>
752 <title>Arguments and Values</title>
755 <term><parameter>object</parameter></term>
758 An instance of a <glossterm linkend="gloss-view-class">View Class</glossterm>.
763 <term><parameter>database</parameter></term>
766 A <glossterm linkend="gloss-database-object">database
767 object</glossterm>. This will default to the value of
768 <symbol>*default-database*</symbol>.
775 <title>Description</title>
776 <para>Updates the slot values of the <glossterm
777 linkend="gloss-view-class">View Class</glossterm> instance
778 <parameter>object</parameter> using the attribute values of the
779 appropriate table of <parameter>database</parameter> which
780 defaults to the database associated with
781 <parameter>object</parameter> or, if
782 <parameter>object</parameter> is not associated with a database,
783 <varname>*default-database*</varname>. Join slots are updated
784 but instances of the class on which the join is made are not
789 <title>Examples</title>
791 (defvar *e1* (car (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)))
793 (slot-value *e1* 'email)
794 => "lenin@soviet.org"
795 (update-records [employee]
796 :av-pairs '(([email] "v.lenin@soviet.org"))
797 :where [= [emplid] 1])
799 (update-instance-from-records *e1*)
800 => #<EMPLOYEE {4806B53D}>
801 (slot-value *e1* 'email)
802 => "v.lenin@soviet.org"
806 <title>Side Effects</title>
808 Slot values of <parameter>object</parameter> may be modified.
812 <title>Affected by</title>
815 <member>Data in SQL database.</member>
820 <title>Exceptional Situations</title>
822 If <parameter>database</parameter> is not able to be read.
826 <title>See Also</title>
828 <member><link linkend="update-slot-from-record"><function>update-slot-from-record</function></link></member>
829 <member><link linkend="update-objects-joins"><function>update-objects-joins</function></link></member>
840 <refentry id="update-slot-from-record">
842 <refname>UPDATE-SLOT-FROM-RECORD</refname>
843 <refpurpose>Update objects slot from database.</refpurpose>
844 <refclass>Function</refclass>
847 <title>Syntax</title>
849 <function>update-slot-from-record</function> <replaceable>object</replaceable> <replaceable>slot</replaceable> &key <replaceable>database</replaceable> => <returnvalue>object</returnvalue></synopsis>
852 <title>Arguments and Values</title>
855 <term><parameter>object</parameter></term>
858 An instance of a <glossterm linkend="gloss-view-class">View Class</glossterm>.
863 <term><parameter>slot</parameter></term>
866 The name of a slot in <parameter>object</parameter>.
871 <term><parameter>database</parameter></term>
874 A <glossterm linkend="gloss-database-object">database
875 object</glossterm>. This will default to the value of
876 <symbol>*default-database*</symbol>.
883 <title>Description</title>
884 <para>Updates the slot value, specified by the CLOS slot name
885 <parameter>slot</parameter>, of the <glossterm
886 linkend="gloss-view-class">View Class</glossterm> instance
887 <parameter>object</parameter> using the attribute values of the
888 appropriate table of <parameter>database</parameter> which
889 defaults to the database associated with
890 <parameter>object</parameter> or, if
891 <parameter>object</parameter> is not associated with a database,
892 <varname>*default-database*</varname>. Join slots are updated
893 but instances of the class on which the join is made are not
898 <title>Examples</title>
900 (defvar *e1* (car (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t)))
902 (slot-value *e1* 'email)
903 => "lenin@soviet.org"
904 (update-records [employee]
905 :av-pairs '(([email] "v.lenin@soviet.org"))
906 :where [= [emplid] 1])
908 (update-slot-from-record *e1* 'email)
909 => #<EMPLOYEE {4806B53D}>
910 (slot-value *e1* 'email)
911 => "v.lenin@soviet.org"
915 <title>Side Effects</title>
917 Modifies the slot value of the object.
921 <title>Affected by</title>
924 <member>Data in SQL database.</member>
929 <title>Exceptional Situations</title>
935 <title>See Also</title>
937 <member><link linkend="update-instance-from-records"><function>update-instance-from-records</function></link></member>
938 <member><link linkend="update-objects-joins"><function>update-objects-joins</function></link></member>
949 <refentry id="update-objects-joins">
951 <refname>UPDATE-OBJECTS-JOINS</refname>
952 <refpurpose>Updates joined slots of objects.</refpurpose>
953 <refclass>Function</refclass>
956 <title>Syntax</title>
958 <function>update-objects-joins</function> <replaceable>objects</replaceable> &key <replaceable>slots</replaceable> <replaceable>force-p</replaceable> <replaceable>class-name</replaceable> <replaceable>max-len</replaceable> => <returnvalue><!-- no result --></returnvalue></synopsis>
961 <title>Arguments and Values</title>
964 <term><parameter>objects</parameter></term>
967 A list of instances of a <glossterm
968 linkend="gloss-view-class">View Class</glossterm>.
973 <term><parameter>slots</parameter></term>
975 <para>* :immediate (default) - refresh join slots with :retrieval :immediate</para>
976 <para>* :deferred - refresh join slots created with :retrieval :deferred</para>
977 <para>* :all,t - refresh all join slots regardless of :retrieval</para>
978 <para>* list of symbols - which explicit slots to refresh</para>
979 <para>* a single symobl - what slot to refresh</para>
983 <term><parameter>force-p</parameter></term>
986 A Boolean, defaulting to &t;.
991 <term><parameter>class-name</parameter></term>
994 A list of instances of a <glossterm
995 linkend="gloss-view-class">View Class</glossterm>.
1000 <term><parameter>max-len</parameter></term>
1003 A non-negative integer or &nil; defaulting to
1004 <symbol>*default-update-objects-max-len*</symbol>.
1005 When non-nil this is essentially a batch size for the max number of objects
1006 to query from the database at a time. If we need more than max-len
1007 we loop till we have all the objects
1014 <title>Description</title>
1016 Updates from the records of the appropriate database tables the join slots
1017 specified by SLOTS in the supplied list of
1018 <glossterm linkend="gloss-view-class">View Class</glossterm> instances OBJECTS.
1020 A simpler method of causing a join-slot to be requeried is to set it to
1021 unbound, then request it again. This function has efficiency gains where
1022 join-objects are shared among the `objects` (querying all join-objects,
1023 then attaching them appropriately to each of the `objects`)
1027 <title>Examples</title>
1029 (defvar *addresses* (select 'deferred-employee-address :order-by [ea_join aaddressid] :flatp t))
1031 (slot-boundp (car *addresses*) 'address)
1033 (update-objects-joins *addresses*)
1035 (slot-boundp (car *addresses*) 'address)
1037 (slot-value (car *addresses*) 'address)
1038 => #<ADDRESS {480B0F1D}>
1042 <title>Side Effects</title>
1044 The slot values of <parameter>objects</parameter> are modified.
1048 <title>Affected by</title>
1052 linkend="default-update-objects-max-len"><varname>*default-update-objects-max-len*</varname></link></member>
1057 <title>Exceptional Situations</title>
1063 <title>See Also</title>
1065 <member><link linkend="default-update-objects-max-len"><varname>*default-update-objects-max-len*</varname></link></member>
1066 <member><link linkend="update-instance-from-records"><function>update-instance-from-records</function></link></member>
1067 <member><link linkend="update-slot-from-record"><function>update-slot-from-record</function></link></member>
1071 <title>Notes</title>