List:Commits« Previous MessageNext Message »
From:paul Date:January 12 2006 9:21pm
Subject:svn commit - mysqldoc@docsrva: r783 - in trunk: . refman-4.1 refman-5.0 refman-5.1
View as plain text  
Author: paul
Date: 2006-01-12 22:21:19 +0100 (Thu, 12 Jan 2006)
New Revision: 783

Log:
 r6128@frost:  paul | 2006-01-12 15:21:05 -0600
 General revisions.


Modified:
   trunk/
   trunk/refman-4.1/storage-engines.xml
   trunk/refman-5.0/storage-engines.xml
   trunk/refman-5.1/storage-engines.xml


Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - b5ec3a16-e900-0410-9ad2-d183a3acac99:/mysqldoc-local/mysqldoc/trunk:6125
bf112a9c-6c03-0410-a055-ad865cd57414:/mysqldoc-local/mysqldoc/trunk:2101
   + b5ec3a16-e900-0410-9ad2-d183a3acac99:/mysqldoc-local/mysqldoc/trunk:6128
bf112a9c-6c03-0410-a055-ad865cd57414:/mysqldoc-local/mysqldoc/trunk:2101

Modified: trunk/refman-4.1/storage-engines.xml
===================================================================
--- trunk/refman-4.1/storage-engines.xml	2006-01-12 20:22:51 UTC (rev 782)
+++ trunk/refman-4.1/storage-engines.xml	2006-01-12 21:21:19 UTC (rev 783)
@@ -304,11 +304,6 @@
     place and not that helpful.
   </remark>
 
-  <remark role="todo">
-    This behavior now may be "using the default storage engine" rather
-    than "using MyISAM", but when did that change?
-  </remark>
-
   <para>
     If you try to use a storage engine that is not compiled in or that
     is compiled in but deactivated, MySQL instead creates a table using
@@ -1006,20 +1001,21 @@
         <para>
           Static format is the default for <literal>MyISAM</literal>
           tables. It is used when the table contains no variable-length
-          columns (<literal>VARCHAR</literal>, <literal>BLOB</literal>,
-          or <literal>TEXT</literal>). Each row is stored using a fixed
+          columns (<literal>VARCHAR</literal>,
+          <literal>VARBINARY</literal>, <literal>BLOB</literal>, or
+          <literal>TEXT</literal>). Each row is stored using a fixed
           number of bytes.
         </para>
 
         <para>
           Of the three <literal>MyISAM</literal> storage formats, static
           format is the simplest and most secure (least subject to
-          corruption). It is also the fastest of the on-disk formats.
-          The speed comes from the easy way that rows in the data file
-          can be found on disk: When looking up a row based on a row
-          number in the index, multiply the row number by the row
-          length. Also, when scanning a table, it is very easy to read a
-          constant number of rows with each disk read operation.
+          corruption). It is also the fastest of the on-disk formats due
+          to the ease with which rows in the data file can be found on
+          disk: To look up a row based on a row number in the index,
+          multiply the row number by the row length to calculate the row
+          position. Also, when scanning a table, it is very easy to read
+          a constant number of rows with each disk read operation.
         </para>
 
         <para>
@@ -1078,7 +1074,7 @@
 
           <listitem>
             <para>
-              Usually require more disk space than for dynamic-format
+              Usually require more disk space than dynamic-format
               tables.
             </para>
           </listitem>
@@ -1103,16 +1099,17 @@
         <para>
           Dynamic storage format is used if a <literal>MyISAM</literal>
           table contains any variable-length columns
-          (<literal>VARCHAR</literal>, <literal>BLOB</literal>, or
-          <literal>TEXT</literal>), or if the table was created with the
-          <literal>ROW_FORMAT=DYNAMIC</literal> option.
+          (<literal>VARCHAR</literal>, <literal>VARBINARY</literal>,
+          <literal>BLOB</literal>, or <literal>TEXT</literal>), or if
+          the table was created with the
+          <literal>ROW_FORMAT=DYNAMIC</literal> table option.
         </para>
 
         <para>
-          This format is a little more complex because each row has a
-          header that indicates how long it is. One row can also end up
-          at more than one location when it is made longer as a result
-          of an update.
+          Dynamic format is a little more complex than static format
+          because each row has a header that indicates how long it is. A
+          row can become fragmented (stored in non-contiguous pieces)
+          when it is made longer as a result of an update.
         </para>
 
         <indexterm>
@@ -1122,7 +1119,7 @@
 
         <para>
           You can use <literal>OPTIMIZE TABLE</literal> or
-          <command>myisamchk</command> to defragment a table. If you
+          <command>myisamchk -r</command> to defragment a table. If you
           have fixed-length columns that you access or change frequently
           in a table that also contains some variable-length columns, it
           might be a good idea to move the variable-length columns to
@@ -1180,8 +1177,8 @@
           <listitem>
             <para>
               More difficult than static-format tables to reconstruct
-              after a crash, because a row may be fragmented into many
-              pieces and a link (fragment) may be missing.
+              after a crash, because rows may be fragmented into many
+              pieces and links (fragments) may be missing.
             </para>
           </listitem>
 
@@ -1207,7 +1204,8 @@
               enlargement probably goes in the same link. If not,
               another link is created. You can find the number of links
               using <command>myisamchk -ed</command>. All links may be
-              removed with <command>myisamchk -r</command>.
+              removed with <literal>OPTIMIZE TABLE</literal> or
+              <command>myisamchk -r</command>.
             </para>
           </listitem>
 
@@ -1273,9 +1271,9 @@
           <listitem>
             <para>
               Each row is compressed separately, so there is very little
-              access overhead. The header for a row takes up 1 to 3
-              bytes depending on the biggest row in the table. Each
-              column is compressed differently. There is usually a
+              access overhead. The header for a row takes up one to
+              three bytes depending on the biggest row in the table.
+              Each column is compressed differently. There is usually a
               different Huffman tree for each column. Some of the
               compression types are:
             </para>
@@ -1331,7 +1329,7 @@
 
           <listitem>
             <para>
-              Can handle fixed-length or dynamic-length rows.
+              Can be used for fixed-length or dynamic-length rows.
             </para>
           </listitem>
 
@@ -1348,7 +1346,8 @@
       <para>
         The file format that MySQL uses to store data has been
         extensively tested, but there are always circumstances that may
-        cause database tables to become corrupted.
+        cause database tables to become corrupted. The following
+        discussion describes how this can happen and how to handle it.
       </para>
 
       <section id="corrupted-myisam-tables">
@@ -1373,7 +1372,7 @@
 
           <listitem>
             <para>
-              Unexpected computer shutdown occurs (for example, the
+              An unexpected computer shutdown occurs (for example, the
               computer is turned off).
             </para>
           </listitem>
@@ -1387,8 +1386,8 @@
           <listitem>
             <para>
               You are using an external program (such as
-              <command>myisamchk</command>) on a table that is being
-              modified by the server at the same time.
+              <command>myisamchk</command>) to modify a table that is
+              being modified by the server at the same time.
             </para>
           </listitem>
 
@@ -1421,7 +1420,7 @@
           <listitem>
             <para>
               Queries don't find rows in the table or return incomplete
-              data.
+              results.
             </para>
           </listitem>
 
@@ -1460,8 +1459,8 @@
         <title>&title-myisam-table-close;</title>
 
         <para>
-          Each <literal>MyISAM</literal> index
-          (<filename>.MYI</filename>) file has a counter in the header
+          Each <literal>MyISAM</literal> index file
+          (<filename>.MYI</filename> file) has a counter in the header
           that can be used to check whether a table has been closed
           properly. If you get the following warning from <literal>CHECK
           TABLE</literal> or <command>myisamchk</command>, it means that
@@ -1498,10 +1497,10 @@
 
           <listitem>
             <para>
