List:Commits« Previous MessageNext Message »
From:paul Date:June 21 2008 5:22pm
Subject:svn commit - mysqldoc@docsrva: r11000 - in trunk: . refman-4.1 refman-5.0 refman-5.1 refman-6.0
View as plain text  
Author: paul
Date: 2008-06-21 19:22:27 +0200 (Sat, 21 Jun 2008)
New Revision: 11000

Log:
 r32158@frost:  paul | 2008-06-21 12:19:13 -0500
 Fix documentation bug:
 Bug #36286	innodb_lock_wait_timeout documentation unclear


Modified:
   trunk/refman-4.1/se-innodb-core.xml
   trunk/refman-5.0/se-innodb-core.xml
   trunk/refman-5.1/se-innodb-core.xml
   trunk/refman-6.0/se-innodb-core.xml

Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 4767c598-dc10-0410-bea0-d01b485662eb:/mysqldoc-local/mysqldoc/trunk:35828
7d8d2c4e-af1d-0410-ab9f-b038ce55645b:/mysqldoc-local/mysqldoc:32157
b5ec3a16-e900-0410-9ad2-d183a3acac99:/mysqldoc-local/mysqldoc/trunk:14218
bf112a9c-6c03-0410-a055-ad865cd57414:/mysqldoc-local/mysqldoc/trunk:31778
   + 4767c598-dc10-0410-bea0-d01b485662eb:/mysqldoc-local/mysqldoc/trunk:35828
7d8d2c4e-af1d-0410-ab9f-b038ce55645b:/mysqldoc-local/mysqldoc:32158
b5ec3a16-e900-0410-9ad2-d183a3acac99:/mysqldoc-local/mysqldoc/trunk:14218
bf112a9c-6c03-0410-a055-ad865cd57414:/mysqldoc-local/mysqldoc/trunk:31778


Modified: trunk/refman-4.1/se-innodb-core.xml
===================================================================
--- trunk/refman-4.1/se-innodb-core.xml	2008-06-21 17:22:21 UTC (rev 10999)
+++ trunk/refman-4.1/se-innodb-core.xml	2008-06-21 17:22:27 UTC (rev 11000)
Changed blocks: 2, Lines Added: 25, Lines Deleted: 11; 2821 bytes

@@ -1447,14 +1447,21 @@
 
         <para>
           The timeout in seconds an <literal>InnoDB</literal>
-          transaction may wait for a lock before being rolled back.
-          <literal>InnoDB</literal> automatically detects transaction
-          deadlocks in its own lock table and rolls back the
-          transaction. The default is 50 seconds. A lock wait for a
-          MySQL table lock does not happen inside
+          transaction may wait for a lock before being rolled back. The
+          default is 50 seconds.
+        </para>
+
+        <para>
+          A lock wait for a MySQL table lock does not happen inside
           <literal>InnoDB</literal>, and this timeout does not apply to
-          that wait.
+          waits for table locks.
         </para>
+
+        <para>
+          <literal>InnoDB</literal> does detect transaction deadlocks in
+          its own lock table immediately and rolls back one transaction.
+          This timeout does not apply to such a wait.
+        </para>
       </listitem>
 
       <listitem>

@@ -1483,15 +1490,22 @@
           <literal>InnoDB</literal> performs row-level locking in such a
           way that when it searches or scans a table index, it sets
           shared or exclusive locks on any index records it encounters.
-          Thus, the row-level locks are actually index record locks. The
-          locks that <literal>InnoDB</literal> sets on index records
+          Thus, the row-level locks are actually index record locks.
+        </para>
+
+        <para>
+          The locks that <literal>InnoDB</literal> sets on index records
           also affect the <quote>gap</quote> preceding that index
           record. If a user has a shared or exclusive lock on record
           <emphasis>R</emphasis> in an index, another user cannot insert
           a new index record immediately before <emphasis>R</emphasis>
-          in the order of the index. Enabling this variable causes
-          <literal>InnoDB</literal> not to use next-key locking in
-          searches or index scans. Next-key locking is still used to
+          in the order of the index.
+        </para>
+
+        <para>
+          Enabling <literal>innodb_locks_unsafe_for_binlog</literal>
+          causes <literal>InnoDB</literal> not to use next-key locking
+          in searches or index scans. Next-key locking is still used to
           ensure foreign key constraints and duplicate key checking.
           Note that enabling this variable may cause phantom problems:
           Suppose that you want to read and lock all children from the


Modified: trunk/refman-5.0/se-innodb-core.xml
===================================================================
--- trunk/refman-5.0/se-innodb-core.xml	2008-06-21 17:22:21 UTC (rev 10999)
+++ trunk/refman-5.0/se-innodb-core.xml	2008-06-21 17:22:27 UTC (rev 11000)
Changed blocks: 3, Lines Added: 48, Lines Deleted: 15; 4453 bytes

@@ -1411,14 +1411,40 @@
 
         <para>
           The timeout in seconds an <literal>InnoDB</literal>
