List:Commits« Previous MessageNext Message »
From:paul.dubois Date:April 20 2011 5:56pm
Subject:svn commit - mysqldoc@oter02: r25948 - in trunk: . dynamic-docs/changelog refman-5.1 refman-5.5 refman-5.6
View as plain text  
Author: pd221994
Date: 2011-04-20 19:56:51 +0200 (Wed, 20 Apr 2011)
New Revision: 25948

Log:
 r47262@dhcp-adc-twvpn-1-vpnpool-10-154-14-31:  paul | 2011-04-20 12:54:13 -0500
 Document bug fixes:
 BUG 11755431 - 47205: MAP 'REPAIR TABLE' TO RECREATE +ANALYZE FOR ENGINES NOT SUPPORTING NATIVE
 
 Also add workaround note to 5.1 upgrading section how to cope with failure
 of mysql_upgrade to repair InnoDB tables.


Modified:
   svk:merge
   trunk/dynamic-docs/changelog/mysqld-2.xml
   trunk/refman-5.1/installing-updowngrade.xml
   trunk/refman-5.5/sql-syntax-data-definition.xml
   trunk/refman-5.6/sql-syntax-data-definition.xml

Property changes on: trunk
___________________________________________________________________

Modified: svk:merge
===================================================================


Changed blocks: 0, Lines Added: 0, Lines Deleted: 0; 1277 bytes


Modified: trunk/dynamic-docs/changelog/mysqld-2.xml
===================================================================
--- trunk/dynamic-docs/changelog/mysqld-2.xml	2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/dynamic-docs/changelog/mysqld-2.xml	2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 110, Lines Deleted: 0; 3947 bytes

@@ -44403,4 +44403,114 @@
 
   </logentry>
 
+  <logentry entrytype="bug">
+
+    <tags>
+      <manual type="mysqlcheck"/>
+      <manual type="mysql_upgrade"/>
+      <manual type="CHECK TABLE"/>
+      <manual type="ALTER TABLE"/>
+    </tags>
+
+    <bugs>
+      <fixes bugid="47205"/>
+      <fixes bugid="11755431"/>
+    </bugs>
+
+    <versions>
+      <version ver="5.5.11"/>
+      <version ver="5.6.3"/>
+    </versions>
+
+    <message>
+
+      <para>
+        When used to upgrade tables, <command>mysqlcheck</command> (and
+        <command>mysql_upgrade</command>, which invokes
+        <command>mysqlcheck</command>) did not upgrade some tables for
+        which table repair was found to be necessary. In particular, it
+        failed to upgrade <literal role="se">InnoDB</literal> tables
+        that needed repair, leaving them in a nonupgraded state. This
+        occurred because:
+      </para>
+
+      <itemizedlist>
+
+        <listitem>
+          <para>
+            <command>mysqlcheck --check-upgrade ---auto-repair</command>
+            checks for tables that are incompatible with the current
+            version of MySQL. It does this by issuing the
+            <literal role="stmt" condition="check-table">CHECK TABLE ...
+            FOR UPGRADE</literal> statement and examining the result.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            For any table found to be incompatible,
+            <command>mysqlcheck</command> issues a
+            <literal role="stmt">REPAIR TABLE</literal> statement. But
+            this fails for storage engines such as
+            <literal role="se">InnoDB</literal> that do not support the
+            repair operation. Consequently, the table remains unchanged.
+          </para>
+        </listitem>
+
+      </itemizedlist>
+
+      <para>
+        To fix the problem, the following changes were made to
+        <literal role="stmt" condition="check-table">CHECK TABLE ... FOR
+        UPGRADE</literal> and <command>mysqlcheck</command>. Because
+        <command>mysql_upgrade</command> invokes
+        <command>mysqlcheck</command>, these changes also fix the
+        problem for <command>mysql_upgrade</command>.
+      </para>
+
+      <itemizedlist>
+
+        <listitem>
+          <para>
+            <literal role="stmt" condition="check-table">CHECK TABLE ...
+            FOR UPGRADE</literal> returns a different error if a table
+            needs repair but its storage engine does not support
+            <literal role="stmt">REPAIR TABLE</literal>:
+          </para>
+          <para>
+            Previous:
+          </para>
+          <para>
+<programlisting>
+Error: <literal>ER_TABLE_NEEDS_UPGRADE</literal>
+Table upgrade required. Please do "REPAIR TABLE `<replaceable>tbl_name</replaceable>`" or
+dump/reload to fix it!
+</programlisting>
+            Now:
+          </para>
+<programlisting>
+Error: <literal>ER_TABLE_NEEDS_REBUILD</literal>
+Table rebuild required. Please do "ALTER TABLE `<replaceable>tbl_name</replaceable>` FORCE" or
+dump/reload to fix it!
+</programlisting>
+        </listitem>
+
+        <listitem>
+          <para>
+            <command>mysqlcheck</command> recognizes the new error and
+            issues an <literal role="stmt" condition="alter-table">ALTER
+            TABLE ... FORCE</literal> statement. The
+            <literal>FORCE</literal> option for
+            <literal role="stmt">ALTER TABLE</literal> was recognized
+            but did nothing; now it is implemented and acts as a
+            <quote>null</quote> alter operation that rebuilds the table.
+          </para>
+        </listitem>
+
+      </itemizedlist>
+
+    </message>
+
+  </logentry>
+
 </changelog>