-              When the last instance of a table is closed (because of a
-              <literal>FLUSH TABLES</literal> operation or because there
-              isn't room in the table cache), the counter is decremented
-              if the table has been updated at any point.
+              When the last instance of a table is closed (because a
+              <literal>FLUSH TABLES</literal> operation was performed or
+              because there is no room in the table cache), the counter
+              is decremented if the table has been updated at any point.
             </para>
           </listitem>
 
@@ -1531,9 +1530,9 @@
 
           <listitem>
             <para>
-              The <literal>MyISAM</literal> tables are copied without
-              first issuing <literal>LOCK TABLES</literal> and
-              <literal>FLUSH TABLES</literal>.
+              A <literal>MyISAM</literal> table is copied without first
+              issuing <literal>LOCK TABLES</literal> and <literal>FLUSH
+              TABLES</literal>.
             </para>
           </listitem>
 
@@ -1565,7 +1564,7 @@
               although you might get the warning from other servers.
               However, <literal>REPAIR TABLE</literal> should be avoided
               because when one server replaces the data file with a new
-              one, this is not signaled to the other servers.
+              one, this is not known to the other servers.
             </para>
 
             <para>
@@ -1632,10 +1631,11 @@
       A <literal>MERGE</literal> table is a collection of identical
       <literal>MyISAM</literal> tables that can be used as one.
       <quote>Identical</quote> means that all tables have identical
-      column and index information. You cannot merge tables in which the
-      columns are listed in a different order, do not have exactly the
-      same columns, or have the indexes in different order. However, any
-      or all of the tables can be compressed with
+      column and index information. You cannot merge
+      <literal>MyISAM</literal> tables in which the columns are listed
+      in a different order, do not have exactly the same columns, or
+      have the indexes in different order. However, any or all of the
+      <literal>MyISAM</literal> tables can be compressed with
       <command>myisampack</command>. See <xref linkend="myisampack"/>.
       Differences in table options such as
       <literal>AVG_ROW_LENGTH</literal>, <literal>MAX_ROWS</literal>, or
@@ -1658,10 +1658,11 @@
     <para>
       You can use <literal>SELECT</literal>, <literal>DELETE</literal>,
       <literal>UPDATE</literal>, and (as of MySQL 4.0)
-      <literal>INSERT</literal> on the collection of tables. You must
-      have <literal>SELECT</literal>, <literal>UPDATE</literal>, and
-      <literal>DELETE</literal> privileges on the tables that you map to
-      a <literal>MERGE</literal> table.
+      <literal>INSERT</literal> on <literal>MERGE</literal> tables. You
+      must have <literal>SELECT</literal>, <literal>UPDATE</literal>,
+      and <literal>DELETE</literal> privileges on the
+      <literal>MyISAM</literal> tables that you map to a
+      <literal>MERGE</literal> table.
     </para>
 
     <para>
@@ -1671,19 +1672,19 @@
     </para>
 
     <para>
-      When you create a <literal>MERGE</literal> table, you must specify
-      a
+      To create a <literal>MERGE</literal> table, you must specify a
       <literal>UNION=(<replaceable>list-of-tables</replaceable>)</literal>
-      clause that indicates which tables you want to use as one. You can
-      optionally specify an <literal>INSERT_METHOD</literal> option if
-      you want inserts for the <literal>MERGE</literal> table to take
-      place in the first or last table of the <literal>UNION</literal>
-      list. Use a value of <literal>FIRST</literal> or
-      <literal>LAST</literal> to cause inserts to be made in the first
-      or last table, respectively. If you do not specify an
-      <literal>INSERT_METHOD</literal> option or if you specify it with
-      a value of <literal>NO</literal>, attempts to insert rows into the
-      <literal>MERGE</literal> table result in an error.
+      clause that indicates which <literal>MyISAM</literal> tables you
+      want to use as one. You can optionally specify an
+      <literal>INSERT_METHOD</literal> option if you want inserts for
+      the <literal>MERGE</literal> table to take place in the first or
+      last table of the <literal>UNION</literal> list. Use a value of
+      <literal>FIRST</literal> or <literal>LAST</literal> to cause
+      inserts to be made in the first or last table, respectively. If
+      you do not specify an <literal>INSERT_METHOD</literal> option or
+      if you specify it with a value of <literal>NO</literal>, attempts
+      to insert rows into the <literal>MERGE</literal> table result in
+      an error.
     </para>
 
     <para>
@@ -1716,12 +1717,12 @@
     </para>
 
     <para>
-      Note that the <literal>a</literal> column is indexed in the
-      <literal>MERGE</literal> table, but is not declared as a
-      <literal>PRIMARY KEY</literal> as it is in the underlying
-      <literal>MyISAM</literal> tables. This is necessary because a
-      <literal>MERGE</literal> table cannot enforce uniqueness over the
-      set of underlying tables.
+      Note that the <literal>a</literal> column is indexed as a
+      <literal>PRIMARY KEY</literal> in the underlying
+      <literal>MyISAM</literal> tables, but not in the
+      <literal>MERGE</literal> table. There it is indexed but not as a
+      <literal>PRIMARY KEY</literal> because a <literal>MERGE</literal>
+      table cannot enforce uniqueness over the set of underlying tables.
     </para>
 
     <para>
@@ -1756,8 +1757,8 @@
 
     <para>
       To remap a <literal>MERGE</literal> table to a different
-      collection of <literal>MyISAM</literal> tables, you can perform
-      one of the following:
+      collection of <literal>MyISAM</literal> tables, you can use one of
+      the following methods:
     </para>
 
     <itemizedlist>
@@ -1852,8 +1853,8 @@
 
       <listitem>
         <para>
-          If you have a set of tables that you join as a big table on
-          demand or batch, you should instead create a
+          If you have a set of tables from which you create a large
+          table on demand, you should instead create a
           <literal>MERGE</literal> table on them on demand. This is much
           faster and saves a lot of disk space.
         </para>
@@ -1908,8 +1909,8 @@
       <listitem>
         <para>
           If the <literal>MERGE</literal> table is non-temporary, all
-          underlying <literal>MyISAM</literal> tables have to be
-          permanent, too. If the <literal>MERGE</literal> table is
+          underlying <literal>MyISAM</literal> tables must be
+          non-temporary, too. If the <literal>MERGE</literal> table is
           temporary, the <literal>MyISAM</literal> tables can be any mix
           of temporary and non-temporary.
         </para>
@@ -1919,7 +1920,7 @@
         <para>
           <literal>MERGE</literal> tables use more file descriptors. If
           10 clients are using a <literal>MERGE</literal> table that
-          maps to 10 tables, the server uses (10*10) + 10 file
+          maps to 10 tables, the server uses (10 &times; 10) + 10 file
           descriptors. (10 data file descriptors for each of the 10
           clients, and 10 index file descriptors shared among the
           clients.)
@@ -1931,7 +1932,7 @@
           Key reads are slower. When you read a key, the
           <literal>MERGE</literal> storage engine needs to issue a read
           on all underlying tables to check which one most closely
-          matches the given key. If you then do a read-next, the
+          matches the given key. To read the next key, the
           <literal>MERGE</literal> storage engine needs to search the
           read buffers to find the next key. Only when one key buffer is
           used up does the storage engine need to read the next key
@@ -1945,6 +1946,22 @@
 
     </itemizedlist>
 
+    <para>
+      <emphasis role="bold">Additional resources</emphasis>
+    </para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>
+          A forum dedicated to the <literal>MERGE</literal> storage
+          engine is available at
+          <ulink url="&base-url-forum-list;?93"/>.
+        </para>
+      </listitem>
+
+    </itemizedlist>
+
     <section id="merge-table-problems">
 
       <title>&title-merge-table-problems;</title>
@@ -1962,8 +1979,8 @@
             <literal>MERGE</literal> table to another storage engine,
             the mapping to the underlying tables is lost. Instead, the
             rows from the underlying <literal>MyISAM</literal> tables
-            are copied into the altered table, which is then assigned
-            the new type.
+            are copied into the altered table, which then uses the
+            specified storage engine.
           </para>
         </listitem>
 
@@ -1992,22 +2009,34 @@
             open <literal>MERGE</literal> table. If you do so, the
             <literal>MERGE</literal> table may still refer to the
             original table, which yields unexpected results. The easiest
-            way to work around this deficiency is to issue a
+            way to work around this deficiency is to ensure that no
+            <literal>MERGE</literal> tables remain open by issuing a
             <literal>FLUSH TABLES</literal> statement prior to
-            performing any of these operations to ensure that no
-            <literal>MERGE</literal> tables remain open.
+            performing any of those operations.
           </para>
         </listitem>
 
         <listitem>
           <para>
-            A <literal>MERGE</literal> table cannot maintain
-            <literal>UNIQUE</literal> constraints over the whole table.
-            When you perform an <literal>INSERT</literal>, the data goes
-            into the first or last <literal>MyISAM</literal> table
-            (depending on the value of the
-            <literal>INSERT_METHOD</literal> option). MySQL ensures that
-            unique key values remain unique within that
+            <literal>DROP TABLE</literal> on a table that is in use by a
+            <literal>MERGE</literal> table does not work on Windows
+            because the <literal>MERGE</literal> storage engine's table
+            mapping is hidden from the upper layer of MySQL. Windows
+            does not allow open files to be deleted, so you first must
+            flush all <literal>MERGE</literal> tables (with
+            <literal>FLUSH TABLES</literal>) or drop the
+            <literal>MERGE</literal> table before dropping the table.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            A <literal>MERGE</literal> table cannot maintain uniqueness
+            constraints over the entire table. When you perform an
+            <literal>INSERT</literal>, the data goes into the first or
+            last <literal>MyISAM</literal> table (depending on the value
+            of the <literal>INSERT_METHOD</literal> option). MySQL
+            ensures that unique key values remain unique within that
             <literal>MyISAM</literal> table, but not across all the
             tables in the collection.
           </para>
@@ -2064,26 +2093,8 @@
           </para>
         </listitem>
 
-        <listitem>
-          <para>
-            <literal>DROP TABLE</literal> on a table that is in use by a
-            <literal>MERGE</literal> table does not work on Windows
-            because the <literal>MERGE</literal> storage engine's table
-            mapping is hidden from the upper layer of MySQL. Windows
-            does not allow the deletion of open files, so you first must
-            flush all <literal>MERGE</literal> tables (with
-            <literal>FLUSH TABLES</literal>) or drop the
-            <literal>MERGE</literal> table before dropping the table.
-          </para>
-        </listitem>
-
       </itemizedlist>
 
-      <para>
-        A forum dedicated to the <literal>MERGE</literal> storage engine
-        is available at <ulink url="&base-url-forum-list;?93"/>.
-      </para>
-
     </section>
 
   </section>
@@ -2141,9 +2152,9 @@
     </para>
 
     <para>
-      To specify explicitly that you want a <literal>MEMORY</literal>
-      table, indicate that with an <literal>ENGINE</literal> table
-      option:
+      To specify explicitly that you want to create a
+      <literal>MEMORY</literal> table, indicate that with an
+      <literal>ENGINE</literal> table option:
     </para>
 
 <programlisting>
@@ -2158,11 +2169,11 @@
     </para>
 
     <para>
-      As indicated by their name, <literal>MEMORY</literal> tables are
-      stored in memory and use hash indexes by default. This makes them
-      very fast, and very useful for creating temporary tables. However,
-      when the server shuts down, all data stored in
-      <literal>MEMORY</literal> tables is lost. The tables themselves
+      As indicated by the name, <literal>MEMORY</literal> tables are
+      stored in memory. They use hash indexes by default, which makes
+      them very fast, and very useful for creating temporary tables.
+      However, when the server shuts down, all rows stored in
+      <literal>MEMORY</literal> tables are lost. The tables themselves
       continue to exist because their definitions are stored in
       <filename>.frm</filename> files on disk, but they are empty when
       the server restarts.
@@ -2247,14 +2258,6 @@
 
       <listitem>
         <para>
-          As of MySQL 4.1, you can use <literal>INSERT DELAYED</literal>
-          with <literal>MEMORY</literal> tables. See
-          <xref linkend="insert-delayed"/>.
-        </para>
-      </listitem>
-
-      <listitem>
-        <para>
           If you have a hash index on a <literal>MEMORY</literal> table
           that has a high degree of key duplication (many index entries
           containing the same value), updates to the table that affect
@@ -2268,38 +2271,44 @@
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> tables use a fixed row length
-          format.
+          As of MySQL 4.0.2, columns that are indexed can contain
+          <literal>NULL</literal> values.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> doesn't support
+          <literal>MEMORY</literal> tables use a fixed-length row
+          storage format.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          <literal>MEMORY</literal> tables cannot contain
           <literal>BLOB</literal> or <literal>TEXT</literal> columns.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> doesn't support
-          <literal>AUTO_INCREMENT</literal> columns before MySQL 4.1.0.
+          <literal>MEMORY</literal> supports
+          <literal>AUTO_INCREMENT</literal> columns as of MySQL 4.1.0.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          Prior to MySQL 4.0.2, <literal>MEMORY</literal> doesn't
-          support indexes on columns that can contain
-          <literal>NULL</literal> values.
+          As of MySQL 4.1, you can use <literal>INSERT DELAYED</literal>
+          with <literal>MEMORY</literal> tables. See
+          <xref linkend="insert-delayed"/>.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> tables are shared between all
-          clients (just like any other non-<literal>TEMPORARY</literal>
-          table).
+          <literal>MEMORY</literal> tables are shared among all clients
+          (just like any other non-<literal>TEMPORARY</literal> table).
         </para>
       </listitem>
 
@@ -2353,8 +2362,8 @@
           To free memory used by a <literal>MEMORY</literal> table when
           you no longer require its contents, you should execute
           <literal>DELETE FROM</literal> or <literal>TRUNCATE
-          TABLE</literal>, or remove the table altogether (using
-          <literal>DROP TABLE</literal>).
+          TABLE</literal>, or remove the table altogether using
+          <literal>DROP TABLE</literal>.
         </para>
       </listitem>
 
@@ -2398,8 +2407,8 @@
         </para>
 
 <programlisting>
-SUM_OVER_ALL_BTREE_KEYS(<replaceable>max_length_of_key</replaceable> + sizeof(char*) * 4)
-+ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) * 2)
+SUM_OVER_ALL_BTREE_KEYS(<replaceable>max_length_of_key</replaceable> + sizeof(char*) &times; 4)
++ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) &times; 2)
 + ALIGN(<replaceable>length_of_row</replaceable>+1, sizeof(char*))
 </programlisting>
 