-          transaction may wait for a lock before being rolled back.
-          <literal>InnoDB</literal> automatically detects transaction
-          deadlocks in its own lock table and rolls back the
-          transaction. The default is 50 seconds. A lock wait for a
-          MySQL table lock does not happen inside
-          <literal>InnoDB</literal>, and this timeout does not apply to
-          that wait.
+          transaction may wait for a row lock before giving up. The
+          default is 50 seconds. When trying to access a row that is
+          locked by another <literal>InnoDB</literal> transaction a
+          connection will hang for at most this many seconds before
+          issuing the following error:
         </para>
+
+<programlisting>
+ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
+</programlisting>
+
+        <para>
+          In this case, the current statement is not executed. The
+          current transaction is <emphasis>not</emphasis> rolled back.
+          (Until MySQL 5.0.13 <literal>InnoDB</literal> rolled back the
+          entire transaction if a lock wait timeout happened. You can
+          restore this behavior by starting the server with the
+          <option>--innodb_rollback_on_timeout</option> option,
+          available as of MySQL 5.0.32. See also
+          <xref linkend="innodb-error-handling"/>.)
+        </para>
+
+        <para>
+          <literal>innodb_lock_wait_timeout</literal> applies to
+          <literal>InnoDB</literal> row locks only. A MySQL table lock
+          does not happen inside <literal>InnoDB</literal> and this
+          timeout does not apply to waits for table locks.
+        </para>
+
+        <para>
+          <literal>InnoDB</literal> does detect transaction deadlocks in
+          its own lock table immediately and rolls back one transaction.
+          This timeout does not apply to such a wait.
+        </para>
       </listitem>
 
       <listitem>

@@ -1447,15 +1473,22 @@
           <literal>InnoDB</literal> performs row-level locking in such a
           way that when it searches or scans a table index, it sets
           shared or exclusive locks on any index records it encounters.
-          Thus, the row-level locks are actually index record locks. The
-          locks that <literal>InnoDB</literal> sets on index records
+          Thus, the row-level locks are actually index record locks.
+        </para>
+
+        <para>
+          The locks that <literal>InnoDB</literal> sets on index records
           also affect the <quote>gap</quote> preceding that index
           record. If a user has a shared or exclusive lock on record
-          <emphasis>R</emphasis> in an index, another user cannot insert
-          a new index record immediately before <emphasis>R</emphasis>
-          in the order of the index. Enabling this variable causes
-          <literal>InnoDB</literal> not to use next-key locking in
-          searches or index scans. Next-key locking is still used to
+          <literal>R</literal> in an index, another user cannot insert
+          a new index record immediately before <literal>R</literal>
+          in the order of the index.
+        </para>
+
+        <para>
+          Enabling <literal>innodb_locks_unsafe_for_binlog</literal>
+          causes <literal>InnoDB</literal> not to use next-key locking
+          in searches or index scans. Next-key locking is still used to
           ensure foreign key constraints and duplicate key checking.
           Note that enabling this variable may cause phantom problems:
           Suppose that you want to read and lock all children from the

@@ -6301,7 +6334,7 @@
           if a lock wait timeout happened. You can restore this behavior
           by starting the server with the
           <option>--innodb_rollback_on_timeout</option> option,
-          available as of MySQL 5.0.32). You should normally retry the
+          available as of MySQL 5.0.32.) You should normally retry the
           statement if using the current behavior or the entire
           transaction if using the old behavior.
         </para>


Modified: trunk/refman-5.1/se-innodb-core.xml
===================================================================
--- trunk/refman-5.1/se-innodb-core.xml	2008-06-21 17:22:21 UTC (rev 10999)
+++ trunk/refman-5.1/se-innodb-core.xml	2008-06-21 17:22:27 UTC (rev 11000)
Changed blocks: 2, Lines Added: 43, Lines Deleted: 12; 3715 bytes

@@ -1454,14 +1454,38 @@
 
         <para>
           The timeout in seconds an <literal>InnoDB</literal>
-          transaction may wait for a lock before being rolled back.
-          <literal>InnoDB</literal> automatically detects transaction
-          deadlocks in its own lock table and rolls back the
-          transaction. The default is 50 seconds. A lock wait for a
-          MySQL table lock does not happen inside
-          <literal>InnoDB</literal>, and this timeout does not apply to
-          that wait.
+          transaction may wait for a row lock before giving up. The
+          default is 50 seconds. When trying to access a row that is
+          locked by another <literal>InnoDB</literal> transaction a
+          connection will hang for at most this many seconds before
+          issuing the following error:
         </para>
+
+<programlisting>
+ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
+</programlisting>
+
+        <para>
+          In this case, the current statement is not executed. The
+          current transaction is <emphasis>not</emphasis> rolled back.
+          (To have the entire transaction roll back, start the server
+          with the <option>--innodb_rollback_on_timeout</option> option,
+          available as of MySQL 5.1.15. See also
+          <xref linkend="innodb-error-handling"/>.)
+        </para>
+
+        <para>
+          <literal>innodb_lock_wait_timeout</literal> applies to
+          <literal>InnoDB</literal> row locks only. A MySQL table lock
+          does not happen inside <literal>InnoDB</literal> and this
+          timeout does not apply to waits for table locks.
+        </para>
+
+        <para>
+          <literal>InnoDB</literal> does detect transaction deadlocks in
+          its own lock table immediately and rolls back one transaction.
+          This timeout does not apply to such a wait.
+        </para>
       </listitem>
 
       <listitem>

