(SEMANTIC CHANGE) update-objects-joins now simpler and more predicatble
[clsql.git] / doc / ref-oodml.xml
index 094db326e23ce83d2140144294fd81326f03b30f..8a3423557fed74a5162c78cc8cdbccd7db1d6d41 100644 (file)
     </refsect1>
   </refentry>
 
+  <refentry id="default-caching">
+    <refnamediv>
+      <refname>*DEFAULT-CACHING*</refname>
+      <refpurpose>Controls the default caching behavior.</refpurpose>
+      <refclass>Variable</refclass>
+    </refnamediv>
+    <refsect1>
+      <title>Value Type</title>
+      <para>
+       Boolean
+      </para> 
+    </refsect1>
+    <refsect1>
+      <title>Initial Value</title>
+      <para>&t;</para>
+    </refsect1>
+    <refsect1>
+      <title>Description</title> 
+      <para>
+       This variable stores the default value of the
+       <varname>CACHING</varname> keyword for the <link
+       linkend="select"><function>select</function></link>.
+      </para> 
+    </refsect1>
+    <refsect1>
+      <title>Examples</title>
+      <screen>
+       (let ((*default-caching* nil)))
+         (select 'foo))
+
+       ;; is equivalent to
+
+       (select 'foo :caching nil)
+      </screen>
+    </refsect1>
+    <refsect1>
+      <title>Affected By</title>
+      <para>None.</para>
+    </refsect1>
+    <refsect1>
+      <title>See Also</title>
+      <simplelist>
+        <member><link linkend="select"><function>select</function></link></member>
+      </simplelist>
+    </refsect1>
+    <refsect1>
+      <title>Notes</title> <para>This is a CLSQL extension to the
+      &commonsql; API. &commonsql; has caching on at all times.</para>
+    </refsect1>
+  </refentry>
+
   <refentry id="default-update-objects-max-len">
     <refnamediv>
       <refname>*DEFAULT-UPDATE-OBJECTS-MAX-LEN*</refname>
 (slot-value (car *) 'email)
 => "lenin@soviet.org"
 (select 'employee :where [= [slot-value 'employee 'emplid] 1] :flatp t :refresh t)
-Details for Vladamir Lenin have been updated from the database.
+Details for Vladimir Lenin have been updated from the database.
 => (#&lt;EMPLOYEE {48149995}>)
 (slot-value (car *) 'email)
 => "v.lenin@soviet.org"
@@ -921,9 +972,11 @@ Details for Vladamir Lenin have been updated from the database.
        <varlistentry>
          <term><parameter>slots</parameter></term>
          <listitem>
-           <para>
-              A list of slot names in <parameter>object</parameter> or &t;. 
-            </para>
+           <para>* :immediate (default) - refresh join slots with :retrieval :immediate</para>
+            <para>* :deferred - refresh join slots created with :retrieval :deferred</para>
+            <para>* :all,t - refresh all join slots regardless of :retrieval</para>
+            <para>* list of symbols - which explicit slots to refresh</para>
+            <para>* a single symobl - what slot to refresh</para>
          </listitem>
        </varlistentry>
        <varlistentry>
@@ -949,6 +1002,9 @@ Details for Vladamir Lenin have been updated from the database.
            <para>
               A non-negative integer or &nil; defaulting to
               <symbol>*default-update-objects-max-len*</symbol>.
+              When non-nil this is essentially a batch size for the max number of objects
+              to query from the database at a time.  If we need more than max-len
+              we loop till we have all the objects
            </para>
          </listitem>
        </varlistentry>
@@ -956,25 +1012,15 @@ Details for Vladamir Lenin have been updated from the database.
     </refsect1>
     <refsect1>
       <title>Description</title>
-      <para>Updates from the records of the appropriate database
-      tables the join slots specified by <parameter>slots</parameter>
-      in the supplied list of <glossterm linkend="gloss-view-class">View
-      Class</glossterm> instances
-      <parameter>objects</parameter>. <parameter>slots</parameter>
-      when &t; means that all join slots with
-      <symbol>:retrieval</symbol> <symbol>:immediate</symbol> are
-      updated. <parameter>class-name</parameter> is used to specify
-      the <glossterm linkend="gloss-view-class">View Class</glossterm> of
-      all instance in <parameter>objects</parameter>, when &nil; then
-      the class of the first instance in
-      <parameter>objects</parameter> is
-      used. <parameter>force-p</parameter> when &t; means that all
-      join slots are updated whereas a value of &nil; means that only
-      unbound join slots are updated. <parameter>max-len</parameter>
-      when non-nil specifies that
-      <function>update-object-joins</function> may issue multiple
-      database queries with a maximum of
-      <parameter>max-len</parameter> instances updated in each query.
+      <para>
+        Updates from the records of the appropriate database tables the join slots
+        specified by SLOTS in the supplied list of 
+        <glossterm linkend="gloss-view-class">View Class</glossterm> instances OBJECTS.
+        
+        A simpler method of causing a join-slot to be requeried is to set it to
+        unbound, then request it again.  This function has efficiency gains where
+        join-objects are shared among the `objects` (querying all join-objects,
+        then attaching them appropriately to each of the `objects`)
       </para>
     </refsect1>
     <refsect1>