@@ -2454,20 +2463,19 @@
     <para>
       Sleepycat Software has provided MySQL with the Berkeley DB
       transactional storage engine. This storage engine typically is
-      called <literal>BDB</literal> for short. Support for the
-      <literal>BDB</literal> storage engine is included in MySQL source
-      distributions starting from version 3.23.34a and is activated in
-      MySQL-Max binary distributions.
+      called <literal>BDB</literal> for short. <literal>BDB</literal>
+      tables may have a greater chance of surviving crashes and are also
+      capable of <literal>COMMIT</literal> and
+      <literal>ROLLBACK</literal> operations on transactions.
     </para>
 
     <para>
-      <literal>BDB</literal> tables may have a greater chance of
-      surviving crashes and are also capable of
-      <literal>COMMIT</literal> and <literal>ROLLBACK</literal>
-      operations on transactions. The MySQL source distribution comes
-      with a <literal>BDB</literal> distribution that is patched to make
-      it work with MySQL. You cannot use a non-patched version of
-      <literal>BDB</literal> with MySQL.
+      Support for the <literal>BDB</literal> storage engine is included
+      in MySQL source distributions starting from version 3.23.34a and
+      is activated in MySQL-Max binary distributions. The MySQL source
+      distribution comes with a <literal>BDB</literal> distribution that
+      is patched to make it work with MySQL. You cannot use a
+      non-patched version of <literal>BDB</literal> with MySQL.
     </para>
 
     <para>
@@ -2482,8 +2490,8 @@
       When it comes to support for any problems involving
       <literal>BDB</literal> tables, we are committed to helping our
       users locate the problem and create reproducible test cases. Any
-      such test case is forwarded to Sleepycat, who in turn help us find
-      and fix the problem. As this is a two-stage operation, any
+      such test case is forwarded to Sleepycat, which in turn helps us
+      find and fix the problem. As this is a two-stage operation, any
       problems with <literal>BDB</literal> tables may take a little
       longer for us to fix than for other storage engines. However, we
       anticipate no significant difficulties with this procedure because
@@ -2552,8 +2560,9 @@
       </itemizedlist>
 
       <para>
-        <literal>BDB</literal> does <emphasis>not</emphasis> work with
-        the following operating systems:
+        The <literal>BDB</literal> storage engine does
+        <emphasis>not</emphasis> work with the following operating
+        systems:
       </para>
 
       <itemizedlist>
@@ -2598,8 +2607,9 @@
       <para>
         If you build MySQL from source with support for
         <literal>BDB</literal> tables, but the following error occurs
-        when you start <command>mysqld</command>, it means
-        <literal>BDB</literal> is not supported for your architecture:
+        when you start <command>mysqld</command>, it means that the
+        <literal>BDB</literal> storage engine is not supported for your
+        architecture:
       </para>
 
 <programlisting>
@@ -2609,8 +2619,8 @@
 
       <para>
         In this case, you must rebuild MySQL without
-        <literal>BDB</literal> table support or start the server with
-        the <option>--skip-bdb</option> option.
+        <literal>BDB</literal> support or start the server with the
+        <option>--skip-bdb</option> option.
       </para>
 
     </section>
@@ -2641,8 +2651,8 @@
 </programlisting>
 
       <para>
-        For more information, see <xref linkend="installing-binary"/>,
-        <xref linkend="mysqld-max"/>, and
+        For more information, <xref linkend="mysqld-max"/>, see
+        <xref linkend="installing-binary"/>, and
         <xref linkend="installing-source"/>.
       </para>
 
@@ -2655,7 +2665,8 @@
       <para>
         The following options to <command>mysqld</command> can be used
         to change the behavior of the <literal>BDB</literal> storage
-        engine:
+        engine. For more information, see
+        <xref linkend="server-options"/>.
       </para>
 
       <itemizedlist>
@@ -2667,7 +2678,7 @@
 
           <para>
             The base directory for <literal>BDB</literal> tables. This
-            should be the same directory you use for
+            should be the same directory that you use for
             <option>--datadir</option>.
           </para>
         </listitem>
@@ -2757,7 +2768,7 @@
 
           <para>
             Synchronously flush the <literal>BDB</literal> logs. This
-            option is enabled by default; use
+            option is enabled by default. Use
             <option>--skip-sync-bdb-logs</option> to disable it. This
             option was added in MySQL 4.0.18.
           </para>
@@ -2766,42 +2777,12 @@
       </itemizedlist>
 
       <para>
-        See <xref linkend="server-options"/>.
-      </para>
-
-      <remark>
-        Seems a bit odd to have a single-item list here... This
-        bsaically just repeats what's show about 2 paras below, so I'm
-        commenting it out for now
-      </remark>
-
-<!--
-   <para>
-    The following system variable affects the behavior of
-    <literal>BDB</literal> tables:
-   </para>
-
-   <itemizedlist>
-
-    <listitem><para>
-     <literal>bdb_max_lock</literal>
-    </para>
-
-    <para>
-     The maximum number of locks that can be active on a
-     <literal>BDB</literal> table.
-    </para></listitem>
-
-   </itemizedlist>
--->
-
-      <para>
         If you use the <option>--skip-bdb</option> option, MySQL does
         not initialize the Berkeley DB library and this saves a lot of
         memory. However, if you use this option, you cannot use
         <literal>BDB</literal> tables. If you try to create a
-        <literal>BDB</literal> table, MySQL creates a
-        <literal>MyISAM</literal> table instead.
+        <literal>BDB</literal> table, MySQL uses the default storage
+        engine instead.
       </para>
 
       <para>

Modified: trunk/refman-5.0/storage-engines.xml
===================================================================
--- trunk/refman-5.0/storage-engines.xml	2006-01-12 20:22:51 UTC (rev 782)
+++ trunk/refman-5.0/storage-engines.xml	2006-01-12 21:21:19 UTC (rev 783)
@@ -322,11 +322,6 @@
     place and not that helpful.
   </remark>
 
-  <remark role="todo">
-    This behavior now may be "using the default storage engine" rather
-    than "using MyISAM", but when did that change?
-  </remark>
-
   <para>
     If you try to use a storage engine that is not compiled in or that
     is compiled in but deactivated, MySQL instead creates a table using
@@ -1029,20 +1024,21 @@
         <para>
           Static format is the default for <literal>MyISAM</literal>
           tables. It is used when the table contains no variable-length
-          columns (<literal>VARCHAR</literal>, <literal>BLOB</literal>,
-          or <literal>TEXT</literal>). Each row is stored using a fixed
+          columns (<literal>VARCHAR</literal>,
+          <literal>VARBINARY</literal>, <literal>BLOB</literal>, or
+          <literal>TEXT</literal>). Each row is stored using a fixed
           number of bytes.
         </para>
 
         <para>
           Of the three <literal>MyISAM</literal> storage formats, static
           format is the simplest and most secure (least subject to
-          corruption). It is also the fastest of the on-disk formats.
-          The speed comes from the easy way that rows in the data file
-          can be found on disk: When looking up a row based on a row
-          number in the index, multiply the row number by the row
-          length. Also, when scanning a table, it is very easy to read a
-          constant number of rows with each disk read operation.
+          corruption). It is also the fastest of the on-disk formats due
+          to the ease with which rows in the data file can be found on
+          disk: To look up a row based on a row number in the index,
+          multiply the row number by the row length to calculate the row
+          position. Also, when scanning a table, it is very easy to read
+          a constant number of rows with each disk read operation.
         </para>
 
         <para>
@@ -1101,7 +1097,7 @@
 
           <listitem>
             <para>
-              Usually require more disk space than for dynamic-format
+              Usually require more disk space than dynamic-format
               tables.
             </para>
           </listitem>
@@ -1126,16 +1122,17 @@
         <para>
           Dynamic storage format is used if a <literal>MyISAM</literal>
           table contains any variable-length columns
-          (<literal>VARCHAR</literal>, <literal>BLOB</literal>, or
-          <literal>TEXT</literal>), or if the table was created with the
-          <literal>ROW_FORMAT=DYNAMIC</literal> option.
+          (<literal>VARCHAR</literal>, <literal>VARBINARY</literal>,
+          <literal>BLOB</literal>, or <literal>TEXT</literal>), or if
+          the table was created with the
+          <literal>ROW_FORMAT=DYNAMIC</literal> table option.
         </para>
 
         <para>
-          This format is a little more complex because each row has a
-          header that indicates how long it is. One row can also end up
-          at more than one location when it is made longer as a result
-          of an update.
+          Dynamic format is a little more complex than static format
+          because each row has a header that indicates how long it is. A
+          row can become fragmented (stored in non-contiguous pieces)
+          when it is made longer as a result of an update.
         </para>
 
         <indexterm>
@@ -1145,7 +1142,7 @@
 
         <para>
           You can use <literal>OPTIMIZE TABLE</literal> or
-          <command>myisamchk</command> to defragment a table. If you
+          <command>myisamchk -r</command> to defragment a table. If you
           have fixed-length columns that you access or change frequently
           in a table that also contains some variable-length columns, it
           might be a good idea to move the variable-length columns to
@@ -1203,8 +1200,8 @@
           <listitem>
             <para>
               More difficult than static-format tables to reconstruct