Modified: trunk/refman-5.1/installing-updowngrade.xml
===================================================================
--- trunk/refman-5.1/installing-updowngrade.xml	2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/refman-5.1/installing-updowngrade.xml	2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 22, Lines Deleted: 0; 1513 bytes

@@ -455,6 +455,28 @@
 
         <listitem>
           <para>
+            <emphasis role="bold">Known issue</emphasis>:
+            <command>mysql_upgrade</command> attempts to to upgrade
+            tables that are incompatible with the current version of
+            MySQL. (It invokes <command>mysqlcheck</command> to check
+            tables and, if necessary, repair them.) However this can
+            fail for storage engines that do not support
+            <replaceable role="stmt">REPAIR TABLE</replaceable>, such as
+            <literal role="se">InnoDB</literal>, and leave tables in a
+            nonupgradable state.
+          </para>
+
+          <para>
+            To work around this problem, use
+            <literal role="stmt" condition="alter-table">ALTER TABLE
+            <replaceable>tbl_name</replaceable> ENGINE=InnoDB</literal>
+            to perform a <quote>null</quote> alter operation that
+            rebuilds the table.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
             <emphasis role="bold">Known issue</emphasis>: After a binary
             upgrade to MySQL 5.1 from a MySQL 5.0 installation that
             contains <literal role="se">ARCHIVE</literal> tables:


Modified: trunk/refman-5.5/sql-syntax-data-definition.xml
===================================================================
--- trunk/refman-5.5/sql-syntax-data-definition.xml	2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/refman-5.5/sql-syntax-data-definition.xml	2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 9, Lines Deleted: 0; 844 bytes

@@ -786,6 +786,15 @@
     </para>
 
     <para>
+      As of MySQL 5.5.11, you can also use
+      <literal role="stmt" condition="alter-table">ALTER TABLE
+      <replaceable>tbl_name</replaceable> FORCE</literal> to perform a
+      <quote>null</quote> alter operation that rebuilds the table.
+      Previously the <literal>FORCE</literal> option was recognized but
+      ignored.
+    </para>
+
+    <para>
       For information on troubleshooting <literal role="stmt">ALTER
       TABLE</literal>, see <xref linkend="alter-table-problems"/>.
     </para>


Modified: trunk/refman-5.6/sql-syntax-data-definition.xml
===================================================================
--- trunk/refman-5.6/sql-syntax-data-definition.xml	2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/refman-5.6/sql-syntax-data-definition.xml	2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 9, Lines Deleted: 0; 843 bytes

@@ -787,6 +787,15 @@
     </para>
 
     <para>
+      As of MySQL 5.6.3, you can also use
+      <literal role="stmt" condition="alter-table">ALTER TABLE
+      <replaceable>tbl_name</replaceable> FORCE</literal> to perform a
+      <quote>null</quote> alter operation that rebuilds the table.
+      Previously the <literal>FORCE</literal> option was recognized but
+      ignored.
+    </para>
+
+    <para>
       For information on troubleshooting <literal role="stmt">ALTER
       TABLE</literal>, see <xref linkend="alter-table-problems"/>.
     </para>


Thread
svn commit - mysqldoc@oter02: r25948 - in trunk: . dynamic-docs/changelog refman-5.1 refman-5.5 refman-5.6paul.dubois20 Apr