@@ -1490,15 +1514,22 @@
           <literal>InnoDB</literal> performs row-level locking in such a
           way that when it searches or scans a table index, it sets
           shared or exclusive locks on any index records it encounters.
-          Thus, the row-level locks are actually index record locks. The
-          locks that <literal>InnoDB</literal> sets on index records
+          Thus, the row-level locks are actually index record locks.
+        </para>
+
+        <para>
+          The locks that <literal>InnoDB</literal> sets on index records
           also affect the <quote>gap</quote> preceding that index
           record. If a user has a shared or exclusive lock on record
           <emphasis>R</emphasis> in an index, another user cannot insert
           a new index record immediately before <emphasis>R</emphasis>
-          in the order of the index. Enabling this variable causes
-          <literal>InnoDB</literal> not to use next-key locking in
-          searches or index scans. Next-key locking is still used to
+          in the order of the index.
+        </para>
+
+        <para>
+          Enabling <literal>innodb_locks_unsafe_for_binlog</literal>
+          causes <literal>InnoDB</literal> not to use next-key locking
+          in searches or index scans. Next-key locking is still used to
           ensure foreign key constraints and duplicate key checking.
           Note that enabling this variable may cause phantom problems:
           Suppose that you want to read and lock all children from the


Modified: trunk/refman-6.0/se-innodb-core.xml
===================================================================
--- trunk/refman-6.0/se-innodb-core.xml	2008-06-21 17:22:21 UTC (rev 10999)
+++ trunk/refman-6.0/se-innodb-core.xml	2008-06-21 17:22:27 UTC (rev 11000)
Changed blocks: 2, Lines Added: 42, Lines Deleted: 12; 3675 bytes

@@ -1388,14 +1388,37 @@
 
         <para>
           The timeout in seconds an <literal>InnoDB</literal>
-          transaction may wait for a lock before being rolled back.
-          <literal>InnoDB</literal> automatically detects transaction
-          deadlocks in its own lock table and rolls back the
-          transaction. The default is 50 seconds. A lock wait for a
-          MySQL table lock does not happen inside
-          <literal>InnoDB</literal>, and this timeout does not apply to
-          that wait.
+          transaction may wait for a row lock before giving up. The
+          default is 50 seconds. When trying to access a row that is
+          locked by another <literal>InnoDB</literal> transaction a
+          connection will hang for at most this many seconds before
+          issuing the following error:
         </para>
+
+<programlisting>
+ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
+</programlisting>
+
+        <para>
+          In this case, the current statement is not executed. The
+          current transaction is <emphasis>not</emphasis> rolled back.
+          (To have the entire transaction roll back, start the server
+          with the <option>--innodb_rollback_on_timeout</option> option.
+          See also <xref linkend="innodb-error-handling"/>.)
+        </para>
+
+        <para>
+          <literal>innodb_lock_wait_timeout</literal> applies to
+          <literal>InnoDB</literal> row locks only. A MySQL table lock
+          does not happen inside <literal>InnoDB</literal> and this
+          timeout does not apply to waits for table locks.
+        </para>
+
+        <para>
+          <literal>InnoDB</literal> does detect transaction deadlocks in
+          its own lock table immediately and rolls back one transaction.
+          This timeout does not apply to such a wait.
+        </para>
       </listitem>
 
       <listitem>

@@ -1424,15 +1447,22 @@
           <literal>InnoDB</literal> performs row-level locking in such a
           way that when it searches or scans a table index, it sets
           shared or exclusive locks on any index records it encounters.
-          Thus, the row-level locks are actually index record locks. The
-          locks that <literal>InnoDB</literal> sets on index records
+          Thus, the row-level locks are actually index record locks.
+        </para>
+
+        <para>
+          The locks that <literal>InnoDB</literal> sets on index records
           also affect the <quote>gap</quote> preceding that index
           record. If a user has a shared or exclusive lock on record
           <emphasis>R</emphasis> in an index, another user cannot insert
           a new index record immediately before <emphasis>R</emphasis>
-          in the order of the index. Enabling this variable causes
-          <literal>InnoDB</literal> not to use next-key locking in
-          searches or index scans. Next-key locking is still used to
+          in the order of the index.
+        </para>
+
+        <para>
+          Enabling <literal>innodb_locks_unsafe_for_binlog</literal>
+          causes <literal>InnoDB</literal> not to use next-key locking
+          in searches or index scans. Next-key locking is still used to
           ensure foreign key constraints and duplicate key checking.
           Note that enabling this variable may cause phantom problems:
           Suppose that you want to read and lock all children from the


Thread
svn commit - mysqldoc@docsrva: r11000 - in trunk: . refman-4.1 refman-5.0 refman-5.1 refman-6.0paul21 Jun