-              after a crash, because a row may be fragmented into many
-              pieces and a link (fragment) may be missing.
+              after a crash, because rows may be fragmented into many
+              pieces and links (fragments) may be missing.
             </para>
           </listitem>
 
@@ -1230,7 +1227,8 @@
               enlargement probably goes in the same link. If not,
               another link is created. You can find the number of links
               using <command>myisamchk -ed</command>. All links may be
-              removed with <command>myisamchk -r</command>.
+              removed with <literal>OPTIMIZE TABLE</literal> or
+              <command>myisamchk -r</command>.
             </para>
           </listitem>
 
@@ -1263,11 +1261,7 @@
         <para>
           Compressed storage format is a read-only format that is
           generated with the <command>myisampack</command> tool.
-        </para>
-
-        <para>
-          All MySQL distributions include <command>myisampack</command>
-          by default. Compressed tables can be uncompressed with
+          Compressed tables can be uncompressed with
           <command>myisamchk</command>.
         </para>
 
@@ -1288,9 +1282,9 @@
           <listitem>
             <para>
               Each row is compressed separately, so there is very little
-              access overhead. The header for a row takes up 1 to 3
-              bytes depending on the biggest row in the table. Each
-              column is compressed differently. There is usually a
+              access overhead. The header for a row takes up one to
+              three bytes depending on the biggest row in the table.
+              Each column is compressed differently. There is usually a
               different Huffman tree for each column. Some of the
               compression types are:
             </para>
@@ -1346,7 +1340,7 @@
 
           <listitem>
             <para>
-              Can handle fixed-length or dynamic-length rows.
+              Can be used for fixed-length or dynamic-length rows.
             </para>
           </listitem>
 
@@ -1363,7 +1357,8 @@
       <para>
         The file format that MySQL uses to store data has been
         extensively tested, but there are always circumstances that may
-        cause database tables to become corrupted.
+        cause database tables to become corrupted. The following
+        discussion describes how this can happen and how to handle it.
       </para>
 
       <section id="corrupted-myisam-tables">
@@ -1388,7 +1383,7 @@
 
           <listitem>
             <para>
-              Unexpected computer shutdown occurs (for example, the
+              An unexpected computer shutdown occurs (for example, the
               computer is turned off).
             </para>
           </listitem>
@@ -1402,8 +1397,8 @@
           <listitem>
             <para>
               You are using an external program (such as
-              <command>myisamchk</command>) on a table that is being
-              modified by the server at the same time.
+              <command>myisamchk</command>) to modify a table that is
+              being modified by the server at the same time.
             </para>
           </listitem>
 
@@ -1436,7 +1431,7 @@
           <listitem>
             <para>
               Queries don't find rows in the table or return incomplete
-              data.
+              results.
             </para>
           </listitem>
 
@@ -1475,8 +1470,8 @@
         <title>&title-myisam-table-close;</title>
 
         <para>
-          Each <literal>MyISAM</literal> index
-          (<filename>.MYI</filename>) file has a counter in the header
+          Each <literal>MyISAM</literal> index file
+          (<filename>.MYI</filename> file) has a counter in the header
           that can be used to check whether a table has been closed
           properly. If you get the following warning from <literal>CHECK
           TABLE</literal> or <command>myisamchk</command>, it means that
@@ -1513,10 +1508,10 @@
 
           <listitem>
             <para>
-              When the last instance of a table is closed (because of a
-              <literal>FLUSH TABLES</literal> operation or because there
-              isn't room in the table cache), the counter is decremented
-              if the table has been updated at any point.
+              When the last instance of a table is closed (because a
+              <literal>FLUSH TABLES</literal> operation was performed or
+              because there is no room in the table cache), the counter
+              is decremented if the table has been updated at any point.
             </para>
           </listitem>
 
@@ -1546,9 +1541,9 @@
 
           <listitem>
             <para>
-              The <literal>MyISAM</literal> tables are copied without
-              first issuing <literal>LOCK TABLES</literal> and
-              <literal>FLUSH TABLES</literal>.
+              A <literal>MyISAM</literal> table is copied without first
+              issuing <literal>LOCK TABLES</literal> and <literal>FLUSH
+              TABLES</literal>.
             </para>
           </listitem>
 
@@ -1580,7 +1575,7 @@
               although you might get the warning from other servers.
               However, <literal>REPAIR TABLE</literal> should be avoided
               because when one server replaces the data file with a new
-              one, this is not signaled to the other servers.
+              one, this is not known to the other servers.
             </para>
 
             <para>
@@ -1642,10 +1637,11 @@
       <literal>MRG_MyISAM</literal> engine, is a collection of identical
       <literal>MyISAM</literal> tables that can be used as one.
       <quote>Identical</quote> means that all tables have identical
-      column and index information. You cannot merge tables in which the
-      columns are listed in a different order, do not have exactly the
-      same columns, or have the indexes in different order. However, any
-      or all of the tables can be compressed with
+      column and index information. You cannot merge
+      <literal>MyISAM</literal> tables in which the columns are listed
+      in a different order, do not have exactly the same columns, or
+      have the indexes in different order. However, any or all of the
+      <literal>MyISAM</literal> tables can be compressed with
       <command>myisampack</command>. See <xref linkend="myisampack"/>.
       Differences in table options such as
       <literal>AVG_ROW_LENGTH</literal>, <literal>MAX_ROWS</literal>, or
@@ -1666,10 +1662,11 @@
 
     <para>
       You can use <literal>SELECT</literal>, <literal>DELETE</literal>,
-      <literal>UPDATE</literal>, and <literal>INSERT</literal> on the
-      collection of tables. You must have <literal>SELECT</literal>,
-      <literal>UPDATE</literal>, and <literal>DELETE</literal>
-      privileges on the tables that you map to a
+      <literal>UPDATE</literal>, and <literal>INSERT</literal> on
+      <literal>MERGE</literal> tables. You must have
+      <literal>SELECT</literal>, <literal>UPDATE</literal>, and
+      <literal>DELETE</literal> privileges on the
+      <literal>MyISAM</literal> tables that you map to a
       <literal>MERGE</literal> table.
     </para>
 
@@ -1680,19 +1677,19 @@
     </para>
 
     <para>
-      When you create a <literal>MERGE</literal> table, you must specify
-      a
+      To create a <literal>MERGE</literal> table, you must specify a
       <literal>UNION=(<replaceable>list-of-tables</replaceable>)</literal>
-      clause that indicates which tables you want to use as one. You can
-      optionally specify an <literal>INSERT_METHOD</literal> option if
-      you want inserts for the <literal>MERGE</literal> table to take
-      place in the first or last table of the <literal>UNION</literal>
-      list. Use a value of <literal>FIRST</literal> or
-      <literal>LAST</literal> to cause inserts to be made in the first
-      or last table, respectively. If you do not specify an
-      <literal>INSERT_METHOD</literal> option or if you specify it with
-      a value of <literal>NO</literal>, attempts to insert rows into the
-      <literal>MERGE</literal> table result in an error.
+      clause that indicates which <literal>MyISAM</literal> tables you
+      want to use as one. You can optionally specify an
+      <literal>INSERT_METHOD</literal> option if you want inserts for
+      the <literal>MERGE</literal> table to take place in the first or
+      last table of the <literal>UNION</literal> list. Use a value of
+      <literal>FIRST</literal> or <literal>LAST</literal> to cause
+      inserts to be made in the first or last table, respectively. If
+      you do not specify an <literal>INSERT_METHOD</literal> option or
+      if you specify it with a value of <literal>NO</literal>, attempts
+      to insert rows into the <literal>MERGE</literal> table result in
+      an error.
     </para>
 
     <para>
@@ -1725,12 +1722,12 @@
     </para>
 
     <para>
-      Note that the <literal>a</literal> column is indexed in the
-      <literal>MERGE</literal> table, but is not declared as a
-      <literal>PRIMARY KEY</literal> as it is in the underlying
-      <literal>MyISAM</literal> tables. This is necessary because a
-      <literal>MERGE</literal> table cannot enforce uniqueness over the
-      set of underlying tables.
+      Note that the <literal>a</literal> column is indexed as a
+      <literal>PRIMARY KEY</literal> in the underlying
+      <literal>MyISAM</literal> tables, but not in the
+      <literal>MERGE</literal> table. There it is indexed but not as a
+      <literal>PRIMARY KEY</literal> because a <literal>MERGE</literal>
+      table cannot enforce uniqueness over the set of underlying tables.
     </para>
 
     <para>
@@ -1765,8 +1762,8 @@
 
     <para>
       To remap a <literal>MERGE</literal> table to a different
-      collection of <literal>MyISAM</literal> tables, you can perform
-      one of the following:
+      collection of <literal>MyISAM</literal> tables, you can use one of
+      the following methods:
     </para>
 
     <itemizedlist>
@@ -1856,8 +1853,8 @@
 
       <listitem>
         <para>
-          If you have a set of tables that you join as a big table on
-          demand or batch, you should instead create a
+          If you have a set of tables from which you create a large
+          table on demand, you should instead create a
           <literal>MERGE</literal> table on them on demand. This is much
           faster and saves a lot of disk space.
         </para>
@@ -1912,8 +1909,8 @@
       <listitem>
         <para>
           If the <literal>MERGE</literal> table is non-temporary, all
-          underlying <literal>MyISAM</literal> tables have to be
-          permanent, too. If the <literal>MERGE</literal> table is
+          underlying <literal>MyISAM</literal> tables must be
+          non-temporary, too. If the <literal>MERGE</literal> table is
           temporary, the <literal>MyISAM</literal> tables can be any mix
           of temporary and non-temporary.
         </para>
@@ -1923,7 +1920,7 @@
         <para>
           <literal>MERGE</literal> tables use more file descriptors. If
           10 clients are using a <literal>MERGE</literal> table that
-          maps to 10 tables, the server uses (10*10) + 10 file
+          maps to 10 tables, the server uses (10 &times; 10) + 10 file
           descriptors. (10 data file descriptors for each of the 10
           clients, and 10 index file descriptors shared among the
           clients.)
@@ -1935,7 +1932,7 @@
           Key reads are slower. When you read a key, the
           <literal>MERGE</literal> storage engine needs to issue a read
           on all underlying tables to check which one most closely
-          matches the given key. If you then do a read-next, the
+          matches the given key. To read the next key, the
           <literal>MERGE</literal> storage engine needs to search the
           read buffers to find the next key. Only when one key buffer is
           used up does the storage engine need to read the next key
@@ -1949,6 +1946,22 @@
 
     </itemizedlist>
 
+    <para>
+      <emphasis role="bold">Additional resources</emphasis>
+    </para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>
+          A forum dedicated to the <literal>MERGE</literal> storage
+          engine is available at
+          <ulink url="&base-url-forum-list;?93"/>.
+        </para>
+      </listitem>
+
+    </itemizedlist>
+
     <section id="merge-table-problems">
 
       <title>&title-merge-table-problems;</title>
@@ -1966,8 +1979,8 @@
             <literal>MERGE</literal> table to another storage engine,
             the mapping to the underlying tables is lost. Instead, the
             rows from the underlying <literal>MyISAM</literal> tables
-            are copied into the altered table, which is then assigned
-            the new type.
+            are copied into the altered table, which then uses the
+            specified storage engine.
           </para>
         </listitem>
 
@@ -1988,22 +2001,34 @@
             open <literal>MERGE</literal> table. If you do so, the
             <literal>MERGE</literal> table may still refer to the
             original table, which yields unexpected results. The easiest
-            way to work around this deficiency is to issue a
+            way to work around this deficiency is to ensure that no
+            <literal>MERGE</literal> tables remain open by issuing a
             <literal>FLUSH TABLES</literal> statement prior to
-            performing any of these operations to ensure that no
-            <literal>MERGE</literal> tables remain open.
+            performing any of those operations.
           </para>
         </listitem>
 
         <listitem>
           <para>
-            A <literal>MERGE</literal> table cannot maintain
-            <literal>UNIQUE</literal> constraints over the whole table.
-            When you perform an <literal>INSERT</literal>, the data goes
-            into the first or last <literal>MyISAM</literal> table
-            (depending on the value of the
-            <literal>INSERT_METHOD</literal> option). MySQL ensures that
-            unique key values remain unique within that
+            <literal>DROP TABLE</literal> on a table that is in use by a
+            <literal>MERGE</literal> table does not work on Windows
+            because the <literal>MERGE</literal> storage engine's table
+            mapping is hidden from the upper layer of MySQL. Windows
+            does not allow open files to be deleted, so you first must
+            flush all <literal>MERGE</literal> tables (with
+            <literal>FLUSH TABLES</literal>) or drop the
+            <literal>MERGE</literal> table before dropping the table.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            A <literal>MERGE</literal> table cannot maintain uniqueness
+            constraints over the entire table. When you perform an
+            <literal>INSERT</literal>, the data goes into the first or
+            last <literal>MyISAM</literal> table (depending on the value
+            of the <literal>INSERT_METHOD</literal> option). MySQL
+            ensures that unique key values remain unique within that
             <literal>MyISAM</literal> table, but not across all the
             tables in the collection.
           </para>
@@ -2041,37 +2066,8 @@
           </para>
         </listitem>
 
-        <listitem>
-          <para>
-            <literal>DROP TABLE</literal> on a table that is in use by a
-            <literal>MERGE</literal> table does not work on Windows
-            because the <literal>MERGE</literal> storage engine's table
-            mapping is hidden from the upper layer of MySQL. Windows
-            does not allow the deletion of open files, so you first must
-            flush all <literal>MERGE</literal> tables (with
-            <literal>FLUSH TABLES</literal>) or drop the
-            <literal>MERGE</literal> table before dropping the table.
-          </para>
-        </listitem>
-
       </itemizedlist>
 
-      <para>
-        <emphasis role="bold">Additional resources</emphasis>
-      </para>
-
-      <itemizedlist>
-
-        <listitem>
-          <para>
-            A forum dedicated to the <literal>MERGE</literal> storage
-            engine is available at
-            <ulink url="&base-url-forum-list;?93"/>.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
     </section>
 
   </section>
@@ -2113,7 +2109,7 @@
 
     <para>
       The <literal>MEMORY</literal> storage engine creates tables with
-      contents that are stored in memory. These were formerly known as
+      contents that are stored in memory. Formerly, these were known as
       <literal>HEAP</literal> tables. <literal>MEMORY</literal> is the
       preferred term, although <literal>HEAP</literal> remains supported
       for backward compatibility.
@@ -2127,8 +2123,9 @@
     </para>
 
     <para>
-      To specify explicitly that you want a <literal>MEMORY</literal>
-      table, indicate that with an <literal>ENGINE</literal> option:
+      To specify explicitly that you want to create a
+      <literal>MEMORY</literal> table, indicate that with an
+      <literal>ENGINE</literal> table option:
     </para>
 
 <programlisting>
@@ -2143,11 +2140,11 @@
     </para>
 
     <para>
-      As indicated by their name, <literal>MEMORY</literal> tables are
-      stored in memory and use hash indexes by default. This makes them
-      very fast, and very useful for creating temporary tables. However,
-      when the server shuts down, all data stored in
-      <literal>MEMORY</literal> tables is lost. The tables themselves
+      As indicated by the name, <literal>MEMORY</literal> tables are
+      stored in memory. They use hash indexes by default, which makes
+      them very fast, and very useful for creating temporary tables.
+      However, when the server shuts down, all rows stored in
+      <literal>MEMORY</literal> tables are lost. The tables themselves
       continue to exist because their definitions are stored in
       <filename>.frm</filename> files on disk, but they are empty when
       the server restarts.
@@ -2227,14 +2224,6 @@
 
       <listitem>
         <para>
-          You can also use <literal>INSERT DELAYED</literal> with
-          <literal>MEMORY</literal> tables. See
-          <xref linkend="insert-delayed"/>.
-        </para>
-      </listitem>
-
-      <listitem>
-        <para>
           If you have a hash index on a <literal>MEMORY</literal> table
           that has a high degree of key duplication (many index entries
           containing the same value), updates to the table that affect
@@ -2248,36 +2237,49 @@
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> tables use a fixed row length
-          format.
+          Columns that are indexed can contain <literal>NULL</literal>
+          values.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> doesn't support
+          <literal>MEMORY</literal> tables use a fixed-length row
+          storage format.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          <literal>MEMORY</literal> tables cannot contain
           <literal>BLOB</literal> or <literal>TEXT</literal> columns.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> includes support for both
-          <literal>AUTO_INCREMENT</literal> columns and indexes on
-          columns that can contain <literal>NULL</literal> values.
+          <literal>MEMORY</literal> includes support for
+          <literal>AUTO_INCREMENT</literal> columns.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> tables are shared between all
-          clients (just like any other non-<literal>TEMPORARY</literal>
-          table).
+          You can use <literal>INSERT DELAYED</literal> with
+          <literal>MEMORY</literal> tables. See
+          <xref linkend="insert-delayed"/>.
         </para>
       </listitem>
 
       <listitem>
         <para>
+          <literal>MEMORY</literal> tables are shared among all clients
+          (just like any other non-<literal>TEMPORARY</literal> table).
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
           <literal>MEMORY</literal> table contents are stored in memory,
           which is a property that <literal>MEMORY</literal> tables
           share with internal tables that the server creates on the fly
@@ -2326,8 +2328,8 @@
           To free memory used by a <literal>MEMORY</literal> table when
           you no longer require its contents, you should execute
           <literal>DELETE FROM</literal> or <literal>TRUNCATE
-          TABLE</literal>, or remove the table altogether (using
-          <literal>DROP TABLE</literal>).
+          TABLE</literal>, or remove the table altogether using
+          <literal>DROP TABLE</literal>.
         </para>
       </listitem>
 
@@ -2371,8 +2373,8 @@
         </para>
 
 <programlisting>
-SUM_OVER_ALL_BTREE_KEYS(<replaceable>max_length_of_key</replaceable> + sizeof(char*) * 4)
-+ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) * 2)
+SUM_OVER_ALL_BTREE_KEYS(<replaceable>max_length_of_key</replaceable> + sizeof(char*) &times; 4)
++ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) &times; 2)
 + ALIGN(<replaceable>length_of_row</replaceable>+1, sizeof(char*))
 </programlisting>
 
@@ -2438,18 +2440,18 @@
     <para>
       Sleepycat Software has provided MySQL with the Berkeley DB
       transactional storage engine. This storage engine typically is
-      called <literal>BDB</literal> for short. Support for the
-      <literal>BDB</literal> storage engine is included in MySQL source
-      distributions is activated in MySQL-Max binary distributions.
+      called <literal>BDB</literal> for short. <literal>BDB</literal>
+      tables may have a greater chance of surviving crashes and are also
+      capable of <literal>COMMIT</literal> and
+      <literal>ROLLBACK</literal> operations on transactions.
     </para>
 
     <para>
-      <literal>BDB</literal> tables may have a greater chance of
-      surviving crashes and are also capable of
-      <literal>COMMIT</literal> and <literal>ROLLBACK</literal>
-      operations on transactions. The MySQL source distribution comes
-      with a <literal>BDB</literal> distribution that is patched to make
-      it work with MySQL. You cannot use a non-patched version of
+      Support for the <literal>BDB</literal> storage engine is included
+      in MySQL source distributions is activated in MySQL-Max binary
+      distributions. The MySQL source distribution comes with a
+      <literal>BDB</literal> distribution that is patched to make it
+      work with MySQL. You cannot use a non-patched version of
       <literal>BDB</literal> with MySQL.
     </para>
 
@@ -2469,8 +2471,8 @@
       When it comes to support for any problems involving
       <literal>BDB</literal> tables, we are committed to helping our
       users locate the problem and create reproducible test cases. Any
-      such test case is forwarded to Sleepycat, who in turn help us find
-      and fix the problem. As this is a two-stage operation, any
+      such test case is forwarded to Sleepycat, which in turn helps us
+      find and fix the problem. As this is a two-stage operation, any
       problems with <literal>BDB</literal> tables may take a little
       longer for us to fix than for other storage engines. However, we
       anticipate no significant difficulties with this procedure because
@@ -2539,8 +2541,9 @@
       </itemizedlist>
 
       <para>
-        <literal>BDB</literal> does <emphasis>not</emphasis> work with
-        the following operating systems:
+        The <literal>BDB</literal> storage engine does
+        <emphasis>not</emphasis> work with the following operating
+        systems:
       </para>
 
       <itemizedlist>
@@ -2585,8 +2588,9 @@
       <para>
         If you build MySQL from source with support for
         <literal>BDB</literal> tables, but the following error occurs
-        when you start <command>mysqld</command>, it means
-        <literal>BDB</literal> is not supported for your architecture:
+        when you start <command>mysqld</command>, it means that the
+        <literal>BDB</literal> storage engine is not supported for your
+        architecture:
       </para>
 
 <programlisting>
@@ -2596,8 +2600,8 @@
 
       <para>
         In this case, you must rebuild MySQL without
-        <literal>BDB</literal> table support or start the server with
-        the <option>--skip-bdb</option> option.
+        <literal>BDB</literal> support or start the server with the
+        <option>--skip-bdb</option> option.
       </para>
 
     </section>
@@ -2628,8 +2632,8 @@
 </programlisting>
 
       <para>
-        For more information, see <xref linkend="installing-binary"/>,
-        <xref linkend="mysqld-max"/>, and
+        For more information, <xref linkend="mysqld-max"/>, see
+        <xref linkend="installing-binary"/>, and
         <xref linkend="installing-source"/>.
       </para>
 
@@ -2642,7 +2646,8 @@
       <para>
         The following options to <command>mysqld</command> can be used
         to change the behavior of the <literal>BDB</literal> storage
-        engine:
+        engine. For more information, see
+        <xref linkend="server-options"/>.
       </para>
 
       <itemizedlist>
@@ -2654,7 +2659,7 @@
 
           <para>
             The base directory for <literal>BDB</literal> tables. This
-            should be the same directory you use for
+            should be the same directory that you use for
             <option>--datadir</option>.
           </para>
         </listitem>
@@ -2744,7 +2749,7 @@
 
           <para>
             Synchronously flush the <literal>BDB</literal> logs. This
-            option is enabled by default; use
+            option is enabled by default. Use
             <option>--skip-sync-bdb-logs</option> to disable it.
           </para>
         </listitem>
@@ -2752,42 +2757,12 @@
       </itemizedlist>
 
       <para>
-        See <xref linkend="server-options"/>.
-      </para>
-
-      <remark>
-        Seems a bit odd to have a single-item list here... This
-        bsaically just repeats what's show about 2 paras below, so I'm
-        commenting it out for now
-      </remark>
-
-<!--
-   <para>
-    The following system variable affects the behavior of
-    <literal>BDB</literal> tables:
-   </para>
-
-   <itemizedlist>
-
-    <listitem><para>
-     <literal>bdb_max_lock</literal>
-    </para>
-
-    <para>
-     The maximum number of locks that can be active on a
-     <literal>BDB</literal> table.
-    </para></listitem>
-
-   </itemizedlist>
--->
-
-      <para>
         If you use the <option>--skip-bdb</option> option, MySQL does
         not initialize the Berkeley DB library and this saves a lot of
         memory. However, if you use this option, you cannot use
         <literal>BDB</literal> tables. If you try to create a
-        <literal>BDB</literal> table, MySQL creates a
-        <literal>MyISAM</literal> table instead.
+        <literal>BDB</literal> table, MySQL uses the default storage
+        engine instead.
       </para>
 
       <para>
@@ -3653,19 +3628,6 @@
             It is possible for one <literal>FEDERATED</literal> table to
             point to another, but you must be careful not to create a
             loop.
-
-            <remark role="todo">
-              Colourful but not very professional. Rewrite or cut.
-            </remark>
-
-
-
-            <remark>
-              You know and have heard the screeching of audio feedback?
-              You know what you see visually when you place two mirrors
-              in front of each other, how the reflection continues for
-              eternity? Well, need we say more?!
-            </remark>
           </para>
         </listitem>
 

Modified: trunk/refman-5.1/storage-engines.xml
===================================================================
--- trunk/refman-5.1/storage-engines.xml	2006-01-12 20:22:51 UTC (rev 782)
+++ trunk/refman-5.1/storage-engines.xml	2006-01-12 21:21:19 UTC (rev 783)
@@ -326,11 +326,6 @@
     place and not that helpful.
   </remark>
 
-  <remark role="todo">
-    This behavior now may be "using the default storage engine" rather
-    than "using MyISAM", but when did that change?
-  </remark>
-
   <para>
     If you try to use a storage engine that is not compiled in or that
     is compiled in but deactivated, MySQL instead creates a table using
@@ -1007,20 +1002,21 @@
         <para>
           Static format is the default for <literal>MyISAM</literal>
           tables. It is used when the table contains no variable-length
-          columns (<literal>VARCHAR</literal>, <literal>BLOB</literal>,
-          or <literal>TEXT</literal>). Each row is stored using a fixed
+          columns (<literal>VARCHAR</literal>,
+          <literal>VARBINARY</literal>, <literal>BLOB</literal>, or
+          <literal>TEXT</literal>). Each row is stored using a fixed
           number of bytes.
         </para>
 
         <para>
           Of the three <literal>MyISAM</literal> storage formats, static
           format is the simplest and most secure (least subject to
-          corruption). It is also the fastest of the on-disk formats.
-          The speed comes from the easy way that rows in the data file
-          can be found on disk: When looking up a row based on a row
-          number in the index, multiply the row number by the row
-          length. Also, when scanning a table, it is very easy to read a
-          constant number of rows with each disk read operation.
+          corruption). It is also the fastest of the on-disk formats due
+          to the ease with which rows in the data file can be found on
+          disk: To look up a row based on a row number in the index,
+          multiply the row number by the row length to calculate the row
+          position. Also, when scanning a table, it is very easy to read
+          a constant number of rows with each disk read operation.
         </para>
 
         <para>
@@ -1077,7 +1073,7 @@
 
           <listitem>
             <para>
-              Usually require more disk space than for dynamic-format
+              Usually require more disk space than dynamic-format
               tables.
             </para>
           </listitem>
@@ -1102,16 +1098,17 @@
         <para>
           Dynamic storage format is used if a <literal>MyISAM</literal>
           table contains any variable-length columns
-          (<literal>VARCHAR</literal>, <literal>BLOB</literal>, or
-          <literal>TEXT</literal>), or if the table was created with the
-          <literal>ROW_FORMAT=DYNAMIC</literal> option.
+          (<literal>VARCHAR</literal>, <literal>VARBINARY</literal>,
+          <literal>BLOB</literal>, or <literal>TEXT</literal>), or if
+          the table was created with the
+          <literal>ROW_FORMAT=DYNAMIC</literal> table option.
         </para>
 
         <para>
-          This format is a little more complex because each row has a
-          header that indicates how long it is. One row can also end up
-          at more than one location when it is made longer as a result
-          of an update.
+          Dynamic format is a little more complex than static format
+          because each row has a header that indicates how long it is. A
+          row can become fragmented (stored in non-contiguous pieces)
+          when it is made longer as a result of an update.
         </para>
 
         <indexterm>
@@ -1121,7 +1118,7 @@
 
         <para>
           You can use <literal>OPTIMIZE TABLE</literal> or
-          <command>myisamchk</command> to defragment a table. If you
+          <command>myisamchk -r</command> to defragment a table. If you
           have fixed-length columns that you access or change frequently
           in a table that also contains some variable-length columns, it
           might be a good idea to move the variable-length columns to
@@ -1179,8 +1176,8 @@
           <listitem>
             <para>
               More difficult than static-format tables to reconstruct
-              after a crash, because a row may be fragmented into many
-              pieces and a link (fragment) may be missing.
+              after a crash, because rows may be fragmented into many
+              pieces and links (fragments) may be missing.
             </para>
           </listitem>
 
@@ -1206,7 +1203,8 @@
               enlargement probably goes in the same link. If not,
               another link is created. You can find the number of links
               using <command>myisamchk -ed</command>. All links may be
-              removed with <command>myisamchk -r</command>.
+              removed with <literal>OPTIMIZE TABLE</literal> or
+              <command>myisamchk -r</command>.
             </para>
           </listitem>
 
@@ -1239,11 +1237,7 @@
         <para>
           Compressed storage format is a read-only format that is
           generated with the <command>myisampack</command> tool.
-        </para>
-
-        <para>
-          All MySQL distributions include <command>myisampack</command>
-          by default. Compressed tables can be uncompressed with
+          Compressed tables can be uncompressed with
           <command>myisamchk</command>.
         </para>
 
@@ -1264,9 +1258,9 @@
           <listitem>
             <para>
               Each row is compressed separately, so there is very little
-              access overhead. The header for a row takes up 1 to 3
-              bytes depending on the biggest row in the table. Each
-              column is compressed differently. There is usually a
+              access overhead. The header for a row takes up one to
+              three bytes depending on the biggest row in the table.
+              Each column is compressed differently. There is usually a
               different Huffman tree for each column. Some of the
               compression types are:
             </para>
@@ -1322,7 +1316,7 @@
 
           <listitem>
             <para>
-              Can handle fixed-length or dynamic-length rows.
+              Can be used for fixed-length or dynamic-length rows.
             </para>
           </listitem>
 
@@ -1339,7 +1333,8 @@
       <para>
         The file format that MySQL uses to store data has been
         extensively tested, but there are always circumstances that may
-        cause database tables to become corrupted.
+        cause database tables to become corrupted. The following
+        discussion describes how this can happen and how to handle it.
       </para>
 
       <section id="corrupted-myisam-tables">
@@ -1364,7 +1359,7 @@
 
           <listitem>
             <para>
-              Unexpected computer shutdown occurs (for example, the
+              An unexpected computer shutdown occurs (for example, the
               computer is turned off).
             </para>
           </listitem>
@@ -1378,8 +1373,8 @@
           <listitem>
             <para>
               You are using an external program (such as
-              <command>myisamchk</command>) on a table that is being
-              modified by the server at the same time.
+              <command>myisamchk</command>) to modify a table that is
+              being modified by the server at the same time.
             </para>
           </listitem>
 
@@ -1412,7 +1407,7 @@
           <listitem>
             <para>
               Queries don't find rows in the table or return incomplete
-              data.
+              results.
             </para>
           </listitem>
 
@@ -1451,8 +1446,8 @@
         <title>&title-myisam-table-close;</title>
 
         <para>
-          Each <literal>MyISAM</literal> index
-          (<filename>.MYI</filename>) file has a counter in the header
+          Each <literal>MyISAM</literal> index file
+          (<filename>.MYI</filename> file) has a counter in the header
           that can be used to check whether a table has been closed
           properly. If you get the following warning from <literal>CHECK
           TABLE</literal> or <command>myisamchk</command>, it means that
@@ -1489,10 +1484,10 @@
 
           <listitem>
             <para>
-              When the last instance of a table is closed (because of a
-              <literal>FLUSH TABLES</literal> operation or because there
-              isn't room in the table cache), the counter is decremented
-              if the table has been updated at any point.
+              When the last instance of a table is closed (because a
+              <literal>FLUSH TABLES</literal> operation was performed or
+              because there is no room in the table cache), the counter
+              is decremented if the table has been updated at any point.
             </para>
           </listitem>
 
@@ -1522,9 +1517,9 @@
 
           <listitem>
             <para>
-              The <literal>MyISAM</literal> tables are copied without
-              first issuing <literal>LOCK TABLES</literal> and
-              <literal>FLUSH TABLES</literal>.
+              A <literal>MyISAM</literal> table is copied without first
+              issuing <literal>LOCK TABLES</literal> and <literal>FLUSH
+              TABLES</literal>.
             </para>
           </listitem>
 
@@ -1556,7 +1551,7 @@
               although you might get the warning from other servers.
               However, <literal>REPAIR TABLE</literal> should be avoided
               because when one server replaces the data file with a new
-              one, this is not signaled to the other servers.
+              one, this is not known to the other servers.
             </para>
 
             <para>
@@ -1618,10 +1613,11 @@
       <literal>MRG_MyISAM</literal> engine, is a collection of identical
       <literal>MyISAM</literal> tables that can be used as one.
       <quote>Identical</quote> means that all tables have identical
-      column and index information. You cannot merge tables in which the
-      columns are listed in a different order, do not have exactly the
-      same columns, or have the indexes in different order. However, any
-      or all of the tables can be compressed with
+      column and index information. You cannot merge
+      <literal>MyISAM</literal> tables in which the columns are listed
+      in a different order, do not have exactly the same columns, or
+      have the indexes in different order. However, any or all of the
+      <literal>MyISAM</literal> tables can be compressed with
       <command>myisampack</command>. See <xref linkend="myisampack"/>.
       Differences in table options such as
       <literal>AVG_ROW_LENGTH</literal>, <literal>MAX_ROWS</literal>, or
@@ -1642,10 +1638,11 @@
 
     <para>
       You can use <literal>SELECT</literal>, <literal>DELETE</literal>,
-      <literal>UPDATE</literal>, and <literal>INSERT</literal> on the
-      collection of tables. You must have <literal>SELECT</literal>,
-      <literal>UPDATE</literal>, and <literal>DELETE</literal>
-      privileges on the tables that you map to a
+      <literal>UPDATE</literal>, and <literal>INSERT</literal> on
+      <literal>MERGE</literal> tables. You must have
+      <literal>SELECT</literal>, <literal>UPDATE</literal>, and
+      <literal>DELETE</literal> privileges on the
+      <literal>MyISAM</literal> tables that you map to a
       <literal>MERGE</literal> table.
     </para>
 
@@ -1656,19 +1653,19 @@
     </para>
 
     <para>
-      When you create a <literal>MERGE</literal> table, you must specify
-      a
+      To create a <literal>MERGE</literal> table, you must specify a
       <literal>UNION=(<replaceable>list-of-tables</replaceable>)</literal>
-      clause that indicates which tables you want to use as one. You can
-      optionally specify an <literal>INSERT_METHOD</literal> option if
-      you want inserts for the <literal>MERGE</literal> table to take
-      place in the first or last table of the <literal>UNION</literal>
-      list. Use a value of <literal>FIRST</literal> or
-      <literal>LAST</literal> to cause inserts to be made in the first
-      or last table, respectively. If you do not specify an
-      <literal>INSERT_METHOD</literal> option or if you specify it with
-      a value of <literal>NO</literal>, attempts to insert rows into the
-      <literal>MERGE</literal> table result in an error.
+      clause that indicates which <literal>MyISAM</literal> tables you
+      want to use as one. You can optionally specify an
+      <literal>INSERT_METHOD</literal> option if you want inserts for
+      the <literal>MERGE</literal> table to take place in the first or
+      last table of the <literal>UNION</literal> list. Use a value of
+      <literal>FIRST</literal> or <literal>LAST</literal> to cause
+      inserts to be made in the first or last table, respectively. If
+      you do not specify an <literal>INSERT_METHOD</literal> option or
+      if you specify it with a value of <literal>NO</literal>, attempts
+      to insert rows into the <literal>MERGE</literal> table result in
+      an error.
     </para>
 
     <para>
@@ -1701,12 +1698,12 @@
     </para>
 
     <para>
-      Note that the <literal>a</literal> column is indexed in the
-      <literal>MERGE</literal> table, but is not declared as a
-      <literal>PRIMARY KEY</literal> as it is in the underlying
-      <literal>MyISAM</literal> tables. This is necessary because a
-      <literal>MERGE</literal> table cannot enforce uniqueness over the
-      set of underlying tables.
+      Note that the <literal>a</literal> column is indexed as a
+      <literal>PRIMARY KEY</literal> in the underlying
+      <literal>MyISAM</literal> tables, but not in the
+      <literal>MERGE</literal> table. There it is indexed but not as a
+      <literal>PRIMARY KEY</literal> because a <literal>MERGE</literal>
+      table cannot enforce uniqueness over the set of underlying tables.
     </para>
 
     <para>
@@ -1741,8 +1738,8 @@
 
     <para>
       To remap a <literal>MERGE</literal> table to a different
-      collection of <literal>MyISAM</literal> tables, you can perform
-      one of the following:
+      collection of <literal>MyISAM</literal> tables, you can use one of
+      the following methods:
     </para>
 
     <itemizedlist>
@@ -1832,8 +1829,8 @@
 
       <listitem>
         <para>
-          If you have a set of tables that you join as a big table on
-          demand or batch, you should instead create a
+          If you have a set of tables from which you create a large
+          table on demand, you should instead create a
           <literal>MERGE</literal> table on them on demand. This is much
           faster and saves a lot of disk space.
         </para>
@@ -1888,8 +1885,8 @@
       <listitem>
         <para>
           If the <literal>MERGE</literal> table is non-temporary, all
-          underlying <literal>MyISAM</literal> tables have to be
-          permanent, too. If the <literal>MERGE</literal> table is
+          underlying <literal>MyISAM</literal> tables must be
+          non-temporary, too. If the <literal>MERGE</literal> table is
           temporary, the <literal>MyISAM</literal> tables can be any mix
           of temporary and non-temporary.
         </para>
@@ -1899,7 +1896,7 @@
         <para>
           <literal>MERGE</literal> tables use more file descriptors. If
           10 clients are using a <literal>MERGE</literal> table that
-          maps to 10 tables, the server uses (10*10) + 10 file
+          maps to 10 tables, the server uses (10 &times; 10) + 10 file
           descriptors. (10 data file descriptors for each of the 10
           clients, and 10 index file descriptors shared among the
           clients.)
@@ -1911,7 +1908,7 @@
           Key reads are slower. When you read a key, the
           <literal>MERGE</literal> storage engine needs to issue a read
           on all underlying tables to check which one most closely
-          matches the given key. If you then do a read-next, the
+          matches the given key. To read the next key, the
           <literal>MERGE</literal> storage engine needs to search the
           read buffers to find the next key. Only when one key buffer is
           used up does the storage engine need to read the next key
@@ -1925,6 +1922,22 @@
 
     </itemizedlist>
 
+    <para>
+      <emphasis role="bold">Additional resources</emphasis>
+    </para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>
+          A forum dedicated to the <literal>MERGE</literal> storage
+          engine is available at
+          <ulink url="&base-url-forum-list;?93"/>.
+        </para>
+      </listitem>
+
+    </itemizedlist>
+
     <section id="merge-table-problems">
 
       <title>&title-merge-table-problems;</title>
@@ -1942,8 +1955,8 @@
             <literal>MERGE</literal> table to another storage engine,
             the mapping to the underlying tables is lost. Instead, the
             rows from the underlying <literal>MyISAM</literal> tables
-            are copied into the altered table, which is then assigned
-            the new type.
+            are copied into the altered table, which then uses the
+            specified storage engine.
           </para>
         </listitem>
 
@@ -1964,22 +1977,34 @@
             open <literal>MERGE</literal> table. If you do so, the
             <literal>MERGE</literal> table may still refer to the
             original table, which yields unexpected results. The easiest
-            way to work around this deficiency is to issue a
+            way to work around this deficiency is to ensure that no
+            <literal>MERGE</literal> tables remain open by issuing a
             <literal>FLUSH TABLES</literal> statement prior to
-            performing any of these operations to ensure that no
-            <literal>MERGE</literal> tables remain open.
+            performing any of those operations.
           </para>
         </listitem>
 
         <listitem>
           <para>
-            A <literal>MERGE</literal> table cannot maintain
-            <literal>UNIQUE</literal> constraints over the whole table.
-            When you perform an <literal>INSERT</literal>, the data goes
-            into the first or last <literal>MyISAM</literal> table
-            (depending on the value of the
-            <literal>INSERT_METHOD</literal> option). MySQL ensures that
-            unique key values remain unique within that
+            <literal>DROP TABLE</literal> on a table that is in use by a
+            <literal>MERGE</literal> table does not work on Windows
+            because the <literal>MERGE</literal> storage engine's table
+            mapping is hidden from the upper layer of MySQL. Windows
+            does not allow open files to be deleted, so you first must
+            flush all <literal>MERGE</literal> tables (with
+            <literal>FLUSH TABLES</literal>) or drop the
+            <literal>MERGE</literal> table before dropping the table.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            A <literal>MERGE</literal> table cannot maintain uniqueness
+            constraints over the entire table. When you perform an
+            <literal>INSERT</literal>, the data goes into the first or
+            last <literal>MyISAM</literal> table (depending on the value
+            of the <literal>INSERT_METHOD</literal> option). MySQL
+            ensures that unique key values remain unique within that
             <literal>MyISAM</literal> table, but not across all the
             tables in the collection.
           </para>
@@ -2017,37 +2042,8 @@
           </para>
         </listitem>
 
-        <listitem>
-          <para>
-            <literal>DROP TABLE</literal> on a table that is in use by a
-            <literal>MERGE</literal> table does not work on Windows
-            because the <literal>MERGE</literal> storage engine's table
-            mapping is hidden from the upper layer of MySQL. Windows
-            does not allow the deletion of open files, so you first must
-            flush all <literal>MERGE</literal> tables (with
-            <literal>FLUSH TABLES</literal>) or drop the
-            <literal>MERGE</literal> table before dropping the table.
-          </para>
-        </listitem>
-
       </itemizedlist>
 
-      <para>
-        <emphasis role="bold">Additional resources</emphasis>
-      </para>
-
-      <itemizedlist>
-
-        <listitem>
-          <para>
-            A forum dedicated to the <literal>MERGE</literal> storage
-            engine is available at
-            <ulink url="&base-url-forum-list;?93"/>.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
     </section>
 
   </section>
@@ -2089,7 +2085,7 @@
 
     <para>
       The <literal>MEMORY</literal> storage engine creates tables with
-      contents that are stored in memory. These were formerly known as
+      contents that are stored in memory. Formerly, these were known as
       <literal>HEAP</literal> tables. <literal>MEMORY</literal> is the
       preferred term, although <literal>HEAP</literal> remains supported
       for backward compatibility.
@@ -2103,8 +2099,9 @@
     </para>
 
     <para>
-      To specify explicitly that you want a <literal>MEMORY</literal>
-      table, indicate that with an <literal>ENGINE</literal> option:
+      To specify explicitly that you want to create a
+      <literal>MEMORY</literal> table, indicate that with an
+      <literal>ENGINE</literal> table option:
     </para>
 
 <programlisting>
@@ -2119,11 +2116,11 @@
     </para>
 
     <para>
-      As indicated by their name, <literal>MEMORY</literal> tables are
-      stored in memory and use hash indexes by default. This makes them
-      very fast, and very useful for creating temporary tables. However,
-      when the server shuts down, all data stored in
-      <literal>MEMORY</literal> tables is lost. The tables themselves
+      As indicated by the name, <literal>MEMORY</literal> tables are
+      stored in memory. They use hash indexes by default, which makes
+      them very fast, and very useful for creating temporary tables.
+      However, when the server shuts down, all rows stored in
+      <literal>MEMORY</literal> tables are lost. The tables themselves
       continue to exist because their definitions are stored in
       <filename>.frm</filename> files on disk, but they are empty when
       the server restarts.
@@ -2203,14 +2200,6 @@
 
       <listitem>
         <para>
-          You can also use <literal>INSERT DELAYED</literal> with
-          <literal>MEMORY</literal> tables. See
-          <xref linkend="insert-delayed"/>.
-        </para>
-      </listitem>
-
-      <listitem>
-        <para>
           If you have a hash index on a <literal>MEMORY</literal> table
           that has a high degree of key duplication (many index entries
           containing the same value), updates to the table that affect
@@ -2224,36 +2213,49 @@
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> tables use a fixed row length
-          format.
+          Columns that are indexed can contain <literal>NULL</literal>
+          values.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> doesn't support
+          <literal>MEMORY</literal> tables use a fixed-length row
+          storage format.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          <literal>MEMORY</literal> tables cannot contain
           <literal>BLOB</literal> or <literal>TEXT</literal> columns.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> includes support for both
-          <literal>AUTO_INCREMENT</literal> columns and indexes on
-          columns that can contain <literal>NULL</literal> values.
+          <literal>MEMORY</literal> includes support for
+          <literal>AUTO_INCREMENT</literal> columns.
         </para>
       </listitem>
 
       <listitem>
         <para>
-          <literal>MEMORY</literal> tables are shared between all
-          clients (just like any other non-<literal>TEMPORARY</literal>
-          table).
+          You can use <literal>INSERT DELAYED</literal> with
+          <literal>MEMORY</literal> tables. See
+          <xref linkend="insert-delayed"/>.
         </para>
       </listitem>
 
       <listitem>
         <para>
+          <literal>MEMORY</literal> tables are shared among all clients
+          (just like any other non-<literal>TEMPORARY</literal> table).
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
           <literal>MEMORY</literal> table contents are stored in memory,
           which is a property that <literal>MEMORY</literal> tables
           share with internal tables that the server creates on the fly
@@ -2302,8 +2304,8 @@
           To free memory used by a <literal>MEMORY</literal> table when
           you no longer require its contents, you should execute
           <literal>DELETE FROM</literal> or <literal>TRUNCATE
-          TABLE</literal>, or remove the table altogether (using
-          <literal>DROP TABLE</literal>).
+          TABLE</literal>, or remove the table altogether using
+          <literal>DROP TABLE</literal>.
         </para>
       </listitem>
 
@@ -2347,8 +2349,8 @@
         </para>
 
 <programlisting>
-SUM_OVER_ALL_BTREE_KEYS(<replaceable>max_length_of_key</replaceable> + sizeof(char*) * 4)
-+ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) * 2)
+SUM_OVER_ALL_BTREE_KEYS(<replaceable>max_length_of_key</replaceable> + sizeof(char*) &times; 4)
++ SUM_OVER_ALL_HASH_KEYS(sizeof(char*) &times; 2)
 + ALIGN(<replaceable>length_of_row</replaceable>+1, sizeof(char*))
 </programlisting>
 
@@ -2414,18 +2416,18 @@
     <para>
       Sleepycat Software has provided MySQL with the Berkeley DB
       transactional storage engine. This storage engine typically is
-      called <literal>BDB</literal> for short. Support for the
-      <literal>BDB</literal> storage engine is included in MySQL source
-      distributions is activated in MySQL-Max binary distributions.
+      called <literal>BDB</literal> for short. <literal>BDB</literal>
+      tables may have a greater chance of surviving crashes and are also
+      capable of <literal>COMMIT</literal> and
+      <literal>ROLLBACK</literal> operations on transactions.
     </para>
 
     <para>
-      <literal>BDB</literal> tables may have a greater chance of
-      surviving crashes and are also capable of
-      <literal>COMMIT</literal> and <literal>ROLLBACK</literal>
-      operations on transactions. The MySQL source distribution comes
-      with a <literal>BDB</literal> distribution that is patched to make
-      it work with MySQL. You cannot use a non-patched version of
+      Support for the <literal>BDB</literal> storage engine is included
+      in MySQL source distributions is activated in MySQL-Max binary
+      distributions. The MySQL source distribution comes with a
+      <literal>BDB</literal> distribution that is patched to make it
+      work with MySQL. You cannot use a non-patched version of
       <literal>BDB</literal> with MySQL.
     </para>
 
@@ -2445,8 +2447,8 @@
       When it comes to support for any problems involving
       <literal>BDB</literal> tables, we are committed to helping our
       users locate the problem and create reproducible test cases. Any
-      such test case is forwarded to Sleepycat, who in turn help us find
-      and fix the problem. As this is a two-stage operation, any
+      such test case is forwarded to Sleepycat, which in turn helps us
+      find and fix the problem. As this is a two-stage operation, any
       problems with <literal>BDB</literal> tables may take a little
       longer for us to fix than for other storage engines. However, we
       anticipate no significant difficulties with this procedure because
@@ -2515,8 +2517,9 @@
       </itemizedlist>
 
       <para>
-        <literal>BDB</literal> does <emphasis>not</emphasis> work with
-        the following operating systems:
+        The <literal>BDB</literal> storage engine does
+        <emphasis>not</emphasis> work with the following operating
+        systems:
       </para>
 
       <itemizedlist>
@@ -2561,8 +2564,9 @@
       <para>
         If you build MySQL from source with support for
         <literal>BDB</literal> tables, but the following error occurs
-        when you start <command>mysqld</command>, it means
-        <literal>BDB</literal> is not supported for your architecture:
+        when you start <command>mysqld</command>, it means that the
+        <literal>BDB</literal> storage engine is not supported for your
+        architecture:
       </para>
 
 <programlisting>
@@ -2572,8 +2576,8 @@
 
       <para>
         In this case, you must rebuild MySQL without
-        <literal>BDB</literal> table support or start the server with
-        the <option>--skip-bdb</option> option.
+        <literal>BDB</literal> support or start the server with the
+        <option>--skip-bdb</option> option.
       </para>
 
     </section>
@@ -2604,8 +2608,8 @@
 </programlisting>
 
       <para>
-        For more information, see <xref linkend="installing-binary"/>,
-        <xref linkend="mysqld-max"/>, and
+        For more information, <xref linkend="mysqld-max"/>, see
+        <xref linkend="installing-binary"/>, and
         <xref linkend="installing-source"/>.
       </para>
 
@@ -2618,7 +2622,8 @@
       <para>
         The following options to <command>mysqld</command> can be used
         to change the behavior of the <literal>BDB</literal> storage
-        engine:
+        engine. For more information, see
+        <xref linkend="server-options"/>.
       </para>
 
       <itemizedlist>
@@ -2642,7 +2647,7 @@
 
           <para>
             The base directory for <literal>BDB</literal> tables. This
-            should be the same directory you use for
+            should be the same directory that you use for
             <option>--datadir</option>.
           </para>
         </listitem>
@@ -2746,7 +2751,7 @@
 
           <para>
             Synchronously flush the <literal>BDB</literal> logs. This
-            option is enabled by default; use
+            option is enabled by default. Use
             <option>--skip-sync-bdb-logs</option> to disable it.
           </para>
         </listitem>
@@ -2754,42 +2759,12 @@
       </itemizedlist>
 
       <para>
-        See <xref linkend="server-options"/>.
-      </para>
-
-      <remark>
-        Seems a bit odd to have a single-item list here... This
-        bsaically just repeats what's show about 2 paras below, so I'm
-        commenting it out for now
-      </remark>
-
-<!--
-   <para>
-    The following system variable affects the behavior of
-    <literal>BDB</literal> tables:
-   </para>
-
-   <itemizedlist>
-
-    <listitem><para>
-     <literal>bdb_max_lock</literal>
-    </para>
-
-    <para>
-     The maximum number of locks that can be active on a
-     <literal>BDB</literal> table.
-    </para></listitem>
-
-   </itemizedlist>
--->
-
-      <para>
         If you use the <option>--skip-bdb</option> option, MySQL does
         not initialize the Berkeley DB library and this saves a lot of
         memory. However, if you use this option, you cannot use
         <literal>BDB</literal> tables. If you try to create a
-        <literal>BDB</literal> table, MySQL creates a
-        <literal>MyISAM</literal> table instead.
+        <literal>BDB</literal> table, MySQL uses the default storage
+        engine instead.
       </para>
 
       <para>
@@ -3656,19 +3631,6 @@
             It is possible for one <literal>FEDERATED</literal> table to
             point to another, but you must be careful not to create a
             loop.
-
-            <remark role="todo">
-              Colourful but not very professional. Rewrite or cut.
-            </remark>
-
-
-
-            <remark>
-              You know and have heard the screeching of audio feedback?
-              You know what you see visually when you place two mirrors
-              in front of each other, how the reflection continues for
-              eternity? Well, need we say more?!
-            </remark>
           </para>
         </listitem>
 

Thread
svn commit - mysqldoc@docsrva: r783 - in trunk: . refman-4.1 refman-5.0 refman-5.1paul12 Jan