Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > ebb1914cf182a88528b4547490db1dd8 > files > 379

kdewebdev-quanta-doc-3.5.9-2mdv2008.1.x86_64.rpm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Appendix D. MySQL Change History</title><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"><link rel="start" href="index.html" title="MySQL 5.0 Reference Manual"><link rel="up" href="index.html" title="MySQL 5.0 Reference Manual"><link rel="prev" href="credits.html" title="Appendix C. Credits"><link rel="next" href="porting.html" title="Appendix E. Porting to Other Systems"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. MySQL Change History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="credits.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="porting.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="news"></a>Appendix D. MySQL Change History</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="news.html#news-5-0-x">D.1. Changes in release 5.0.x (Production)</a></span></dt><dd><dl><dt><span class="section"><a href="news.html#news-5-0-16">D.1.1. Changes in release 5.0.16 (Not yet released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-15">D.1.2. Changes in release 5.0.15 (19 October 2005: Production)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-14">D.1.3. Changes in release 5.0.14 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-13">D.1.4. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-12">D.1.5. Changes in release 5.0.12 (02 Sept 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-11">D.1.6. Changes in release 5.0.11 (06 Aug 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-10">D.1.7. Changes in release 5.0.10 (27 July 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-9">D.1.8. Changes in release 5.0.9 (15 July 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-8">D.1.9. Changes in release 5.0.8 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-7">D.1.10. Changes in release 5.0.7 (10 June 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-6">D.1.11. Changes in release 5.0.6 (26 May 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-5">D.1.12. Changes in release 5.0.5 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-4">D.1.13. Changes in release 5.0.4 (16 Apr 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-3">D.1.14. Changes in release 5.0.3 (23 Mar 2005: Beta)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-2">D.1.15. Changes in release 5.0.2 (01 Dec 2004)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-1">D.1.16. Changes in release 5.0.1 (27 Jul 2004)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-0">D.1.17. Changes in release 5.0.0 (22 Dec 2003: Alpha)</a></span></dt></dl></dd><dt><span class="section"><a href="news.html#mysql-cluster-change-history">D.2. <code class="literal">MySQL Cluster</code> Change History</a></span></dt><dd><dl><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-7">D.2.1. MySQL Cluster-5.0.7 (Not yet released)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-6">D.2.2. MySQL Cluster-5.0.6 (26 May 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-5">D.2.3. MySQL Cluster-5.0.5 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-4">D.2.4. MySQL Cluster-5.0.4 (16 Apr 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-3">D.2.5. MySQL Cluster-5.0.3 (23 Mar 2005: Beta)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-1">D.2.6. MySQL Cluster-5.0.1 (27 Jul 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-13">D.2.7. MySQL Cluster-4.1.13 (15 Jul 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-12">D.2.8. MySQL Cluster-4.1.12 (13 May 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-11">D.2.9. MySQL Cluster-4.1.11 (01 Apr 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-10">D.2.10. MySQL Cluster-4.1.10 (12 Feb 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-9">D.2.11. MySQL Cluster-4.1.9 (13 Jan 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-8">D.2.12. MySQL Cluster-4.1.8 (14 Dec 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-7">D.2.13. MySQL Cluster-4.1.7 (23 Oct 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-6">D.2.14. MySQL Cluster-4.1.6 (10 Oct 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-5">D.2.15. MySQL Cluster-4.1.5 (16 Sep 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-4">D.2.16. MySQL Cluster-4.1.4 (31 Aug 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-3">D.2.17. MySQL Cluster-4.1.3 (28 Jun 2004)</a></span></dt></dl></dd><dt><span class="section"><a href="news.html#myodbc-news">D.3. Changes in MyODBC</a></span></dt><dd><dl><dt><span class="section"><a href="news.html#myodbc-news-3-51-12">D.3.1. Changes in MyODBC 3.51.12</a></span></dt><dt><span class="section"><a href="news.html#myodbc-news-3-51-11">D.3.2. Changes in MyODBC 3.51.11</a></span></dt></dl></dd></dl></div><a class="indexterm" name="id3155377"></a><a class="indexterm" name="id3155384"></a><a class="indexterm" name="id3155393"></a><p>
    This appendix lists the changes from version to version in the MySQL
    source code through the latest version of MySQL 5.0,
    which is currently MySQL 5.0.16. Starting with MySQL 5.0,
    we began offering a new version of the Manual for each new series of
    MySQL releases (5.0, 5.1, and so on). For information about changes
    in previous release series of the MySQL database software, see the
    corresponding version of this Manual. For information about legacy
    versions of the MySQL sofware through the 4.1 series, see
    <em class="citetitle">MySQL 4.1 Reference Manual</em>.
  </p><p>
    We update this section as we add new features in the
    5.0 series, so that everybody can follow the
    development process.
  </p><p>
    Note that we tend to update the manual at the same time we make
    changes to MySQL. If you find a recent version of MySQL listed here
    that you can't find on our download page
    (<a href="http://dev.mysql.com/downloads/" target="_top">http://dev.mysql.com/downloads/</a>), it means that the
    version has not yet been released.
  </p><p>
    The date mentioned with a release version is the date of the last
    BitKeeper ChangeSet on which the release was based, not the date
    when the packages were made available. The binaries are usually made
    available a few days after the date of the tagged ChangeSet, because
    building and testing all packages takes some time.
  </p><p>
    The manual included in the source and binary distributions may not
    be fully accurate when it comes to the release changelog entries,
    because the integration of the manual happens at build time. For the
    most up-to-date release changelog, please refer to the online
    version instead.
  </p><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="news-5-0-x"></a>D.1. Changes in release 5.0.x (Production)</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="news.html#news-5-0-16">D.1.1. Changes in release 5.0.16 (Not yet released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-15">D.1.2. Changes in release 5.0.15 (19 October 2005: Production)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-14">D.1.3. Changes in release 5.0.14 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-13">D.1.4. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-12">D.1.5. Changes in release 5.0.12 (02 Sept 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-11">D.1.6. Changes in release 5.0.11 (06 Aug 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-10">D.1.7. Changes in release 5.0.10 (27 July 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-9">D.1.8. Changes in release 5.0.9 (15 July 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-8">D.1.9. Changes in release 5.0.8 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-7">D.1.10. Changes in release 5.0.7 (10 June 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-6">D.1.11. Changes in release 5.0.6 (26 May 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-5">D.1.12. Changes in release 5.0.5 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-4">D.1.13. Changes in release 5.0.4 (16 Apr 2005)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-3">D.1.14. Changes in release 5.0.3 (23 Mar 2005: Beta)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-2">D.1.15. Changes in release 5.0.2 (01 Dec 2004)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-1">D.1.16. Changes in release 5.0.1 (27 Jul 2004)</a></span></dt><dt><span class="section"><a href="news.html#news-5-0-0">D.1.17. Changes in release 5.0.0 (22 Dec 2003: Alpha)</a></span></dt></dl></div><a class="indexterm" name="id3155474"></a><p>
    The following changelog shows what has been done in the 5.0 tree:
  </p><div class="itemizedlist"><ul type="disc"><li><p>
        Basic support for read-only server side cursors.
      </p></li><li><p>
        Basic support for (updatable) views. See, for example,
        <a href="views.html#create-view" title="19.2. CREATE VIEW Syntax">Section 19.2, “<code class="literal">CREATE VIEW</code> Syntax”</a>.
      </p></li><li><p>
        Basic support for stored procedures (SQL:2003 style). See
        <a href="stored-procedures.html" title="Chapter 17. Stored Procedures and Functions">Chapter 17, <i>Stored Procedures and Functions</i></a>.
      </p></li><li><p>
        Initial support for rudimentary triggers.
      </p></li><li><p>
        Added <code class="literal">SELECT INTO
        <em class="replaceable"><code>list_of_vars</code></em></code>, which can be
        of mixed (that is, global and local) types. See
        <a href="stored-procedures.html#select-into-statement" title="17.2.9.3. SELECT ... INTO Statement">Section 17.2.9.3, “<code class="literal">SELECT ... INTO</code> Statement”</a>.
      </p></li><li><p>
        Removed the update log. It is fully replaced by the binary log.
        If the MySQL server is started with
        <code class="option">--log-update</code>, it is translated to
        <code class="option">--log-bin</code> (or ignored if the server is
        explicitly started with <code class="option">--log-bin</code>), and a
        warning message is written to the error log. Setting
        <code class="literal">SQL_LOG_UPDATE</code> silently sets
        <code class="literal">SQL_LOG_BIN</code> instead (or do nothing if the
        server is explicitly started with <code class="option">--log-bin</code>).
      </p></li><li><p>
        Support for the <code class="literal">ISAM</code> storage engine has been
        removed. If you have <code class="literal">ISAM</code> tables, you should
        convert them before upgrading. See
        <a href="installing.html#upgrading-from-4-1" title="2.10.2. Upgrading from Version 4.1 to 5.0">Section 2.10.2, “Upgrading from Version 4.1 to 5.0”</a>.
      </p></li><li><p>
        Support for <code class="literal">RAID</code> options in
        <code class="literal">MyISAM</code> tables has been removed. If you have
        tables that use these options, you should convert them before
        upgrading. See <a href="installing.html#upgrading-from-4-1" title="2.10.2. Upgrading from Version 4.1 to 5.0">Section 2.10.2, “Upgrading from Version 4.1 to 5.0”</a>.
      </p></li><li><p>
        User variable names are now case insensitive: If you do
        <code class="literal">SET @a=10;</code> then <code class="literal">SELECT @A;</code>
        now returns <code class="literal">10</code>. Case sensitivity of a
        variable's value depends on the collation of the value.
      </p></li><li><p>
        Strict mode, which in essence means that you get an error
        instead of a warning when inserting an incorrect value into a
        column. See <a href="database-administration.html#server-sql-mode" title="5.3.2. The Server SQL Mode">Section 5.3.2, “The Server SQL Mode”</a>.
      </p></li><li><p>
        <code class="literal">VARCHAR</code> and <code class="literal">VARBINARY</code>
        columns remember end space. A <code class="literal">VARCHAR()</code> or
        <code class="literal">VARBINARY</code> column can contain up to 65,535
        characters or bytes, respectively.
      </p></li><li><p>
        <code class="literal">MEMORY</code> (<code class="literal">HEAP</code>) tables can
        have <code class="literal">VARCHAR()</code> columns.
      </p></li><li><p>
        When using a constant string or a function that generates a
        string result in <code class="literal">CREATE ... SELECT</code>, MySQL
        creates the result field based on the maximum length of the
        string or expression:
      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><tbody><tr><td><span class="bold"><strong>Maximum Length</strong></span></td><td><span class="bold"><strong>Column type</strong></span></td></tr><tr><td>= 0</td><td><code class="literal">CHAR(0)</code></td></tr><tr><td>&lt; 512</td><td><code class="literal">VARCHAR(<em class="replaceable"><code>max_length</code></em>)</code></td></tr><tr><td>&gt;= 512</td><td><code class="literal">TEXT</code></td></tr></tbody></table></div></li></ul></div><p>
    For a full list of changes, please refer to the changelog sections
    for each individual 5.0.x release.
  </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-16"></a>D.1.1. Changes in release 5.0.16 (Not yet released)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          In MySQL 5.0.13, syntax for <code class="literal">DEFINER</code> and
          <code class="literal">SQL SECURITY</code> clauses was added to the
          <code class="literal">CREATE VIEW</code> and <code class="literal">ALTER
          VIEW</code> statements, but the clauses had no effect. They
          now are enabled. They specify the security context to be used
          when checking access privileges at view invocation time. See
          <a href="views.html#create-view" title="19.2. CREATE VIEW Syntax">Section 19.2, “<code class="literal">CREATE VIEW</code> Syntax”</a> for more information.
        </p></li><li><p>
          The <code class="literal">InnoDB</code>, <code class="literal">NDB</code>,
          <code class="literal">BDB</code>, and <code class="literal">ARCHIVE</code> storage
          engines now support spatial columns. See
          <a href="spatial-extensions-in-mysql.html" title="Chapter 16. Spatial Extensions in MySQL">Chapter 16, <i>Spatial Extensions in MySQL</i></a>.
        </p></li><li><p>
          You must now declare a prefix for an index on any column of
          any <code class="literal">Geometry</code> class, the only exception
          being when the column is a <code class="literal">POINT</code>. (<a href="http://bugs.mysql.com/12267" target="_top">Bug
          #12267</a>)
        </p></li><li><p>
          Added a <code class="option">--hexdump</code> option to
          <span><strong class="command">mysqlbinlog</strong></span> that displays a hex dump of the
          log in comments. This output can be helpful for replication
          debugging.
        </p></li><li><p>
          MySQL 5.0 now supports character set conversion for seven
          additional <code class="literal">cp950</code> characters into the
          <code class="literal">big5</code> character set:
          <code class="literal">0xF9D6</code>, <code class="literal">0xF9D7</code>,
          <code class="literal">0xF9D8</code>, <code class="literal">0xF9D9</code>,
          <code class="literal">0xF9DA</code>, <code class="literal">0xF9DB</code>, and
          <code class="literal">0xF9DC</code>.
          <span class="bold"><strong>Note</strong></span>: If you move data
          containing these additional characters to an older MySQL
          installation which does not support them, you may encounter
          errors. (<a href="http://bugs.mysql.com/12476" target="_top">Bug #12476</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">ORDER BY DESC</code> within the
          <code class="literal">GROUP_CONCAT()</code> function was not honored
          when used in a view. (<a href="http://bugs.mysql.com/14466" target="_top">Bug #14466</a>)
        </p></li><li><p>
          A comparison with an invalid date (such as <code class="literal">WHERE
          <em class="replaceable"><code>col_name</code></em> &gt;
          '2005-09-31'</code>) caused any index on
          <em class="replaceable"><code>col_name</code></em> not to be used and a
          string comparison for each row, resulting in slow performance.
          (<a href="http://bugs.mysql.com/14093" target="_top">Bug #14093</a>)
        </p></li><li><p>
          Within stored routines, <code class="literal">REPLACE()</code> could
          return an empty string (rather than the original string) when
          no replacement was done, and <code class="literal">IFNULL()</code> could
          return garbage results. (<a href="http://bugs.mysql.com/13941" target="_top">Bug #13941</a>)
        </p></li><li><p>
          Inserts of too-large <code class="literal">DECIMAL</code> values were
          handled inconsistently (sometimes set to the maximum
          <code class="literal">DECIMAL</code> value, sometimes set to 0). (<a href="http://bugs.mysql.com/13573" target="_top">Bug
          #13573</a>)
        </p></li><li><p>
          Executing <code class="literal">REPAIR TABLE</code>, <code class="literal">ANALYZE
          TABLE</code>, or <code class="literal">OPTIMIZE TABLE</code> on a
          view for which an underlying table had been dropped caused a
          server crash. (<a href="http://bugs.mysql.com/14540" target="_top">Bug #14540</a>)
        </p></li><li><p>
          A prepared statement that selected from a view processed using
          the merge algorithm could crash on the second execution. (<a href="http://bugs.mysql.com/14026" target="_top">Bug
          #14026</a>)
        </p></li><li><p>
          Deletes from a <code class="literal">CSV</code> table could cause table
          corruption. (<a href="http://bugs.mysql.com/14672" target="_top">Bug #14672</a>)
        </p></li><li><p>
          An update of a <code class="literal">CSV</code> table could cause a
          server crash. (<a href="http://bugs.mysql.com/13894" target="_top">Bug #13894</a>)
        </p></li><li><p>
          For queries with nested outer joins, the optimizer could
          choose join orders that query execution could not handle. The
          fix is that now the optimizer avoids choosing such join
          orders. (<a href="http://bugs.mysql.com/13126" target="_top">Bug #13126</a>)
        </p></li><li><p>
          Starting <span><strong class="command">mysqld</strong></span> with the
          <code class="option">--skip-innodb</code> and
          <code class="option">--default-storage-engine=innodb</code> (or
          <code class="option">--default-table-type=innodb</code> caused a server
          crash. (<a href="http://bugs.mysql.com/9815" target="_top">Bug #9815</a>, re-fix of bug from 5.0.5)
        </p></li><li><p>
          <span><strong class="command">mysqlmanager</strong></span> did not start up correctly on
          Windows 2003. (<a href="http://bugs.mysql.com/14537" target="_top">Bug #14537</a>)
        </p></li><li><p>
          The parser did not correctly recognize wildcards in the host
          part of the <code class="literal">DEFINER</code> user in <code class="literal">CREATE
          VIEW</code> statements. (<a href="http://bugs.mysql.com/14256" target="_top">Bug #14256</a>)
        </p></li><li><p>
          Memory corruption and a server crash could be caused by
          statements that used a cursor and generated a result set
          larger than <code class="literal">max_heap_table_size</code>. (<a href="http://bugs.mysql.com/14210" target="_top">Bug
          #14210</a>)
        </p></li><li><p>
          <span><strong class="command">mysqld_safe</strong></span> did not correctly start the
          <code class="literal">-max</code> version of the server (if it was
          present) if the <code class="option">--ledir</code> option was given.
          (<a href="http://bugs.mysql.com/13774" target="_top">Bug #13774</a>)
        </p></li><li><p>
          The <span><strong class="command">mysql</strong></span> parser did not properly strip the
          delimiter from input lines less than nine characters long. For
          example, this could cause <code class="literal">USE abc;</code> to
          result in an <code class="literal">Unknown database: abc;</code> error.
          (<a href="http://bugs.mysql.com/14358" target="_top">Bug #14358</a>)
        </p></li><li><p>
          Statements of the form <code class="literal">CREATE TABLE … SELECT
          …</code> that created a column with a multi-byte
          character set could incorrectly calculate the maximum length
          of the column, resulting in a <code class="literal">Specified key was too
          long</code> error. (<a href="http://bugs.mysql.com/14139" target="_top">Bug #14139</a>)
        </p></li><li><p>
          Some updatable views could not be updated. (<a href="http://bugs.mysql.com/14027" target="_top">Bug #14027</a>)
        </p></li><li><p>
          Running <code class="literal">OPTIMIZE TABLE</code> and other
          data-updating statements concurrently on an
          <code class="literal">InnoDB</code> table could cause a crash or the
          following warnings in the error log: <code class="literal">Warning: Found
          locks from different threads in write: enter
          write_lock</code>, <code class="literal">Warning: Found locks from
          different threads in write: start of release lock</code>.
          (<a href="http://bugs.mysql.com/11704" target="_top">Bug #11704</a>)
        </p></li><li><p>
          Indexes for <code class="literal">BDB</code> tables were being limited
          incorrectly to 255 bytes. (<a href="http://bugs.mysql.com/14381" target="_top">Bug #14381</a>)
        </p></li><li><p>
          Use of <code class="literal"><em class="replaceable"><code>col_name</code></em> =
          VALUES(<em class="replaceable"><code>col_name</code></em>)</code> in the
          <code class="literal">ON DUPLICATE KEY UPDATE</code> clause of an
          <code class="literal">INSERT</code> statement failed with an
          <code class="literal">Column '<em class="replaceable"><code>col_name</code></em>' in field
          list is ambiguous</code> error. (<a href="http://bugs.mysql.com/13392" target="_top">Bug #13392</a>)
        </p></li><li><p>
          On Windows, the server was not ignoring hidden or system
          directories that Windows may have created in the data
          directory, and would treat them as available databases. (<a href="http://bugs.mysql.com/4375" target="_top">Bug
          #4375</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> could not dump views if the
          <code class="option">-x</code> option was given. (<a href="http://bugs.mysql.com/12838" target="_top">Bug #12838</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlimport</strong></span> now issues a <code class="literal">SET
          @@character_set_database = binary</code> statement before
          loading data so that a file containing mixed character sets
          (columns with different character sets) can be loaded
          properly. (<a href="http://bugs.mysql.com/12123" target="_top">Bug #12123</a>)
        </p></li><li><p>
          Use of the deprecated <code class="option">--sql-bin-update-same</code>
          option caused a server crash. (<a href="http://bugs.mysql.com/12974" target="_top">Bug #12974</a>)
        </p></li><li><p>
          Maximum values were handled incorrectly for command-line
          options of type <code class="literal">GET_LL</code>. (<a href="http://bugs.mysql.com/12925" target="_top">Bug #12925</a>)
        </p></li><li><p>
          For a user that has the <code class="literal">SELECT</code> privilege on
          a view, the server erroneously was also requiring the user to
          have the <code class="literal">EXECUTE</code> privilege at view
          execution time for stored functions used in the view
          definition. (<a href="http://bugs.mysql.com/9505" target="_top">Bug #9505</a>)
        </p></li><li><p>
          Use of <code class="literal">WITH ROLLUP PROCEDURE ANALYSE()</code>
          could hang the server. (<a href="http://bugs.mysql.com/14138" target="_top">Bug #14138</a>)
        </p></li><li><p>
          <code class="literal">TIMEDIFF()</code>, <code class="literal">ADDTIME()</code>,
          and <code class="literal">STR_TO_DATE()</code> were not reporting that
          they could return <code class="literal">NULL</code>, so functions that
          invoked them might misinterpret their results. (<a href="http://bugs.mysql.com/14009" target="_top">Bug #14009</a>)
        </p></li><li><p>
          The example configuration files supplied with MySQL
          distributions listed the <code class="literal">thread_cache_size</code>
          variable as <code class="literal">thread_cache</code>. (<a href="http://bugs.mysql.com/13811" target="_top">Bug #13811</a>)
        </p></li><li><p>
          Using <code class="literal">ALTER TABLE</code> to add an index could
          fail if the operation ran out of temporary file space. Now it
          automatically makes a second attempt that uses a slower method
          but no temporary file. In this case, problems that occurred
          during the first attempt can be displayed with <code class="literal">SHOW
          WARNINGS</code>. (<a href="http://bugs.mysql.com/12166" target="_top">Bug #12166</a>)
        </p></li><li><p>
          The input polling loop for Instance Manager did not sleep
          properly. Instance Manager used up too much CPU as a result.
          (<a href="http://bugs.mysql.com/14388" target="_top">Bug #14388</a>)
        </p></li><li><p>
          Trying to take the logarithm of a negative value is now
          handled in the same fashion as division by zero. That is, it
          produces a warning when
          <code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code> is set, and an
          error in strict mode. (<a href="http://bugs.mysql.com/13820" target="_top">Bug #13820</a>)
        </p></li><li><p>
          <code class="literal">LOAD DATA INFILE</code> would not accept the same
          character for both the <code class="literal">ESCAPED BY</code> and the
          <code class="literal">ENCLOSED BY</code> clauses. (<a href="http://bugs.mysql.com/11203" target="_top">Bug #11203</a>)
        </p></li><li><p>
          The value of <code class="literal">Last_query_cost</code> was not
          updated for queries served from the query cache. (<a href="http://bugs.mysql.com/10303" target="_top">Bug #10303</a>)
        </p></li><li><p>
          <code class="literal">TIMESTAMPDIFF()</code> returned an incorrect
          result if one argument but not the other was a leap year and a
          date was from March or later. (<a href="http://bugs.mysql.com/13534" target="_top">Bug #13534</a>)
        </p></li><li><p>
          The server incorrectly accepted column definitions of the form
          <code class="literal">DECIMAL(0,<em class="replaceable"><code>D</code></em>)</code> for
          <em class="replaceable"><code>D</code></em> less than 11. (<a href="http://bugs.mysql.com/13667" target="_top">Bug #13667</a>)
        </p></li><li><p>
          The displayed value for the
          <code class="literal">CHARACTER_MAXIMUM_LENGTH</code> column in the
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> table was not
          adjusted for multi-byte character sets. (<a href="http://bugs.mysql.com/14290" target="_top">Bug #14290</a>)
        </p></li><li><p>
          A bugfix in MySQL 5.0.15 caused the displayed values for the
          <code class="literal">CHARACTER_MAXIMUM_LENGTH</code> and
          <code class="literal">CHARACTER_OCTET_LENGTH</code> columns in the
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> table to be
          reversed. (<a href="http://bugs.mysql.com/14207" target="_top">Bug #14207</a>)
        </p></li><li><p>
          On Windows, the value of <code class="literal">character_sets_dir</code>
          in <code class="literal">SHOW VARIABLES</code> output was displayed
          inconsistenly (using both ‘<code class="literal">/</code>’
          and ‘<code class="literal">\</code>’ as pathname component
          separators). (<a href="http://bugs.mysql.com/14137" target="_top">Bug #14137</a>)
        </p></li><li><p>
          Subqueries in the <code class="literal">FROM</code> clause failed if the
          current database was <code class="literal">INFORMATION_SCHEMA</code>.
          (<a href="http://bugs.mysql.com/14089" target="_top">Bug #14089</a>)
        </p></li><li><p>
          Corrected a parser precedence problem that resulted in an
          <code class="literal">Unknown column … in 'on clause'</code>
          error for some joins. (<a href="http://bugs.mysql.com/13832" target="_top">Bug #13832</a>)
        </p></li><li><p>
          For <code class="literal">LIKE … ESCAPE</code>, an escape
          sequence longer than one character was accepted as valid. Now
          the sequence must be empty or one character long. If the
          <code class="literal">NO_BACKSLASH_ESCAPES</code> SQL mode is enabled,
          the sequence must be one character long. (<a href="http://bugs.mysql.com/12595" target="_top">Bug #12595</a>)
        </p></li><li><p>
          <code class="literal">SELECT DISTINCT
          CHAR(<em class="replaceable"><code>col_name</code></em>)</code> returned
          incorrect results after <code class="literal">SET NAMES utf8</code>.
          (<a href="http://bugs.mysql.com/13233" target="_top">Bug #13233</a>)
        </p></li><li><p>
          A prepared statement failed with <code class="literal">Illegal mix of
          collations</code> if the client character set was
          <code class="literal">utf8</code> and the statement used a table that
          had a character set of <code class="literal">latin1</code>. (<a href="http://bugs.mysql.com/12371" target="_top">Bug #12371</a>)
        </p></li><li><p>
          Inserting a new row into an <code class="literal">InnoDB</code> table
          could cause <code class="literal">DATETIME</code> values already stored
          in the table to change. (<a href="http://bugs.mysql.com/13900" target="_top">Bug #13900</a>)
        </p></li><li><p>
          The default value of <code class="literal">query_prealloc_size</code>
          was set to 8192, lower than its minimum of 16384. The minimum
          has been lowered to 8192. (<a href="http://bugs.mysql.com/13334" target="_top">Bug #13334</a>)
        </p></li><li><p>
          The server did not take character set into account in checking
          the width of the <code class="literal">mysql.user.Password</code>
          column. As a result, it could incorrectly generate long
          password hashes even if the column was not long enough to hold
          them. (<a href="http://bugs.mysql.com/13064" target="_top">Bug #13064</a>)
        </p></li><li><p>
          Inserting <code class="literal">cp932</code> strings into a
          <code class="literal">VARCHAR</code> column caused a server crash rather
          than string truncation if the string was longer than the
          column definition. (<a href="http://bugs.mysql.com/12547" target="_top">Bug #12547</a>)
        </p></li><li><p>
          Two threads that were creating triggers on an
          <code class="literal">InnoDB</code> table at the same time could
          deadlock. (<a href="http://bugs.mysql.com/12739" target="_top">Bug #12739</a>)
        </p></li><li><p>
          <span><strong class="command">mysqladmin</strong></span> and <span><strong class="command">mysqldump</strong></span>
          would hang on SCO OpenServer. (<a href="http://bugs.mysql.com/13238" target="_top">Bug #13238</a>)
        </p></li><li><p>
          <code class="literal">RESET MASTER</code> failed to delete log files on
          Windows. (<a href="http://bugs.mysql.com/13377" target="_top">Bug #13377</a>)
        </p></li><li><p>
          Where one stored procedure called another stored procedure: If
          the second stored procedure generated an exception, the
          exception was not caught by the calling stored procedure. For
          example, if stored procedure <code class="literal">A</code> used an
          <code class="literal">EXIT</code> statement to handle an exception,
          subsequent statements in <code class="literal">A</code> would be
          executed regardless when <code class="literal">A</code> was called by
          another stored procedure <code class="literal">B</code>, even if an
          exception that should have been handled by the
          <code class="literal">EXIT</code> was generated in <code class="literal">A</code>.
          (<a href="http://bugs.mysql.com/7049" target="_top">Bug #7049</a>)
        </p></li><li><p>
          Trying to create a stored routine with no database selected
          would crash the server. (<a href="http://bugs.mysql.com/13514" target="_top">Bug #13514</a>, <a href="http://bugs.mysql.com/13587" target="_top">Bug #13587</a>)
        </p></li><li><p>
          Specifying <code class="option">--default-character-set=cp-932</code> for
          <span><strong class="command">mysqld</strong></span> would cause SQL scripts containing
          comments written using that character set to fail with a
          syntax error. (<a href="http://bugs.mysql.com/13487" target="_top">Bug #13487</a>)
        </p></li><li><p>
          Trying to compile the server using the
          <code class="option">--without-geometry</code> option caused the build to
          fail. (<a href="http://bugs.mysql.com/12991" target="_top">Bug #12991</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-15"></a>D.1.2. Changes in release 5.0.15 (19 October 2005: Production)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Warning: Incompatible change.</strong></span>
          For <code class="literal">BINARY</code> columns, the pad value and how
          it is handled has changed. The pad value for inserts now is
          <code class="literal">0x00</code> rather than space, and there is no
          stripping of the pad value for selects. For details, see
          <a href="column-types.html#binary-varbinary" title="11.4.2. The BINARY and VARBINARY Types">Section 11.4.2, “The <code class="literal">BINARY</code> and <code class="literal">VARBINARY</code> Types”</a>.
        </p></li><li><p>
          <span class="bold"><strong>Warning: Incompatible change.</strong></span>
          The <code class="literal">CHAR()</code> function now returns a binary
          string rather than a string in the connection character set.
          An optional <code class="literal">USING
          <em class="replaceable"><code>charset</code></em></code> clause may be
          used to produce a result in a specific character set instead.
          Also, arguments larger than 256 produce multiple characters.
          They are no longer interpreted modulo 256 to produce a single
          character each. These changes may cause some
          incompatibilities, as noted in
          <a href="installing.html#upgrading-from-4-1" title="2.10.2. Upgrading from Version 4.1 to 5.0">Section 2.10.2, “Upgrading from Version 4.1 to 5.0”</a>.
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: The <span><strong class="command">perror</strong></span>
          utility included with the <code class="literal">MySQL-Server</code> RPM
          now provides support for the <code class="option">--ndb</code> option,
          and so can be used to obtain error message text for MySQL
          Cluster error codes. (<a href="http://bugs.mysql.com/13740" target="_top">Bug #13740</a>)
        </p></li><li><p>
          When executing single-table <code class="literal">UPDATE</code> or
          <code class="literal">DELETE</code> queries containing an <code class="literal">ORDER
          BY ... LIMIT <em class="replaceable"><code>N</code></em></code> clause,
          but not having any <code class="literal">WHERE</code> clause, MySQL can
          now take advantage of an index to read the first
          <em class="replaceable"><code>N</code></em> rows in the ordering specified in
          the query. If an index is used, only the first
          <em class="replaceable"><code>N</code></em> records will be read, as opposed
          to scanning the entire table. (<a href="http://bugs.mysql.com/12915" target="_top">Bug #12915</a>)
        </p></li><li><p>
          The <code class="literal">MySQL-server</code> RPM now explicitly assigns
          the <code class="literal">mysql</code> system user to the
          <code class="literal">mysql</code> user group during the
          postinstallation process. This corrects an issue with
          upgrading the server on some Linux distributions whereby a
          previously existing <code class="literal">mysql</code> user was not
          changed to the <code class="literal">mysql</code> group, resulting in
          wrong groups for files created following the installation.
          (<a href="http://bugs.mysql.com/12823" target="_top">Bug #12823</a>)
        </p></li><li><p>
          Added the <code class="option">--tz-utc</code> option to
          <span><strong class="command">mysqldump</strong></span>. This option adds <code class="literal">SET
          TIME_ZONE='+00:00'</code> to the dump file so that
          <code class="literal">TIMESTAMP</code> columns can be dumped and
          reloaded between servers in different time zones and protected
          from changes due to daylight saving time. (<a href="http://bugs.mysql.com/13052" target="_top">Bug #13052</a>)
        </p></li><li><p>
          When declaring a local variable (or parameter) named
          <code class="literal">password</code> or <code class="literal">name</code>, and
          setting it with <code class="literal">SET</code>, e.g. <code class="literal">SET
          password = ''</code>, the new error message: <code class="literal">ERROR
          42000: Variable 'nnn' must be quoted with `...`, or
          renamed</code> is returned (where 'nnn' is 'password' or
          'names'). This means there is a syntax conflict with special
          sentences like <code class="literal">SET PASSWORD = PASSWORD(...)</code>
          (for setting a user's password) and <code class="literal">set names
          default</code> (for setting charset and collation).
        </p><p>
          This must be resolved either by quoting the variable name:
          <code class="literal">SET `password` = ...</code>, which will set the
          local variable <code class="literal">`password`</code>, or by renaming
          the variable to something else (if setting the user's password
          is the desired effect).
        </p></li><li><p>
          The following statements now cause an implicit
          <code class="literal">COMMIT</code>:
        </p><div class="itemizedlist"><ul type="circle"><li><p>
              <code class="literal">CREATE VIEW</code>
            </p></li><li><p>
              <code class="literal">ALTER VIEW</code>
            </p></li><li><p>
              <code class="literal">DROP VIEW</code>
            </p></li><li><p>
              <code class="literal">CREATE TRIGGER</code>
            </p></li><li><p>
              <code class="literal">DROP TRIGGER</code>
            </p></li><li><p>
              <code class="literal">CREATE USER</code>
            </p></li><li><p>
              <code class="literal">RENAME USER</code>
            </p></li><li><p>
              <code class="literal">DROP USER</code>
            </p></li></ul></div></li><li><p>
          <code class="literal">NDBCluster</code>: A number of new or improved
          error messages have been implemented in this release in order
          to provide better and more accurate diagnostic information
          regarding cluster configuration issues and problems. (<a href="http://bugs.mysql.com/11739" target="_top">Bug
          #11739</a>, <a href="http://bugs.mysql.com/11749" target="_top">Bug #11749</a>, <a href="http://bugs.mysql.com/12044" target="_top">Bug #12044</a>, <a href="http://bugs.mysql.com/12786" target="_top">Bug #12786</a>, <a href="http://bugs.mysql.com/13197" target="_top">Bug #13197</a>)
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: A new “<span class="quote">smart</span>” node
          allocation algorithm means that it is no longer necessary to
          use sequential IDs for cluster nodes, and that nodes not
          explicitly assigned IDs should now have IDs allocated
          automatically in most cases. In practical terms, this means
          that it is now possible to assign a set of node IDs such as
          <code class="literal">1</code>, <code class="literal">2</code>,
          <code class="literal">4</code>, <code class="literal">5</code> without an error
          being generated due to the missing <code class="literal">3</code>. (<a href="http://bugs.mysql.com/13009" target="_top">Bug
          #13009</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          For <code class="literal">InnoDB</code> tables, using a column prefix
          for a <code class="literal">utf8</code> column in a primary key caused
          <code class="literal">Cannot find record</code> errors when attempting
          to locate records. (<a href="http://bugs.mysql.com/14056" target="_top">Bug #14056</a>)
        </p></li><li><p>
          An expression in an <code class="literal">ORDER BY</code> clause failed
          with <code class="literal">Unknown column
          '<em class="replaceable"><code>col_name</code></em>' in 'order
          clause'</code> if the expression referred to a column
          alias. (<a href="http://bugs.mysql.com/11694" target="_top">Bug #11694</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> could not dump views. (<a href="http://bugs.mysql.com/14061" target="_top">Bug
          #14061</a>)
        </p></li><li><p>
          Using an undefined variable in an <code class="literal">IF</code> or
          <code class="literal">SET</code> clause inside a stored routine produced
          an incorrect <code class="literal">unknown column ... in 'order
          clause'</code> error message. (<a href="http://bugs.mysql.com/13037" target="_top">Bug #13037</a>)
        </p></li><li><p>
          Trying to create a view dynamically using a prepared statement
          within a stored procedure failed with error 1295. (<a href="http://bugs.mysql.com/13095" target="_top">Bug #13095</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump --triggers</strong></span> did not quote
          identifiers properly if the <code class="option">--compatible</code>
          option was given, so the dump output could not be reloaded.
          (<a href="http://bugs.mysql.com/13146" target="_top">Bug #13146</a>)
        </p></li><li><p>
          Character set conversion was not being done for
          <code class="literal">FIND_IN_SET()</code>. (<a href="http://bugs.mysql.com/13751" target="_top">Bug #13751</a>)
        </p></li><li><p>
          <code class="literal">CAST(1E+300 TO SIGNED INT)</code> produced an
          incorrect result on little-endian machines. (<a href="http://bugs.mysql.com/13344" target="_top">Bug #13344</a>)
        </p></li><li><p>
          Corrected a memory-copying problem for <code class="literal">big5</code>
          values when using <span><strong class="command">icc</strong></span> compiler on Linux
          IA-64 systems. (<a href="http://bugs.mysql.com/10836" target="_top">Bug #10836</a>)
        </p></li><li><p>
          On BSD systems, the system <code class="literal">crypt()</code> call
          could return an error for some salt values. The error was not
          handled, resulting in a server crash. (<a href="http://bugs.mysql.com/13619" target="_top">Bug #13619</a>)
        </p></li><li><p>
          Character set file parsing during
          <code class="literal">mysql_real_connect()</code> read past the end of a
          memory buffer. (<a href="http://bugs.mysql.com/6413" target="_top">Bug #6413</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Queries that were executed using an
          <code class="literal">index_merge</code> union or intersection could
          produce incorrect results if the underlying table used the
          <code class="literal">InnoDB</code> storage engine and had a primary key
          containing <code class="literal">VARCHAR</code> members. (<a href="http://bugs.mysql.com/13484" target="_top">Bug #13484</a>)
        </p></li><li><p>
          <code class="literal">CREATE DEFINER=... VIEW ...</code> caused the
          server to crash when run with
          <code class="option">--skip-grant-tables</code>. (<a href="http://bugs.mysql.com/13504" target="_top">Bug #13504</a>)
        </p></li><li><p>
          The <code class="option">--interactive-timeout</code> and
          <code class="option">--slave-net-timeout</code> options for
          <span><strong class="command">mysqld</strong></span> were not being obeyed on Mac OS X
          and other BSD-based platforms. (<a href="http://bugs.mysql.com/8731" target="_top">Bug #8731</a>)
        </p></li><li><p>
          Queries of the form <code class="literal">(SELECT ...) ORDER BY
          ...</code> were being treated as a
          <code class="literal">UNION</code>. This improperly resulted in only
          distinct values being returned (because
          <code class="literal">UNION</code> by default eliminates duplicate
          results). Also, references to column aliases in <code class="literal">ORDER
          BY</code> clauses following parenthesized
          <code class="literal">SELECT</code> statements were not resolved
          properly. (<a href="http://bugs.mysql.com/7672" target="_top">Bug #7672</a>)
        </p></li><li><p>
          If special characters such as <code class="literal">'_'</code> ,
          <code class="literal">'%'</code>, or the escape character were included
          within the prefix of a column index, <code class="literal">LIKE</code>
          pattern matching on the indexed column did not return the
          correct result. (<a href="http://bugs.mysql.com/13046" target="_top">Bug #13046</a>, <a href="http://bugs.mysql.com/13919" target="_top">Bug #13919</a>)
        </p></li><li><p>
          An <code class="literal">UPDATE</code> query using a join would be
          executed incorrectly on a replication slave. (<a href="http://bugs.mysql.com/12618" target="_top">Bug #12618</a>)
        </p></li><li><p>
          Server crashed during a <code class="literal">SELECT</code> statement,
          writing a message like this to the error log:

</p><pre class="programlisting">InnoDB: Error: MySQL is trying to perform a SELECT
InnoDB: but it has not locked any tables in ::external_lock()!
</pre><p>

          (<a href="http://bugs.mysql.com/12736" target="_top">Bug #12736</a>)
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: <span><strong class="command">ndb_mgmd</strong></span>
          would allow a node to be stopped or restarted while another
          node was still starting up, which could crash the cluster. It
          should now not be possible to issue a node stop or restart
          while a different node is still restarting, and the cluster
          management client issues an error if an attempt is made to do
          so. (<a href="http://bugs.mysql.com/13461" target="_top">Bug #13461</a>)
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: Placing multiple <code class="literal">[TCP
          DEFAULT]</code> sections in the cluster
          <code class="filename">config.ini</code> file crashed
          <span><strong class="command">ndb_mgmd</strong></span>. (The <span><strong class="command">ndb_mgmd</strong></span>
          process now exits gracefully with an appropriate error message
          instead.) (<a href="http://bugs.mysql.com/13611" target="_top">Bug #13611</a>)
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: Trying to run
          <span><strong class="command">ndbd</strong></span> as system <code class="literal">root</code> when
          connecting to a <span><strong class="command">mysqld</strong></span> process running as
          the <code class="literal">mysql</code> system user via SHM caused the
          <span><strong class="command">ndbd</strong></span> process to crash.
          (<span><strong class="command">ndbd</strong></span> should now exit gracefully with an
          appropriate error message instead.) (<a href="http://bugs.mysql.com/9249" target="_top">Bug #9249</a>)
        </p></li><li><p>
          Server may over-allocate memory when performing a
          <code class="literal">FULLTEXT</code> search for stopwords only. (<a href="http://bugs.mysql.com/13582" target="_top">Bug
          #13582</a>)
        </p></li><li><p>
          Queries that use indexes in normal <code class="literal">SELECT</code>
          statements may cause range scans in <code class="literal">VIEW</code>s.
          (<a href="http://bugs.mysql.com/13327" target="_top">Bug #13327</a>)
        </p></li><li><p>
          When calling a stored procedure with the syntax <code class="literal">CALL
          <em class="replaceable"><code>schema</code></em>.<em class="replaceable"><code>procedurename</code></em></code>
          and no default schema selected, <code class="literal">ERROR 1046</code>
          was displayed after the procedure returned. (<a href="http://bugs.mysql.com/13616" target="_top">Bug #13616</a>)
        </p></li><li><p>
          With <code class="option">--log-slave-updates</code>
          <code class="literal">Exec_master_log_pos</code> of SQL thread lagged IO
          (<a href="http://bugs.mysql.com/13023" target="_top">Bug #13023</a>)
        </p></li><li><p>
          <code class="literal">SHOW CREATE TABLE</code> did not display any
          <code class="literal">FOREIGN KEY</code> clauses if a temporary file
          could not be created. Now <code class="literal">SHOW CREATE TABLE</code>
          displays an error message in an SQL comment if this occurs.
          (<a href="http://bugs.mysql.com/13002" target="_top">Bug #13002</a>)
        </p></li><li><p>
          A column in the <code class="literal">ON</code> condition of a join that
          referenced a table in a nested join could not be resolved if
          the nested join was a right join. (<a href="http://bugs.mysql.com/13597" target="_top">Bug #13597</a>)
        </p></li><li><p>
          A qualified reference to a view column in the
          <code class="literal">HAVING</code> clause could not be resolved. (<a href="http://bugs.mysql.com/13410" target="_top">Bug
          #13410</a>)
        </p></li><li><p>
          <span><strong class="command">comp_err</strong></span> did not detect when multiple error
          messages for a language were given for an error symbol. (<a href="http://bugs.mysql.com/13071" target="_top">Bug
          #13071</a>)
        </p></li><li><p>
          For XA transaction IDs
          (<code class="literal"><em class="replaceable"><code>gtrid</code></em>.<em class="replaceable"><code>bqual</code></em>.<em class="replaceable"><code>formatID</code></em></code>),
          uniqueness is supposed to be assessed based on
          <em class="replaceable"><code>gtrid</code></em> and
          <em class="replaceable"><code>bqual</code></em>. MySQL was also including
          <em class="replaceable"><code>formatID</code></em> in the uniqueness check.
          (<a href="http://bugs.mysql.com/13143" target="_top">Bug #13143</a>)
        </p></li><li><p>
          Local (non-XA) and XA transactions are supposed to be mutually
          exclusive within a given client connection, but this
          prohibition was not always enforced. (<a href="http://bugs.mysql.com/12935" target="_top">Bug #12935</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlcheck <code class="option">--all-databases</code>
          <code class="option">--analyze</code>
          <code class="option">--optimize</code></strong></span> failed because it also
          tried to analyze and optimize the
          <code class="literal">INFORMATION_SCHEMA</code> tables which it can't.
          (<a href="http://bugs.mysql.com/13783" target="_top">Bug #13783</a>)
        </p></li><li><p>
          <code class="literal">SELECT * INTO OUTFILE ... FROM
          INFORMATION_SCHEMA.schemata</code> failed with an
          <code class="literal">Access denied</code> error. (<a href="http://bugs.mysql.com/13202" target="_top">Bug #13202</a>)
        </p></li><li><p>
          A table or view named Ç (C-cedilla) couldn't be dropped. (<a href="http://bugs.mysql.com/13145" target="_top">Bug
          #13145</a>)
        </p></li><li><p>
          Tests containing <code class="literal">SHOW TABLE STATUS</code> or
          <code class="literal">INFORMATION_SCHEMA</code> failed on opnsrv6c.
          (Bug, #14064, <a href="http://bugs.mysql.com/14065" target="_top">Bug #14065</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-14"></a>D.1.3. Changes in release 5.0.14 (Not released)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><p>
        The limit of 255 characters on the input buffer for
        <span><strong class="command">mysql</strong></span> on Windows has been lifted. The exact
        limit depends on what the system allows, but can be up to 64K
        characters. A typical limit is 16K characters. (<a href="http://bugs.mysql.com/12929" target="_top">Bug #12929</a>)
      </p><p>
        Re-enabled the <code class="option">--delayed-inserts</code> option for
        <span><strong class="command">mysqldump</strong></span>, which now checks for each table
        dumped whether its storage engine supports
        <code class="literal">DELAYED</code> inserts. (<a href="http://bugs.mysql.com/7815" target="_top">Bug #7815</a>)
      </p><p>
        Added the <code class="literal">myisam_stats_method</code>, which controls
        whether <code class="literal">NULL</code> values in indexes are considered
        the same or different when collecting statistics for
        <code class="literal">MyISAM</code> tables. This influences the query
        optimizer as described in
        <a href="optimization.html#myisam-index-statistics" title="7.4.7. MyISAM Index Statistics Collection">Section 7.4.7, “<code class="literal">MyISAM</code> Index Statistics Collection”</a>. (<a href="http://bugs.mysql.com/12232" target="_top">Bug #12232</a>)
      </p><ul type="disc"><li><p>
          When an <code class="literal">InnoDB</code> foreign key constraint is
          violated, the error message now indicates which table, column,
          and constraint names are involved. (<a href="http://bugs.mysql.com/3443" target="_top">Bug #3443</a>)
        </p></li><li><p>
          Configure-time checking for the availability of multi-byte
          macros and functions in the bundled
          <code class="literal">readline</code> library. This improves handling of
          multi-byte character sets in the <span><strong class="command">mysql</strong></span>
          client. (<a href="http://bugs.mysql.com/3982" target="_top">Bug #3982</a>)
        </p></li><li><p>
          The <code class="literal">CHAR()</code> function now takes into account
          the character set and collation given by the
          <code class="literal">character_set_connection</code> and
          <code class="literal">collation_connection</code> system variables. For
          an argument <em class="replaceable"><code>n</code></em> to
          <code class="literal">CHAR()</code>, the result is
          <em class="replaceable"><code>n</code></em> mod 256 for single-byte character
          sets. For multi-byte character sets,
          <em class="replaceable"><code>n</code></em> must be a valid code point in the
          character set. Also, the result string from
          <code class="literal">CHAR()</code> is checked for well-formedness. For
          invalid arguments, or a result that is not well-formed, MySQL
          generates a warning (or, in strict SQL mode, an error). (<a href="http://bugs.mysql.com/10504" target="_top">Bug
          #10504</a>)
        </p></li><li><p>
          <code class="literal">RENAME TABLE</code> now works for views as well,
          as long as you do not try to rename a view into a different
          database. (<a href="http://bugs.mysql.com/5508" target="_top">Bug #5508</a>)
        </p></li><li><p>
          Multi-table <code class="literal">UPDATE</code> and
          <code class="literal">DELETE</code> statements that do not affect any
          rows are now written to the binary log and will replicate.
          (<a href="http://bugs.mysql.com/13348" target="_top">Bug #13348</a>, <a href="http://bugs.mysql.com/12844" target="_top">Bug #12844</a>)
        </p></li><li><p>
          Range scans can now be performed for queries on VIEWs such as
          <code class="literal">column IN (&lt;constants&gt;)</code> and
          <code class="literal">column BETWEEN ConstantA AND ConstantB</code>.
          (<a href="http://bugs.mysql.com/13317" target="_top">Bug #13317</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">NDBCluster</code>: A trigger updating the value of
          an <code class="literal">AUTO_INCREMENT</code> column in a Cluster table
          would insert an error code rather than the expected value into
          the column. (<a href="http://bugs.mysql.com/13961" target="_top">Bug #13961</a>)
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: When performing a delete of a
          great many (tens of thousands of) rows at once from a Cluster
          table, an improperly dereferenced pointer could cause the
          <code class="literal">mysqld</code> process to crash. (<a href="http://bugs.mysql.com/9282" target="_top">Bug #9282</a>)
        </p></li><li><p>
          <code class="literal">CHECKSUM TABLE</code> locked
          <code class="literal">InnoDB</code> tables and did not use a consistent
          read. (<a href="http://bugs.mysql.com/12669" target="_top">Bug #12669</a>)
        </p></li><li><p>
          The <code class="option">--skip-innodb-doublewrite</code> option disables
          use of the <code class="literal">InnoDB</code> doublewrite buffer.
          However, having this option in effect when creating a new
          MySQL installation prevented the buffer from even being
          created, resulting in a server crash later. (<a href="http://bugs.mysql.com/13367" target="_top">Bug #13367</a>)
        </p></li><li><p>
          MySQL programs in binary distributions for Solaris 8/9/10 x86
          systems would not run on Pentium III machines. (<a href="http://bugs.mysql.com/6772" target="_top">Bug #6772</a>)
        </p></li><li><p>
          When <code class="literal">SELECT ... FOR UPDATE</code> or
          <code class="literal">SELECT ... LOCK IN SHARE MODE</code> for an
          <code class="literal">InnoDB</code> table were executed from within a
          stored function or a trigger, they were converted to a
          non-locking consistent read. (<a href="http://bugs.mysql.com/11238" target="_top">Bug #11238</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: If
          <span><strong class="command">ndb_restore</strong></span> could not find a free
          <span><strong class="command">mysqld</strong></span> process, it crashed. (<a href="http://bugs.mysql.com/13512" target="_top">Bug #13512</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Receipt of several
          <code class="literal">enter single user mode</code> commands by multiple
          <span><strong class="command">ndb_mgmd</strong></span> processes within a short period of
          time resulted in cluster shutdown. (<a href="http://bugs.mysql.com/13053" target="_top">Bug #13053</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Multiple
          <span><strong class="command">ndb_mgmd</strong></span> processes in a cluster would not
          know each other's IP addresses. (<a href="http://bugs.mysql.com/12037" target="_top">Bug #12037</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: With two
          <span><strong class="command">mgmd</strong></span> processes in a cluster,
          <span><strong class="command">ndb_mgmd</strong></span> output for <code class="literal">SHOW</code>
          would display the same IP address for both processes, even
          when they were on different hosts. (<a href="http://bugs.mysql.com/11595" target="_top">Bug #11595</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Queries on
          <code class="literal">NDB</code> tables that are executed using
          <code class="literal">index_merge</code>/union or
          <code class="literal">index_merge</code>/intersection could produce
          incorrect results. (<a href="http://bugs.mysql.com/13081" target="_top">Bug #13081</a>)
        </p></li><li><p>
          The <code class="option">--replicate-rewrite-db</code> and
          <code class="option">--replicate-do-table</code> options did not work for
          statements in which tables were aliased to names other than
          those listed by the options. (<a href="http://bugs.mysql.com/11139" target="_top">Bug #11139</a>)
        </p></li><li><p>
          After running <span><strong class="command">configure</strong></span> with the
          <code class="option">--with-embedded-privilege-control</code> option, the
          embedded server failed to build. (<a href="http://bugs.mysql.com/13501" target="_top">Bug #13501</a>)
        </p></li><li><p>
          Nested handlers within stored procedures didn't work. (<a href="http://bugs.mysql.com/6127" target="_top">Bug
          #6127</a>)
        </p></li><li><p>
          The optimizer chose a less efficient execution plan for
          <code class="literal"><em class="replaceable"><code>col_name</code></em> BETWEEN
          <em class="replaceable"><code>const</code></em> AND
          <em class="replaceable"><code>const</code></em></code> than for
          <code class="literal"><em class="replaceable"><code>col_name</code></em> =
          <em class="replaceable"><code>const</code></em></code>, even though the
          two expressions are logically equivalent. Now the optimizer
          can use the <code class="literal">ref</code> access method for both
          expressions. (<a href="http://bugs.mysql.com/13455" target="_top">Bug #13455</a>)
        </p></li><li><p>
          Incorrect creation of <code class="literal">DECIMAL</code> local
          variables in a stored procedure could cause a server crash.
          (<a href="http://bugs.mysql.com/12589" target="_top">Bug #12589</a>)
        </p></li><li><p>
          Queries against a <code class="literal">MERGE</code> table that has a
          composite index could produce incorrect results. (<a href="http://bugs.mysql.com/9112" target="_top">Bug #9112</a>)
        </p></li><li><p>
          The server was not rejecting
          <code class="literal">FLOAT(<em class="replaceable"><code>M</code></em>,<em class="replaceable"><code>D</code></em>)</code>
          or
          <code class="literal">DOUBLE(<em class="replaceable"><code>M</code></em>,<em class="replaceable"><code>D</code></em>)</code>
          columns specifications when <em class="replaceable"><code>M</code></em> was
          less than <em class="replaceable"><code>D</code></em>. (<a href="http://bugs.mysql.com/12694" target="_top">Bug #12694</a>)
        </p></li><li><p>
          After running <span><strong class="command">configure</strong></span> with the
          <code class="option">--without-server</code> option, the distribution
          failed to build. (<a href="http://bugs.mysql.com/11680" target="_top">Bug #11680</a>, <a href="http://bugs.mysql.com/13550" target="_top">Bug #13550</a>)
        </p></li><li><p>
          Joins nested under <code class="literal">NATURAL</code> or
          <code class="literal">USING</code> joins were sometimes not initialized
          properly, causing a server crash. (<a href="http://bugs.mysql.com/13545" target="_top">Bug #13545</a>)
        </p></li><li><p>
          Locking a view with the query cache enabled and
          <code class="literal">query_cache_wlock_invalidate</code> enabled could
          cause a server crash. (<a href="http://bugs.mysql.com/13424" target="_top">Bug #13424</a>)
        </p></li><li><p>
          A <code class="literal">HAVING</code> clause that references an
          unqualified view column name could crash the server. (<a href="http://bugs.mysql.com/13411" target="_top">Bug
          #13411</a>)
        </p></li><li><p>
          Comparisons involving row constructors containing constants
          could cause a server crash. (<a href="http://bugs.mysql.com/13356" target="_top">Bug #13356</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: <code class="literal">LOAD DATA
          INFILE</code> with a large data file failed. (<a href="http://bugs.mysql.com/10694" target="_top">Bug #10694</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Adding an index to a table
          with a large number of columns (more then 100) crashed the
          storage node. (<a href="http://bugs.mysql.com/13316" target="_top">Bug #13316</a>)
        </p></li><li><p>
          Calling the <code class="literal">FORMAT()</code> function with a
          <code class="literal">DECIMAL</code> column value caused a server crash
          when the value was <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/13361" target="_top">Bug #13361</a>)
        </p></li><li><p>
          Aggregate functions sometimes incorrectly were allowed in the
          <code class="literal">WHERE</code> clause of <code class="literal">UPDATE</code>
          and <code class="literal">DELETE</code> statements. (<a href="http://bugs.mysql.com/13180" target="_top">Bug #13180</a>)
        </p></li><li><p>
          It was possible to create a view that executed a stored
          function for which you did not have the
          <code class="literal">EXECUTE</code> privilege. (<a href="http://bugs.mysql.com/12812" target="_top">Bug #12812</a>)
        </p></li><li><p>
          <code class="literal">BIT</code> columns and following columns in
          <code class="literal">NDB</code> tables were corrupt when dumped by
          <span><strong class="command">mysqldump</strong></span>. (<a href="http://bugs.mysql.com/13152" target="_top">Bug #13152</a>)
        </p></li><li><p>
          <code class="literal">NATURAL</code> joins and joins with
          <code class="literal">USING</code> against a view could return
          <code class="literal">NULL</code> rather than the correct value. (<a href="http://bugs.mysql.com/13127" target="_top">Bug
          #13127</a>)
        </p></li><li><p>
          Use of a user-defined function within the
          <code class="literal">HAVING</code> clause of a query resulted in an
          <code class="literal">Unknown column</code> error. (<a href="http://bugs.mysql.com/11553" target="_top">Bug #11553</a>)
        </p></li><li><p>
          For queries for which the optimizer determined a join type of
          “<span class="quote">Range checked for each record</span>” (as shown by
          <code class="literal">EXPLAIN</code>, the query sometimes could cause a
          server crash, depending on the data distribution. (<a href="http://bugs.mysql.com/12291" target="_top">Bug #12291</a>)
        </p></li><li><p>
          For queries with <code class="literal">DISTINCT</code> and <code class="literal">WITH
          ROLLUP</code>, the <code class="literal">DISTINCT</code> should be
          applied after the rollup operation, but was not always. (<a href="http://bugs.mysql.com/12887" target="_top">Bug
          #12887</a>)
        </p></li><li><p>
          The server crashed when processing a view that invoked the
          <code class="literal">CONVERT_TZ()</code> function. (<a href="http://bugs.mysql.com/11416" target="_top">Bug #11416</a>)
        </p></li><li><p>
          Shared-memory connections were not working on Windows. (<a href="http://bugs.mysql.com/12723" target="_top">Bug
          #12723</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-13"></a>D.1.4. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          The syntax for <code class="literal">CREATE VIEW</code> and
          <code class="literal">ALTER VIEW</code> statements now includes
          <code class="literal">DEFINER</code> and <code class="literal">SQL SECURITY</code>
          clauses for specifying the security context to be used when
          checking access privileges at view invocation time. (The
          syntax is present in 5.0.13, but these clauses have no effect
          until 5.0.16.) See <a href="views.html#create-view" title="19.2. CREATE VIEW Syntax">Section 19.2, “<code class="literal">CREATE VIEW</code> Syntax”</a> for more
          information.
        </p></li><li><p>
          Added a <code class="option">--routines</code> option for
          <span><strong class="command">mysqldump</strong></span> that enables dumping of stored
          routines. (<a href="http://bugs.mysql.com/9056" target="_top">Bug #9056</a>)
        </p></li><li><p>
          The connection string for <code class="literal">FEDERATED</code> tables
          now is specified using a <code class="literal">CONNECTION</code> table
          option rather than a <code class="literal">COMMENT</code> table option.
        </p></li><li><p>
          Better detection of connection timeout for replication servers
          on Windows allows elimination of extraneous <code class="literal">Lost
          connection</code> errors in the error log. (<a href="http://bugs.mysql.com/5588" target="_top">Bug #5588</a>)
        </p></li><li><p>
          The counters for the <code class="literal">Key_read_requests</code>,
          <code class="literal">Key_reads</code>,
          <code class="literal">Key_write_requests</code>, and
          <code class="literal">Key_writes</code> status variables were changed
          from <code class="literal">unsigned long</code> to <code class="literal">unsigned
          longlong</code> to accommodate larger variables without
          rollover. (<a href="http://bugs.mysql.com/12920" target="_top">Bug #12920</a>)
        </p></li><li><p>
          The restriction on the use of <code class="literal">PREPARE</code>,
          <code class="literal">EXECUTE</code>, and <code class="literal">DEALLOCATE
          PREPARE</code> within stored procedures was lifted. The
          restriction still applies to stored functions and triggers.
          (<a href="http://bugs.mysql.com/10975" target="_top">Bug #10975</a>, <a href="http://bugs.mysql.com/7115" target="_top">Bug #7115</a>, <a href="http://bugs.mysql.com/10605" target="_top">Bug #10605</a>)
        </p></li><li><p>
          A new command line argument was added to mysqld to ignore
          client character set information sent during handshake, and
          use server side settings instead, to reproduce 4.0 behaviour
          (<a href="http://bugs.mysql.com/9948" target="_top">Bug #9948</a>):

</p><pre class="programlisting">mysqld --skip-character-set-client-handshake</pre><p>
        </p></li><li><p>
          <code class="literal">OPTIMIZE TABLE</code> and
          <code class="literal">HANDLER</code> now are prohibited in stored
          procedures and functions and in triggers. (<a href="http://bugs.mysql.com/12953" target="_top">Bug #12953</a>, <a href="http://bugs.mysql.com/12995" target="_top">Bug
          #12995</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: The <code class="literal">TRUNCATE
          TABLE</code> statement for <code class="literal">InnoDB</code> tables
          always resets the counter for an
          <code class="literal">AUTO_INCREMENT</code> column now, regardless of
          whether there is a foreign key constraint on the table.
          (Beginning with 5.0.3, <code class="literal">TRUNCATE TABLE</code> reset
          the counter, but only if there was no such constraint.) (<a href="http://bugs.mysql.com/11946" target="_top">Bug
          #11946</a>)
        </p></li><li><p>
          The <code class="literal">LEAST()</code> and
          <code class="literal">GREATEST()</code> functions used to return
          <code class="literal">NULL</code> only if all arguments were
          <code class="literal">NULL</code>. Now they return
          <code class="literal">NULL</code> if any argument is
          <code class="literal">NULL</code>, the same as Oracle. (<a href="http://bugs.mysql.com/12791" target="_top">Bug #12791</a>)
        </p></li><li><p>
          Two new collations have been added for Esperanto:
          <code class="literal">utf8_esperanto_ci</code> and
          <code class="literal">ucs2_esperanto_ci</code>.
        </p></li><li><p>
          Reorder network startup to come after all other
          initialization, particularly storage engine startup which can
          take a long time. This also prevents MySQL from being run on a
          privileged port (any port under 1024) unless run as the root
          user. (<a href="http://bugs.mysql.com/11707" target="_top">Bug #11707</a>)
        </p></li><li><p>
          The Windows binary packages are now compiled with the
          Microsoft Visual Studio 2003 compiler instead of Microsoft
          Visual C++ 6.0.
        </p></li><li><p>
          The binaries compiled with the Intel icc compiler are now
          built using icc 9.0 instead of icc 8.1. You will have to
          install new versions of the Intel icc runtime libraries, which
          are available from here:
          (<a href="http://dev.mysql.com/downloads/os-linux.html" target="_top">
          http://dev.mysql.com/downloads/os-linux.html</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Incompatible change:</strong></span> A lock
          wait timeout caused <code class="literal">InnoDB</code> to roll back the
          entire current transaction. Now it rolls back only the most
          recent SQL statement. (<a href="http://bugs.mysql.com/12308" target="_top">Bug #12308</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> did not dump triggers properly.
          (<a href="http://bugs.mysql.com/12597" target="_top">Bug #12597</a>)
        </p></li><li><p>
          <code class="literal">NDBCluster</code>: The average row size for
          Cluster tables was being calcualted incorrectly. This affected
          the values shown for the <code class="literal">Data_length</code> and
          <code class="literal">Avg_row_length</code> columns in the output
          generated by <code class="literal">SHOW TABLE STATUS</code> as well as
          the values for the <code class="literal">data_length</code> and
          <code class="literal">data_length/table_rows</code> columns shown in the
          <code class="literal">TABLES</code> table of the
          <code class="literal">INFORMATION_SCHEMA</code> database with respect to
          Cluster tables (tables using other storage engines were not
          affected by this bug). (<a href="http://bugs.mysql.com/9896" target="_top">Bug #9896</a>)
        </p></li><li><p>
          Within a stored procedure, fetching a large number of rows in
          a loop using a cursor could result in a server crash or an out
          of memory error. Also, values inserted within a stored
          procedure using a cursor were interpreted as
          <code class="literal">latin1</code> even if character set variables had
          been set to a different character set. (<a href="http://bugs.mysql.com/6513" target="_top">Bug #6513</a>, <a href="http://bugs.mysql.com/9819" target="_top">Bug #9819</a>)
        </p></li><li><p>
          For a server compiled with yaSSL, clients that used MySQL
          Connector/J were not able to establish SSH connections. (<a href="http://bugs.mysql.com/13029" target="_top">Bug
          #13029</a>)
        </p></li><li><p>
          When used in view definitions,
          <code class="literal">DAYNAME(<em class="replaceable"><code>expr</code></em>)</code>,
          <code class="literal">DAYOFWEEK(<em class="replaceable"><code>expr</code></em>)</code>,
          <code class="literal">WEEKDAY(<em class="replaceable"><code>expr</code></em>)</code>
          were incorrectly treated as though the expression was
          <code class="literal">TO_DAYS(<em class="replaceable"><code>expr</code></em>)</code> or
          <code class="literal">TO_DAYS(TO_DAYS(<em class="replaceable"><code>expr</code></em>))</code>.
          (<a href="http://bugs.mysql.com/13000" target="_top">Bug #13000</a>)
        </p></li><li><p>
          Incorrect implicit nesting of joins caused the parser to fail
          on queries of the form <code class="literal">SELECT ... FROM t1 JOIN t2
          JOIN t3 ON t1.t1col = t3.t3col</code> with an
          <code class="literal">Unknown column 't1.t1col' in 'on clause'</code>
          error. (<a href="http://bugs.mysql.com/12943" target="_top">Bug #12943</a>)
        </p></li><li><p>
          <code class="literal">NDB</code>: A cluster shutdown following the crash
          of a data node would fail to terminate the remaining node
          processes, even though <span><strong class="command">ndb_mgm</strong></span> showed the
          shutdown request as having been completed. (<a href="http://bugs.mysql.com/10938" target="_top">Bug #10938</a>, <a href="http://bugs.mysql.com/9996" target="_top">Bug
          #9996</a>, <a href="http://bugs.mysql.com/11623" target="_top">Bug #11623</a>)
        </p></li><li><p>
          A column that can be <code class="literal">NULL</code> was not handled
          properly for <code class="literal">WITH ROLLUP</code> in a subquery or
          view. (<a href="http://bugs.mysql.com/12885" target="_top">Bug #12885</a>)
        </p></li><li><p>
          Within a transaction, the following statements now cause an
          implicit commit: <code class="literal">CREATE FUNCTION</code>,
          <code class="literal">DROP FUNCTION</code>, <code class="literal">DROP
          PROCEDURE</code>, <code class="literal">ALTER FUNCTION</code>,
          <code class="literal">ALTER PROCEDURE</code>, <code class="literal">CREATE
          PROCEDURE</code>. This corrects a problem where these
          statements followed by <code class="literal">ROLLBACK</code> might not
          be replicated properly. (<a href="http://bugs.mysql.com/12870" target="_top">Bug #12870</a>)
        </p></li><li><p>
          Simultaneous execution of DML statements and <code class="literal">CREATE
          TRIGGER</code> or <code class="literal">DROP TRIGGER</code>
          statements on the same table could cause server crashes or
          errors. (<a href="http://bugs.mysql.com/12704" target="_top">Bug #12704</a>)
        </p></li><li><p>
          If a stored function invoked from a <code class="literal">SELECT</code>
          failed with an error, it could cause the client connection to
          be dropped. Now such errors generate warnings instead so as
          not to interrupt the <code class="literal">SELECT</code>. (<a href="http://bugs.mysql.com/12379" target="_top">Bug #12379</a>)
        </p></li><li><p>
          A concurrency problem for <code class="literal">CREATE ... SELECT</code>
          could cause a server crash. (<a href="http://bugs.mysql.com/12845" target="_top">Bug #12845</a>)
        </p></li><li><p>
          The server incorrectly generated an <code class="literal">Unknown
          table</code> error message when for attempts to drop tables
          in the <code class="literal">INFORMATION_SCHEMA</code> database. Now it
          issues an <code class="literal">Access denied</code> message. (<a href="http://bugs.mysql.com/9846" target="_top">Bug
          #9846</a>)
        </p></li><li><p>
          The server allowed privileges to be granted explicitly for the
          <code class="literal">INFORMATION_SCHEMA</code> database. Such
          privileges are always implicit and should not be grantable.
          (<a href="http://bugs.mysql.com/10734" target="_top">Bug #10734</a>)
        </p></li><li><p>
          The server allowed <code class="literal">TEMPORARY</code> tables and
          stored procedures to be created in the
          <code class="literal">INFORMATION_SCHEMA</code> database. (<a href="http://bugs.mysql.com/9683" target="_top">Bug #9683</a>,
          <a href="http://bugs.mysql.com/10708" target="_top">Bug #10708</a>)
        </p></li><li><p>
          The server failed to disallow <code class="literal">SET
          AUTOCOMMIT</code> in stored functions and triggers. It is
          allowed to change the value of <code class="literal">AUTOCOMMIT</code>
          in stored procedures, but a runtime error might occur if the
          procedure is invoked from a stored function or trigger. (<a href="http://bugs.mysql.com/12712" target="_top">Bug
          #12712</a>)
        </p></li><li><p>
          Using an <code class="literal">INOUT</code> parameter with a
          <code class="literal">DECIMAL</code> data type in a stored procedure
          caused a server crash. (<a href="http://bugs.mysql.com/12979" target="_top">Bug #12979</a>)
        </p></li><li><p>
          Performing an <code class="literal">IS NULL</code> check on the
          <code class="literal">MIN()</code> or <code class="literal">MAX()</code> of an
          indexed column in a complex query could produce incorrect
          results. (<a href="http://bugs.mysql.com/12695" target="_top">Bug #12695</a>)
        </p></li><li><p>
          The <code class="filename">mysql.server</code> script contained
          incorrect path for the <code class="literal">libexec</code> directory.
          (<a href="http://bugs.mysql.com/12550" target="_top">Bug #12550</a>)
        </p></li><li><p>
          The NDB <code class="literal">START BACKUP</code> command could be
          interrupted by a <code class="literal">SHOW</code> command. (<a href="http://bugs.mysql.com/13054" target="_top">Bug #13054</a>)
        </p></li><li><p>
          The <code class="literal">LIKE ... ESCAPE</code> syntax produced invalid
          results when escape character was larger than one byte. (<a href="http://bugs.mysql.com/12611" target="_top">Bug
          #12611</a>)
        </p></li><li><p>
          A client connection thread cleanup problem caused the server
          to crash when closing the connection if the binary log was
          enabled. (<a href="http://bugs.mysql.com/12517" target="_top">Bug #12517</a>)
        </p></li><li><p>
          Using <code class="literal">AS</code> to rename a column selected from a
          view in a subquery made it not possible to refer to that
          column in the outer query. (<a href="http://bugs.mysql.com/12993" target="_top">Bug #12993</a>)
        </p></li><li><p>
          The <code class="literal">character_set_system</code> system variable
          could not be selected with <code class="literal">SELECT
          @@character_set_system</code>. (<a href="http://bugs.mysql.com/11775" target="_top">Bug #11775</a>)
        </p></li><li><p>
          A view-creation statement of the form <code class="literal">CREATE VIEW
          <em class="replaceable"><code>name</code></em> AS SELECT ... FROM
          <em class="replaceable"><code>tbl_name</code></em> AS
          <em class="replaceable"><code>name</code></em></code> failed with a
          <code class="literal">Not unique table/alias:
          '<em class="replaceable"><code>name</code></em>'</code> error. (<a href="http://bugs.mysql.com/6808" target="_top">Bug #6808</a>)
        </p></li><li><p>
          <code class="literal">UNION [DISTINCT]</code> was not removing all
          duplicates for multi-byte character values. (<a href="http://bugs.mysql.com/12891" target="_top">Bug #12891</a>)
        </p></li><li><p>
          Multiplying a <code class="literal">DECIMAL</code> value within a loop
          in a stored routine could incorrectly result in a value of
          <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/12938" target="_top">Bug #12938</a>)
        </p></li><li><p>
          <span><strong class="command">mysql</strong></span> and <span><strong class="command">mysqldump</strong></span> were
          ignoring the <code class="option">--defaults-extra-file</code> option.
          (<a href="http://bugs.mysql.com/12917" target="_top">Bug #12917</a>)
        </p></li><li><p>
          Columns named in the <code class="literal">USING()</code> clause of
          <code class="literal">JOIN ... USING()</code> were incorrectly resolved
          in case-sensitive fashion. (<a href="http://bugs.mysql.com/13067" target="_top">Bug #13067</a>)
        </p></li><li><p>
          Local variables in stored routines were not always initialized
          correctly. (<a href="http://bugs.mysql.com/13133" target="_top">Bug #13133</a>)
        </p></li><li><p>
          <code class="literal">SHOW FIELDS FROM
          <em class="replaceable"><code>schemaname</code></em>.<em class="replaceable"><code>viewname</code></em></code>
          caused error 1046 when no default schema was set. (<a href="http://bugs.mysql.com/12905" target="_top">Bug #12905</a>)
        </p></li><li><p>
          The value of <code class="literal">character_set_results</code> could be
          set to <code class="literal">NULL</code>, but returned the string
          <code class="literal">"NULL"</code> when retrieved. (<a href="http://bugs.mysql.com/12363" target="_top">Bug #12363</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Limit recursion depth to 200 in
          deadlock detection to avoid running out of stack space. (<a href="http://bugs.mysql.com/12588" target="_top">Bug
          #12588</a>)
        </p></li><li><p>
          <code class="literal">GROUP_CONCAT()</code> ignored an empty string if
          it was the first value to occur in the result. (<a href="http://bugs.mysql.com/12863" target="_top">Bug #12863</a>)
        </p></li><li><p>
          Outer join elimination was erroneously applied for some
          queries that used a <code class="literal">NOT BETWEEN</code> condition,
          an
          <code class="literal">IN(<em class="replaceable"><code>value_list</code></em>)</code>
          condition, or an <code class="literal">IF()</code> condition. (<a href="http://bugs.mysql.com/12101" target="_top">Bug
          #12101</a>, <a href="http://bugs.mysql.com/12102" target="_top">Bug #12102</a>)
        </p></li><li><p>
          <code class="literal">SHOW FIELDS</code> truncated the
          <code class="literal">TYPE</code> column to 40 characters. (<a href="http://bugs.mysql.com/7142" target="_top">Bug #7142</a>)
        </p></li><li><p>
          Use of <code class="literal">PREPARE</code> and
          <code class="literal">EXECUTE</code> with a statement that selected from
          a view in a subquery could cause a server crash. (<a href="http://bugs.mysql.com/12651" target="_top">Bug #12651</a>)
        </p></li><li><p>
          On HP-UX 11.x (PA-RISC), the <code class="option">-L</code> option caused
          <span><strong class="command">mysqlimport</strong></span> to crash. (<a href="http://bugs.mysql.com/12958" target="_top">Bug #12958</a>)
        </p></li><li><p>
          If the binary log is enabled, execution of a stored procedure
          that modifies table data and uses user variables could cause a
          server crash or incorrect information to be written to the
          binary log. (<a href="http://bugs.mysql.com/12637" target="_top">Bug #12637</a>)
        </p></li><li><p>
          Queries with subqueries, where the inner subquery uses the
          <code class="literal">range</code> or <code class="literal">index_merge</code>
          access method, could return incorrect results. (<a href="http://bugs.mysql.com/12720" target="_top">Bug #12720</a>)
        </p></li><li><p>
          After changing the character set with <code class="literal">SET CHARACTER
          SET</code>, the result of the
          <code class="literal">GROUP_CONCAT()</code> function was not converted
          to the proper character set. (<a href="http://bugs.mysql.com/12829" target="_top">Bug #12829</a>)
        </p></li><li><p>
          A bug introduced in MySQL 5.0.12 caused <code class="literal">SHOW TABLE
          STATUS</code> to display an
          <code class="literal">Auto_increment</code> value of 0 for
          <code class="literal">InnoDB</code> tables. (<a href="http://bugs.mysql.com/12973" target="_top">Bug #12973</a>)
        </p></li><li><p>
          Foreign keys were not properly enforced in
          <code class="literal">TEMPORARY</code> tables. Foreign keys now are
          disallowed in <code class="literal">TEMPORARY</code> tables. (<a href="http://bugs.mysql.com/12084" target="_top">Bug
          #12084</a>)
        </p></li><li><p>
          Replication of <code class="literal">LOAD DATA INFILE</code> failed
          between systems that use different pathname syntax (such as
          delimiter characters). (<a href="http://bugs.mysql.com/11815" target="_top">Bug #11815</a>)
        </p></li><li><p>
          Within a stored procedure, a server crash was caused by
          assigning to a <code class="literal">VARCHAR INOUT</code> parameter the
          value of an expression that included the variable itself. (For
          example, <code class="literal">SET c = c</code>.) (<a href="http://bugs.mysql.com/12849" target="_top">Bug #12849</a>)
        </p></li><li><p>
          <code class="literal">SELECT ... JOIN ... ON ... JOIN ... USING</code>
          caused a server crash. (<a href="http://bugs.mysql.com/12977" target="_top">Bug #12977</a>)
        </p></li><li><p>
          Using <code class="literal">GROUP BY</code> when selecting from a view
          in some cases could cause incorrect results to be returned.
          (<a href="http://bugs.mysql.com/12922" target="_top">Bug #12922</a>)
        </p></li><li><p>
          <span><strong class="command">myisampack</strong></span> did not properly pack
          <code class="literal">BLOB</code> values larger than
          2<sup>24</sup> bytes. (<a href="http://bugs.mysql.com/4214" target="_top">Bug #4214</a>)
        </p></li><li><p>
          Incorrect results could be returned from a view processed
          using a temporary table. (<a href="http://bugs.mysql.com/12941" target="_top">Bug #12941</a>)
        </p></li><li><p>
          The server crashed when one thread resized the query cache
          while another thread was using it. (<a href="http://bugs.mysql.com/12848" target="_top">Bug #12848</a>)
        </p></li><li><p>
          <span><strong class="command">mysqld_multi</strong></span> now quotes arguments on
          command lines that it constructs to avoid problems with
          arguments that contain shell metacharacters. (<a href="http://bugs.mysql.com/11280" target="_top">Bug #11280</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: A consistent read could return
          inconsistent results due to a bug introduced in MySQL 5.0.5.
          (<a href="http://bugs.mysql.com/12947" target="_top">Bug #12947</a>)
        </p></li><li><p>
          Deadlock occurred when several account management statements
          were run (particularly between <code class="literal">FLUSH
          PRIVILEGES</code>/<code class="literal">SET PASSWORD</code> and
          <code class="literal">GRANT</code>/<code class="literal">REVOKE</code>
          statements). (<a href="http://bugs.mysql.com/12423" target="_top">Bug #12423</a>)
        </p></li><li><p>
          The Windows installer made a change to one of the
          <code class="literal">mysql.proc</code> table files, causing stored
          routine functionality to be compromised. The Windows installer
          now never overwrites files in the MySQL data directory. During
          an upgrade from one version to another, a file in the data
          directory will not be overwritten even if it has not been
          modified since it was put there by an older installer.
        </p><p>
          If you have already lost access to stored routines because of
          this problem, you can get them back using the following
          procedure:
        </p><div class="itemizedlist"><ul type="circle"><li><p>
              Stop the server.
            </p></li><li><p>
              In the <code class="filename">mysql\data</code> directory under
              your MySQL installation directory, and replace the
              <code class="filename">proc.frm</code> file with corresponding file
              from the version of MySQL that you were using before you
              upgraded.
            </p></li><li><p>
              Start the server
            </p></li><li><p>
              Start the <span><strong class="command">mysql</strong></span> command-line client
              (use the <code class="literal">root</code> account or another
              account that has full database privileges) and execute the
              <code class="filename">mysql_fix_privilege_tables.sql</code> script
              that upgrades the grant tables to the current structure.
              Instructions for doing this are given in
              <a href="installing.html#upgrading-grant-tables" title="2.10.3. Upgrading the Grant Tables">Section 2.10.3, “Upgrading the Grant Tables”</a>.
            </p></li></ul></div><p>
          After this, all stored routine functionality should work. (<a href="http://bugs.mysql.com/12820" target="_top">Bug
          #12820</a>)
        </p></li><li><p>
          On Windows, the server was preventing tables from being
          created if the table name was a prefix of a forbidden name.
          For example, <code class="literal">nul</code> is a forbidden name
          because it's the same as a Windows device name, but a table
          with the name of <code class="literal">n</code> or <code class="literal">nu</code>
          was being forbidden as well. (<a href="http://bugs.mysql.com/12325" target="_top">Bug #12325</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code> was too permissive with
          <code class="literal">LOCK TABLE ... READ LOCAL</code> and alowed new
          inserts into the table. Now <code class="literal">READ LOCAL</code> is
          equivalent to <code class="literal">READ</code> for
          <code class="literal">InnoDB</code>. This will cause slightly more
          locking in <span><strong class="command">mysqldump</strong></span>, but makes
          <code class="literal">InnoDB</code> table dumps consistent with
          <code class="literal">MyISAM</code> table dumps. (<a href="http://bugs.mysql.com/12410" target="_top">Bug #12410</a>)
        </p></li><li><p>
          Use of the <span><strong class="command">mysql</strong></span> client
          <code class="literal">HELP</code> command from within a stored routine
          caused a “<span class="quote">packets out of order</span>” error and a lost
          connection. Now <code class="literal">HELP</code> is detected and
          disallowed within stored routines. (<a href="http://bugs.mysql.com/12490" target="_top">Bug #12490</a>)
        </p></li><li><p>
          Use of yaSSL for a secure client connection caused
          <code class="literal">LOAD DATA LOCAL INFILE</code> to fail. (<a href="http://bugs.mysql.com/11286" target="_top">Bug
          #11286</a>)
        </p></li><li><p>
          <code class="literal">SHOW CREATE PROCEDURE</code> and <code class="literal">SHOW
          CREATE FUNCTION</code> no longer qualify the routine name
          with the database name, for consistency with the behavior of
          <code class="literal">SHOW CREATE TABLE</code>. (<a href="http://bugs.mysql.com/10362" target="_top">Bug #10362</a>)
        </p></li><li><p>
          A <code class="literal">UNION</code> of long <code class="literal">utf8</code>
          <code class="literal">VARCHAR</code> columns was sometimes returned as a
          column with a <code class="literal">LONGTEXT</code> data type rather
          than <code class="literal">VARCHAR</code>. This could prevent such
          queries from working at all if selected into a
          <code class="literal">MEMORY</code> table because the
          <code class="literal">MEMORY</code> storage engine does not support the
          <code class="literal">TEXT</code> data types. (<a href="http://bugs.mysql.com/12537" target="_top">Bug #12537</a>)
        </p></li><li><p>
          If a client has opened an <code class="literal">InnoDB</code> table for
          which the <code class="filename">.ibd</code> file is missing,
          <code class="literal">InnoDB</code> would not honor a <code class="literal">DROP
          TABLE</code> statement for the table. (<a href="http://bugs.mysql.com/12852" target="_top">Bug #12852</a>)
        </p></li><li><p>
          <code class="literal">ALTER TABLE ... DISCARD TABLESPACE</code> for
          non-<code class="literal">InnoDB</code> table caused the client to lose
          the connection. (The server was not returning the error
          properly.) (<a href="http://bugs.mysql.com/12207" target="_top">Bug #12207</a>)
        </p></li><li><p>
          <code class="literal">DO IFNULL(NULL, NULL)</code> and <code class="literal">SELECT
          CAST(IFNULL(NULL, NULL) AS DECIMAL)</code> caused a server
          crash. (<a href="http://bugs.mysql.com/12841" target="_top">Bug #12841</a>)
        </p></li><li><p>
          When using a cursor, a <code class="literal">SELECT</code> statement
          that uses a <code class="literal">GROUP BY</code> clause could return
          incorrect results. (<a href="http://bugs.mysql.com/11904" target="_top">Bug #11904</a>)
        </p></li><li><p>
          The <code class="literal">SYSDATE()</code> function now returns the time
          at which it was invoked. In particular, within a stored
          routine or trigger, <code class="literal">SYSDATE()</code> returns the
          time at which it executes, not the time at which the stored
          routine or triggering statement began to execute. (<a href="http://bugs.mysql.com/12480" target="_top">Bug #12480</a>)
        </p></li><li><p>
          <code class="literal">CREATE VIEW</code> inside a stored procedure
          caused a server crash if the table underlying the view had
          been deleted. (<a href="http://bugs.mysql.com/12468" target="_top">Bug #12468</a>)
        </p></li><li><p>
          A memory leak resulting from repeated <code class="literal">SELECT ...
          INTO</code> statements inside a stored procedure could
          cause the server to crash. (<a href="http://bugs.mysql.com/11333" target="_top">Bug #11333</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-12"></a>D.1.5. Changes in release 5.0.12 (02 Sept 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Incompatible change:</strong></span>
          Beginning with MySQL 5.0.12, natural joins and joins with
          <code class="literal">USING</code>, including outer join variants, are
          processed according to the SQL:2003 standard. The changes
          include elimination of redundant output columns for
          <code class="literal">NATURAL</code> joins and joins specified with a
          <code class="literal">USING</code> clause and proper ordering of output
          columns. (<a href="http://bugs.mysql.com/6136" target="_top">Bug #6136</a>, <a href="http://bugs.mysql.com/6276" target="_top">Bug #6276</a>, <a href="http://bugs.mysql.com/6489" target="_top">Bug #6489</a>, <a href="http://bugs.mysql.com/6495" target="_top">Bug #6495</a>, <a href="http://bugs.mysql.com/6558" target="_top">Bug
          #6558</a>, <a href="http://bugs.mysql.com/9067" target="_top">Bug #9067</a>, <a href="http://bugs.mysql.com/9978" target="_top">Bug #9978</a>, <a href="http://bugs.mysql.com/10428" target="_top">Bug #10428</a>, <a href="http://bugs.mysql.com/10646" target="_top">Bug #10646</a>, <a href="http://bugs.mysql.com/10972" target="_top">Bug
          #10972</a>.) The precedence of the comma operator also now is
          lower compared to <code class="literal">JOIN</code>. (<a href="http://bugs.mysql.com/4789" target="_top">Bug #4789</a>, <a href="http://bugs.mysql.com/12065" target="_top">Bug
          #12065</a>, <a href="http://bugs.mysql.com/13551" target="_top">Bug #13551</a>.)
        </p><p>
          These changes make MySQL more compliant with standard SQL.
          However, they can result in different output columns for some
          joins. Also, some queries that appeared to work correctly
          prior to 5.0.12 must be rewritten to comply with the standard.
          For details about the scope of the changes and examples that
          show what query rewrites are necessary, see
          <a href="sql-syntax.html#join" title="13.2.7.1. JOIN Syntax">Section 13.2.7.1, “<code class="literal">JOIN</code> Syntax”</a>.
        </p></li><li><p>
          <code class="literal">SHOW TABLE STATUS</code> for a view now shows
          <code class="literal">VIEW</code> in uppercase, consistent with
          <code class="literal">SHOW TABLES</code> and
          <code class="literal">INFORMATION_SCHEMA</code>. (<a href="http://bugs.mysql.com/5501" target="_top">Bug #5501</a>)
        </p></li><li><p>
          An optimizer estimate of zero rows for a non-empty
          <code class="literal">InnoDB</code> table used in a left or right join
          could cause incomplete rollback for the table. (<a href="http://bugs.mysql.com/12779" target="_top">Bug #12779</a>)
        </p></li><li><p>
          Calls to stored procedures were written to the binary log even
          within transactions that were rolled back, causing them to be
          executed on replication slaves. (<a href="http://bugs.mysql.com/12334" target="_top">Bug #12334</a>)
        </p></li><li><p>
          Interleaved execution of stored procedures and functions could
          be written to the binary log incorrectly, causing replication
          slaves to get out of sync. (<a href="http://bugs.mysql.com/12335" target="_top">Bug #12335</a>)
        </p></li><li><p>
          A query of the form <code class="literal">SHOW TABLE STATUS FROM
          <em class="replaceable"><code>db_name</code></em> WHERE name IN
          (<em class="replaceable"><code>select_query</code></em>)</code> would
          crash the server. (<a href="http://bugs.mysql.com/12636" target="_top">Bug #12636</a>)
        </p></li><li><p>
          Users created using an IP address or other alias rather than a
          hostname listed in <code class="filename">/etc/hosts</code> could not
          set their own passwords. (<a href="http://bugs.mysql.com/12302" target="_top">Bug #12302</a>)
        </p></li><li><p>
          Using <code class="literal">DESCRIBE</code> on a view after renaming a
          column in one of the view's base tables caused the server to
          crash. (<a href="http://bugs.mysql.com/12533" target="_top">Bug #12533</a>)
        </p></li><li><p>
          Recursive triggers are detected and disallowed. (<a href="http://bugs.mysql.com/11896" target="_top">Bug #11896</a>,
          <a href="http://bugs.mysql.com/12644" target="_top">Bug #12644</a>)
        </p></li><li><p>
          <code class="literal">SHOW OPEN TABLES</code> now supports
          <code class="literal">FROM</code> and <code class="literal">LIKE</code> clauses.
          (<a href="http://bugs.mysql.com/12183" target="_top">Bug #12183</a>)
        </p></li><li><p>
          <code class="literal">SHOW TABLE STATUS FROM INFORMATION_SCHEMA</code>
          now sorts output by table name the same as it does for other
          databases. (<a href="http://bugs.mysql.com/12315" target="_top">Bug #12315</a>)
        </p></li><li><p>
          <code class="literal">SHOW ENGINE INNODB STATUS</code> now can display
          longer query strings. (<a href="http://bugs.mysql.com/7819" target="_top">Bug #7819</a>)
        </p></li><li><p>
          Added the <code class="literal">SLEEP()</code> function, which pauses
          for the number of seconds given by its argument. (<a href="http://bugs.mysql.com/6760" target="_top">Bug #6760</a>)
        </p></li><li><p>
          Trying to drop the default keycache by setting
          <code class="literal">@@global.key_buffer_size</code> to zero now
          returns a warning that the default keycache cannot be dropped.
          (<a href="http://bugs.mysql.com/10473" target="_top">Bug #10473</a>)
        </p></li><li><p>
          The stability of cursors when used with
          <code class="literal">InnoDB</code> tables was greatly improved. (<a href="http://bugs.mysql.com/11832" target="_top">Bug
          #11832</a>, <a href="http://bugs.mysql.com/12243" target="_top">Bug #12243</a>, <a href="http://bugs.mysql.com/11309" target="_top">Bug #11309</a>)
        </p></li><li><p>
          It is no longer possible to issue <code class="literal">FLUSH</code>
          commands from within stored functions or triggers. See
          <a href="restrictions.html#routine-restrictions" title="I.1. Restrictions on Stored Routines and Triggers">Section I.1, “Restrictions on Stored Routines and Triggers”</a> for details. (<a href="http://bugs.mysql.com/12280" target="_top">Bug
          #12280</a>, <a href="http://bugs.mysql.com/12307" target="_top">Bug #12307</a>)
        </p></li><li><p>
          <code class="literal">INFORMATION_SCHEMA</code> objects are now reported
          as a <code class="literal">SYSTEM VIEW</code> table type. (<a href="http://bugs.mysql.com/11711" target="_top">Bug #11711</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">CHECKSUM TABLE</code> command returned incorrect
          results for tables with deleted rows. After upgrading, users
          who used stored checksum information to detect table changes
          should rebuild their checksum data. (<a href="http://bugs.mysql.com/12296" target="_top">Bug #12296</a>)
        </p></li><li><p>
          A data type of <code class="literal">CHAR BINARY</code> was not
          recognized as valid for stored routine parameters. (<a href="http://bugs.mysql.com/9048" target="_top">Bug #9048</a>)
        </p></li><li><p>
          <code class="literal">SET GLOBAL TRANSACTION ISOLATION LEVEL</code> was
          not working. (<a href="http://bugs.mysql.com/11207" target="_top">Bug #11207</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Corrected the parsing of the
          <code class="literal">CLUSTERLOG</code> command by
          <span><strong class="command">ndb_mgm</strong></span> to allow multiple items. (<a href="http://bugs.mysql.com/12833" target="_top">Bug
          #12833</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Improved error messages
          related to filesystem issues. (<a href="http://bugs.mysql.com/11218" target="_top">Bug #11218</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: When a schema was detected to
          be corrupt, <span><strong class="command">ndb</strong></span> neglected to close it,
          resulting in a “<span class="quote">file already open</span>” error if the
          schema was opened again later. written. (<a href="http://bugs.mysql.com/12027" target="_top">Bug #12027</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: When it could not copy a
          fragment, <span><strong class="command">ndbd</strong></span> exited without printing a
          message about the condition to the error log. Now the message
          is written. (<a href="http://bugs.mysql.com/12900" target="_top">Bug #12900</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: When a disk full condition
          occurred, <span><strong class="command">ndbd</strong></span> exited without printing a
          message about the condition to the error log. Now the message
          is written. (<a href="http://bugs.mysql.com/12716" target="_top">Bug #12716</a>)
        </p></li><li><p>
          <code class="filename">mysql_fix_privilege_tables.sql</code> was
          missing a comma, causing a syntax error when executed. (<a href="http://bugs.mysql.com/12705" target="_top">Bug
          #12705</a>)
        </p></li><li><p>
          <code class="literal">STRCMP()</code> was not handled correctly in
          views. (<a href="http://bugs.mysql.com/12489" target="_top">Bug #12489</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Bad values in
          <code class="filename">config.ini</code> caused
          <span><strong class="command">ndb_mdmd</strong></span> to crash. (<a href="http://bugs.mysql.com/12043" target="_top">Bug #12043</a>)
        </p></li><li><p>
          <code class="literal">TRUNCATE TABLE</code> did not work with
          <code class="literal">TEMPORARY</code> <code class="literal">InnoDB</code> tables.
          (<a href="http://bugs.mysql.com/11816" target="_top">Bug #11816</a>)
        </p></li><li><p>
          Built-in commands for the <span><strong class="command">mysql</strong></span> client,
          such as <code class="literal">delimiter</code> and <code class="literal">\d</code>
          are now always parsed within files that are read using the
          <code class="literal">\.</code> and <code class="literal">source</code> commands.
          (<a href="http://bugs.mysql.com/11523" target="_top">Bug #11523</a>)
        </p></li><li><p>
          <code class="literal">ALTER TABLE <em class="replaceable"><code>db_name.t</code></em>
          RENAME <em class="replaceable"><code>t</code></em></code> did not move the
          table to default database unless the new name was qualified
          with the database name. (<a href="http://bugs.mysql.com/11493" target="_top">Bug #11493</a>)
        </p></li><li><p>
          It was not possible to create a stored function with a spatial
          return value data type. (<a href="http://bugs.mysql.com/10499" target="_top">Bug #10499</a>)
        </p></li><li><p>
          The only valid values for the <code class="literal">PACK_KEYS</code>
          table option are 0 and 1, but other values were being
          accepted. (<a href="http://bugs.mysql.com/10056" target="_top">Bug #10056</a>)
        </p></li><li><p>
          If a <code class="literal">DROP DATABASE</code> fails on a master server
          due to the presence of a non-database file in the database
          directory, the master have have the database tables deleted,
          but not the slaves. To deal with failed database drops, we now
          write <code class="literal">DROP TABLE</code> statements to the binary
          log for the tables so that they are dropped on slaves. (<a href="http://bugs.mysql.com/4680" target="_top">Bug
          #4680</a>)
        </p></li><li><p>
          Improper use of loose index scan in <code class="literal">InnoDB</code>
          sometimes caused incorrect query results. (<a href="http://bugs.mysql.com/12672" target="_top">Bug #12672</a>)
        </p></li><li><p>
          <code class="literal">DELETE</code> or <code class="literal">UPDATE</code> for an
          indexed <code class="literal">MyISAM</code> table could fail. This was
          due to a change in end-space comparison behavior from 4.0 to
          4.1. (<a href="http://bugs.mysql.com/12565" target="_top">Bug #12565</a>)
        </p></li><li><p>
          Joins on <code class="literal">VARCHAR</code> columns of different
          lengths could produce incorrect results. (<a href="http://bugs.mysql.com/11398" target="_top">Bug #11398</a>)
        </p></li><li><p>
          A “<span class="quote">Duplicate column name</span>” error no longer occurs
          when selecting from a view defined as <code class="literal">SELECT
          *</code> from a join that uses a <code class="literal">USING</code>
          clause on tables that have a common column name. (<a href="http://bugs.mysql.com/6558" target="_top">Bug #6558</a>)
        </p></li><li><p>
          Invocations of the <code class="literal">SLEEP()</code> function
          incorrectly could get optimized away for statements in which
          it occurs. Statements containing <code class="literal">SLEEP()</code>
          incorrectly could be stored in the query cache. (<a href="http://bugs.mysql.com/12689" target="_top">Bug #12689</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: An <code class="literal">ALTER
          TABLE</code> command caused loss of data stored prior to
          the issuing of the command. (<a href="http://bugs.mysql.com/12118" target="_top">Bug #12118</a>)
        </p></li><li><p>
          Query cache is switched off if a thread (connection) has
          tables locked. This prevents invalid results where the locking
          thread inserts values between a second thread connecting and
          selecting from the table. (<a href="http://bugs.mysql.com/12385" target="_top">Bug #12385</a>)
        </p></li><li><p>
          <code class="literal">NOW()</code>, <code class="literal">CURRENT_TIME</code> and
          values generated by timestamp columns are now constant for the
          duration of a stored function or trigger. This prevents the
          breaking of statements-based replication. (<a href="http://bugs.mysql.com/12480" target="_top">Bug #12480</a>, <a href="http://bugs.mysql.com/12481" target="_top">Bug
          #12481</a>)
        </p></li><li><p>
          Some statements executed on a master server caused the SQL
          thread on a slave to run out of memory. (<a href="http://bugs.mysql.com/12532" target="_top">Bug #12532</a>)
        </p></li><li><p>
          A <code class="literal">SELECT DISTINCT</code> query with a constant
          value for one of the columns would return only a single row.
          (<a href="http://bugs.mysql.com/12625" target="_top">Bug #12625</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Cluster failed to take
          character set data into account when recomputing hashes (and
          thus could not locate records for updating or deletion)
          following a configuration change and node restart. (<a href="http://bugs.mysql.com/12220" target="_top">Bug
          #12220</a>)
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: Wrong error message displayed
          when cluster management server closed port while
          <span><strong class="command">mysqld</strong></span> was connecting. (<a href="http://bugs.mysql.com/10950" target="_top">Bug #10950</a>)
        </p></li><li><p>
          A view was allowed to depend on a function that referred to a
          temporary table. (<a href="http://bugs.mysql.com/10970" target="_top">Bug #10970</a>)
        </p></li><li><p>
          Prepared statement parameters could cause errors in the binary
          log if the character set was <code class="literal">cp932</code>. (<a href="http://bugs.mysql.com/11338" target="_top">Bug
          #11338</a>)
        </p></li><li><p>
          The <code class="literal">CREATE_OPTIONS</code> column of
          <code class="literal">INFORMATION_SCHEMA.TABLES</code> showed incorrect
          options for tables in <code class="literal">INFORMATION_SCHEMA</code>.
          (<a href="http://bugs.mysql.com/12397" target="_top">Bug #12397</a>)
        </p></li><li><p>
          <code class="literal">MEMORY</code> tables using
          <code class="literal">B-Tree</code> index on 64-bit platforms could
          produce false table is full errors. (<a href="http://bugs.mysql.com/12460" target="_top">Bug #12460</a>)
        </p></li><li><p>
          Issuing <code class="literal">FLUSH INSTANCES</code> followed by
          <code class="literal">STOP INSTANCE</code> caused instance manager to
          crash. (<a href="http://bugs.mysql.com/10957" target="_top">Bug #10957</a>)
        </p></li><li><p>
          Duplicate instructions in stored procedures resulted in
          incorrect execution when the optimizer optimized the duplicate
          code away. (<a href="http://bugs.mysql.com/12168" target="_top">Bug #12168</a>)
        </p></li><li><p>
          <code class="literal">SHOW TABLES FROM</code> returned wrong error
          message if the schema specified did not exist. (<a href="http://bugs.mysql.com/12591" target="_top">Bug #12591</a>)
        </p></li><li><p>
          The <code class="literal">ROW()</code> function returned an incorrect
          result when comparison involved <code class="literal">NULL</code>
          values. (<a href="http://bugs.mysql.com/12509" target="_top">Bug #12509</a>)
        </p></li><li><p>
          Views with multiple <code class="literal">UNION</code> and
          <code class="literal">UNION ALL</code> produced incorrect results. (<a href="http://bugs.mysql.com/10624" target="_top">Bug
          #10624</a>)
        </p></li><li><p>
          Stored procedures with particularly long loops could crash
          server due to memory leak. (<a href="http://bugs.mysql.com/12297" target="_top">Bug #12297</a>, <a href="http://bugs.mysql.com/11247" target="_top">Bug #11247</a>)
        </p></li><li><p>
          Trigger and stored procedure execution could break
          replication. (<a href="http://bugs.mysql.com/12482" target="_top">Bug #12482</a>)
        </p></li><li><p>
          A server crash could result from an update of a view defined
          as a join, even though the update updated only a single table.
          (<a href="http://bugs.mysql.com/12569" target="_top">Bug #12569</a>)
        </p></li><li><p>
          On Windows when the
          <code class="option">--innodb_buffer_pool_awe_mem_mb</code> option has
          been given, the server detects whether AWE support is
          available and has been compiled into the server, and displays
          an appropriate error message if not. (<a href="http://bugs.mysql.com/6581" target="_top">Bug #6581</a>)
        </p></li><li><p>
          The <code class="literal">NUMERIC_SCALE</code> column of the
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> table should be
          returned as <code class="literal">0</code> for integer columns. It was
          being returned as <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/12301" target="_top">Bug #12301</a>)
        </p></li><li><p>
          The <code class="literal">COLUMN_DEFAULT</code> column of the
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> table should be
          returned as <code class="literal">NULL</code> if a column has no default
          value. An empty string was being returned if the column was
          defined as <code class="literal">NOT NULL</code>. (<a href="http://bugs.mysql.com/12518" target="_top">Bug #12518</a>)
        </p></li><li><p>
          Slave I/O threads were considered to be in the running state
          when launched (rather than after successfully connecting to
          the master server), resulting in incorrect <code class="literal">SHOW SLAVE
          STATUS</code> output. (<a href="http://bugs.mysql.com/10780" target="_top">Bug #10780</a>)
        </p></li><li><p>
          Column names in subqueries must be unique, but were not being
          checked for uniqueness. (<a href="http://bugs.mysql.com/11796" target="_top">Bug #11796</a>)
        </p></li><li><p>
          On Windows, the server could crash during shutdown if both
          replication threads and normal client connection threads were
          active. (<a href="http://bugs.mysql.com/11796" target="_top">Bug #11796</a>)
        </p></li><li><p>
          Some subqueries of the form <code class="literal">SELECT ... WHERE ROW(...)
          IN (<em class="replaceable"><code>subquery)</code></em></code> were being
          handled incorrectly. (<a href="http://bugs.mysql.com/11867" target="_top">Bug #11867</a>)
        </p></li><li><p>
          Selecting from a view after <code class="literal">INSERT</code>
          statements for the view's underlying table yielded different
          results than subsequent selects. (<a href="http://bugs.mysql.com/12382" target="_top">Bug #12382</a>)
        </p></li><li><p>
          The <code class="literal">mysql_info()</code> C API function could
          return incorrect data when executed as part of a
          multi-statement that included a mix of statements that do and
          do not return information. (<a href="http://bugs.mysql.com/11688" target="_top">Bug #11688</a>)
        </p></li><li><p>
          When restoring <code class="literal">INFORMATION_SCHEMA</code> as the
          default database after failing to execute a stored procedure
          in an inaccessible database, the server returned a spurious
          <code class="literal">ERROR 42000: Unknown database
          'information_schema'</code> message. (<a href="http://bugs.mysql.com/12318" target="_top">Bug #12318</a>)
        </p></li><li><p>
          Renamed the <code class="literal">rest()</code> macro in
          <code class="filename">my_list.h</code> to
          <code class="literal">list_rest()</code> to avoid name clashes with user
          code. (<a href="http://bugs.mysql.com/12327" target="_top">Bug #12327</a>)
        </p></li><li><p>
          <code class="literal">DATE_ADD()</code> and
          <code class="literal">DATE_SUB()</code> were converting invalid dates to
          <code class="literal">NULL</code> in <code class="literal">TRADITIONAL</code> SQL
          mode rather than rejecting them with an error. (<a href="http://bugs.mysql.com/10627" target="_top">Bug #10627</a>)
        </p></li><li><p>
          A trigger that included a <code class="literal">SELECT</code> statement
          could cause a server crash. (<a href="http://bugs.mysql.com/11587" target="_top">Bug #11587</a>)
        </p></li><li><p>
          An incorrect conversion from <code class="literal">double</code> to
          <code class="literal">ulonglong</code> caused indexes not to be used for
          <code class="literal">BDB</code> tables on HP-UX. (<a href="http://bugs.mysql.com/10802" target="_top">Bug #10802</a>)
        </p></li><li><p>
          <span><strong class="command">myisampack</strong></span> failed to delete
          <code class="filename">.TMD</code> temporary files when run with
          <code class="option">-T</code> option. (<a href="http://bugs.mysql.com/12235" target="_top">Bug #12235</a>)
        </p></li><li><p>
          Added portability check for Intel compiler to address a
          problem compiling <code class="literal">InnoDB</code> code. (<a href="http://bugs.mysql.com/11510" target="_top">Bug #11510</a>)
        </p></li><li><p>
          <code class="literal">XA</code> allowed two active transactions to be
          started with the same XID. (<a href="http://bugs.mysql.com/12162" target="_top">Bug #12162</a>)
        </p></li><li><p>
          Concatenating <code class="literal">USER()</code> or
          <code class="literal">DATEBASE()</code> with a column produced invalid
          results. (<a href="http://bugs.mysql.com/12351" target="_top">Bug #12351</a>)
        </p></li><li><p>
          Creating a view that included the
          <code class="literal">TIMESTAMPDIFF()</code> function resulted in a
          invalid view. (<a href="http://bugs.mysql.com/12298" target="_top">Bug #12298</a>)
        </p></li><li><p>
          Comparison of <code class="literal">InnoDB</code> multi-part primary
          keys that include <code class="literal">VARCHAR</code> columns can
          result in incorrect results. (<a href="http://bugs.mysql.com/12340" target="_top">Bug #12340</a>)
        </p></li><li><p>
          For PKG installs on Mac OS X, the preinstallation and
          postinstallation scripts were being run only for new
          installations and not for upgrade installations, resulting in
          an incomplete installation process. (<a href="http://bugs.mysql.com/11380" target="_top">Bug #11380</a>)
        </p></li><li><p>
          Using cursors and nested queries for the same table, corrupted
          results were returned for the outer query. (<a href="http://bugs.mysql.com/11909" target="_top">Bug #11909</a>)
        </p></li><li><p>
          User variables were not automatically cast for comparisons,
          causing queries to fail if the column and connection character
          sets differed. Now when mixing strings with different
          character sets but the same coercibility, allow conversion if
          one character set is a superset of the other. (<a href="http://bugs.mysql.com/10892" target="_top">Bug #10892</a>)
        </p></li><li><p>
          Selecting from a view defined as a join over many tables could
          result in a server crash due to miscalculation of the number
          of conditions in the <code class="literal">WHERE</code> clause. (<a href="http://bugs.mysql.com/12470" target="_top">Bug
          #12470</a>)
        </p></li><li><p>
          Pathame values for options such as <code class="option">---basedir</code>
          or <code class="option">--datadir</code> didn't work on Japanese Windows
          machines for directory names containing multi-byte characters
          having a second byte of <code class="literal">0x5C</code>
          (‘<code class="literal">\</code>’). (<a href="http://bugs.mysql.com/5439" target="_top">Bug #5439</a>)
        </p></li><li><p>
          A race condition between server threads could cause a crash if
          one thread deleted a stored routine while another thread was
          executing a stored routine. (<a href="http://bugs.mysql.com/12228" target="_top">Bug #12228</a>)
        </p></li><li><p>
          Mishanding of comparison for rows containg
          <code class="literal">NULL</code> values against rows produced by an
          <code class="literal">IN</code> subquery could cause a server crash.
          (<a href="http://bugs.mysql.com/12392" target="_top">Bug #12392</a>)
        </p></li><li><p>
          Inserting <code class="literal">NULL</code> into a
          <code class="literal">GEOMETRY</code> column for a table that has a
          trigger could result in a server crash if the table was
          subsequently dropped. (<a href="http://bugs.mysql.com/12281" target="_top">Bug #12281</a>)
        </p></li><li><p>
          A failure to obtain a lock for an <code class="literal">IN SHARE
          MODE</code> query could result in a server crash. (<a href="http://bugs.mysql.com/12082" target="_top">Bug
          #12082</a>)
        </p></li><li><p>
          <code class="literal">SELECT ... INTO
          <em class="replaceable"><code>var_name</code></em></code> within a trigger
          could cause a server crash. (<a href="http://bugs.mysql.com/11973" target="_top">Bug #11973</a>)
        </p></li><li><p>
          <code class="literal">INSERT ... SELECT ... ON DUPLICATE KEY
          UPDATE</code> could fail with an erroneous “<span class="quote">Column
          '<em class="replaceable"><code>col_name</code></em>' specified twice</span>”
          error. (<a href="http://bugs.mysql.com/10109" target="_top">Bug #10109</a>)
        </p></li><li><p>
          <code class="literal">SHOW TABLE STATUS</code> sometimes reported a
          <code class="literal">Row_format</code> value of
          <code class="literal">Dynamic</code> for <code class="literal">MEMORY</code>
          tables, though such tables always have a format of
          <code class="literal">Fixed</code>. (<a href="http://bugs.mysql.com/3094" target="_top">Bug #3094</a>)
        </p></li><li><p>
          A query using a <code class="literal">LEFT JOIN</code>, an
          <code class="literal">IN</code> subquery on the outer table, and an
          <code class="literal">ORDER BY</code> clause, caused the server to crash
          when cursors were enabled. (<a href="http://bugs.mysql.com/11901" target="_top">Bug #11901</a>)
        </p></li><li><p>
          Using a stored procedure that referenced tables in the
          <code class="literal">INFORMATION_SCHEMA</code> database would return an
          empty result set. (<a href="http://bugs.mysql.com/10055" target="_top">Bug #10055</a>, <a href="http://bugs.mysql.com/12278" target="_top">Bug #12278</a>)
        </p></li><li><p>
          Columns defined as <code class="literal">TINYINT(1)</code> were
          redefined as <code class="literal">TINYINT(4)</code> when incorporated
          into a <code class="literal">VIEW</code>. (<a href="http://bugs.mysql.com/11335" target="_top">Bug #11335</a>)
        </p></li><li><p>
          <code class="literal">ISO-8601</code> formatted dates were not being
          parsed correctly. (<a href="http://bugs.mysql.com/7308" target="_top">Bug #7308</a>)
        </p></li><li><p>
          <code class="literal">FLUSH TABLES WITH READ LOCK</code> combined with
          <code class="literal">LOCK TABLE .. WRITE</code> caused deadlock. (<a href="http://bugs.mysql.com/9459" target="_top">Bug
          #9459</a>)
        </p></li><li><p>
          <code class="literal">NULL</code> column definitions read incorrectly
          for inner tables of nested outer joins. (<a href="http://bugs.mysql.com/12154" target="_top">Bug #12154</a>)
        </p></li><li><p>
          <code class="literal">GROUP_CONCAT</code> ignores the
          <code class="literal">DISTINCT</code> modifier when used in a query
          joining multiple tables where one of the tables has a single
          row. (<a href="http://bugs.mysql.com/12095" target="_top">Bug #12095</a>)
        </p></li><li><p>
          <code class="literal">UNION</code> query with
          <code class="literal">FULLTEXT</code> could cause server crash. (<a href="http://bugs.mysql.com/11869" target="_top">Bug
          #11869</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-11"></a>D.1.6. Changes in release 5.0.11 (06 Aug 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Security improvement: Applied a patch that addresses a
          potential <code class="literal">zlib</code> data vulnerability that
          could result in an application crash.
          (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-1849" target="_top">CAN-2005-1849</a>)
          This only affects the binaries for platforms that are linked
          statically against the bundled zlib (most notably Microsoft
          Windows and HP-UX).
        </p></li><li><p>
          <code class="literal">SHOW CHARACTER SET</code> and
          <code class="literal">INFORMATION_SCHEMA</code> now properly report the
          <code class="literal">Latin1</code> character set as
          <code class="literal">cp1252</code>. (<a href="http://bugs.mysql.com/11216" target="_top">Bug #11216</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> now dumps triggers for each
          dumped table. This can be suppressed with the
          <code class="option">--skip-triggers</code> option. (<a href="http://bugs.mysql.com/10431" target="_top">Bug #10431</a>)
        </p></li><li><p>
          Added new <code class="literal">ER_STACK_OVERRUN_NEED_MORE</code> error
          message to indicate that, while the stack is not completely
          full, more stack space is required. (<a href="http://bugs.mysql.com/11213" target="_top">Bug #11213</a>)
        </p></li><li><p>
          <code class="literal">NDB</code>: Improved handling of the configuration
          variables <code class="literal">NoOfPagesToDiskDuringRestartACC</code>,
          <code class="literal">NoOfPagesToDiskAfterRestartACC</code>,
          <code class="literal">NoOfPagesToDiskDuringRestartTUP</code>, and
          <code class="literal">NoOfPagesToDiskAfterRestartTUP</code> should
          result in noticeably faster startup times for MySQL Cluster.
          (<a href="http://bugs.mysql.com/12149" target="_top">Bug #12149</a>)
        </p></li><li><p>
          Added support of where clause for queries with <code class="literal">FROM
          DUAL</code>. (<a href="http://bugs.mysql.com/11745" target="_top">Bug #11745</a>)
        </p></li><li><p>
          Added an optimization that avoids key access with
          <code class="literal">NULL</code> keys for the <code class="literal">ref</code>
          method when used in outer joins. (<a href="http://bugs.mysql.com/12144" target="_top">Bug #12144</a>)
        </p></li><li><p>
          Maximum size of stored procedures increased from 64k to 4Gb.
          (<a href="http://bugs.mysql.com/11602" target="_top">Bug #11602</a>)
        </p></li><li><p>
          Added error message for users who attempt <code class="literal">CREATE
          TABLE ... LIKE</code> and specify a non-table in the
          <code class="literal">LIKE</code> clause. (<a href="http://bugs.mysql.com/6859" target="_top">Bug #6859</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          DDL statements now are allowed in stored procedures if the
          procedure is not invoked from a stored function or a trigger.
          Also fixed problems where a <code class="literal">TEMPORARY</code>
          statement created by one stored routine was inaccessible to
          another routine invoked during the same connection. (<a href="http://bugs.mysql.com/11126" target="_top">Bug
          #11126</a>)
        </p></li><li><p>
          Creation of the <code class="literal">mysql</code> group account failed
          during the RPM installation. (<a href="http://bugs.mysql.com/12348" target="_top">Bug #12348</a>)
        </p></li><li><p>
          <code class="literal">big5</code> strings were not being stored in
          <code class="literal">FULLTEXT</code> index. (<a href="http://bugs.mysql.com/12075" target="_top">Bug #12075</a>)
        </p></li><li><p>
          When <code class="literal">DROP DATABASE</code> was called concurrently
          with a <code class="literal">DROP TABLE</code> of any table the MySQL
          Server crashed. (<a href="http://bugs.mysql.com/12212" target="_top">Bug #12212</a>)
        </p></li><li><p>
          <code class="literal">max_connections_per_hour</code> setting was being
          capped by unrelated <code class="literal">max_user_connections</code>
          setting. (<a href="http://bugs.mysql.com/9947" target="_top">Bug #9947</a>)
        </p></li><li><p>
          <code class="literal">SELECT @@local...</code> returned
          <code class="literal">@@session...</code> in the column header. (<a href="http://bugs.mysql.com/10724" target="_top">Bug
          #10724</a>)
        </p></li><li><p>
          Multiplying <code class="literal">ABS()</code> output by a negative
          number would return incorrect results. (<a href="http://bugs.mysql.com/11402" target="_top">Bug #11402</a>)
        </p></li><li><p>
          Updated dependency list for RPM builds to include missing
          dependencies such as <code class="literal">useradd</code> and
          <code class="literal">groupadd</code>. (<a href="http://bugs.mysql.com/12233" target="_top">Bug #12233</a>)
        </p></li><li><p>
          <code class="literal">mysql_install_db</code> used static
          <code class="literal">localhost</code> value in <code class="literal">GRANT</code>
          tables even when server hostname is not
          <code class="literal">localhost</code>, such as
          <code class="literal">localhost.localdomain</code>. This change is
          applied to version 5.0.10b on Windows. (<a href="http://bugs.mysql.com/11822" target="_top">Bug #11822</a>)
        </p></li><li><p>
          Multiple <code class="literal">SELECT SQL_CACHE</code> queries in a
          stored procedure causes error and client hang. (<a href="http://bugs.mysql.com/6897" target="_top">Bug #6897</a>)
        </p></li><li><p>
          Added checks to prevent error when allocating memory when
          there was insufficient memory available. (<a href="http://bugs.mysql.com/7003" target="_top">Bug #7003</a>)
        </p></li><li><p>
          Character data truncated when GBK characters
          <code class="literal">0xA3A0</code> and <code class="literal">0xA1</code> are
          present. (<a href="http://bugs.mysql.com/11987" target="_top">Bug #11987</a>)
        </p></li><li><p>
          Comparisons like <code class="literal">SELECT "A\\" LIKE "A\\";</code>
          fail when using <code class="literal">SET NAMES utf8;</code>. (<a href="http://bugs.mysql.com/11754" target="_top">Bug
          #11754</a>)
        </p></li><li><p>
          When used in a <code class="literal">SELECT</code> query against a view,
          the <code class="literal">GROUP_CONCAT()</code> function returned only a
          single row. (<a href="http://bugs.mysql.com/11412" target="_top">Bug #11412</a>)
        </p></li><li><p>
          Calling the C API function
          <code class="literal">mysql_stmt_fetch()</code> after all rows of a
          result set were exhausted would return an error instead of
          <code class="literal">MYSQL_NO_DATA</code>. (<a href="http://bugs.mysql.com/11037" target="_top">Bug #11037</a>)
        </p></li><li><p>
          Information about a trigger was not displayed in the output of
          <code class="literal">SELECT ... FROM INFORMATION_SCHEMA.TRIGGERS</code>
          when the selected database was
          <code class="literal">INFORMATION_SCHEMA</code>, prior to the trigger's
          first invocation. (<a href="http://bugs.mysql.com/12127" target="_top">Bug #12127</a>)
        </p></li><li><p>
          Issuing successive <code class="literal">FLUSH TABLES WITH READ
          LOCK</code> would cause the <code class="literal">mysql</code> client
          to hang. (<a href="http://bugs.mysql.com/11934" target="_top">Bug #11934</a>)
        </p></li><li><p>
          In stored procedures, a cursor that fetched an empty string
          into a variable would set the variable to
          <code class="literal">NULL</code> instead. (<a href="http://bugs.mysql.com/8692" target="_top">Bug #8692</a>)
        </p></li><li><p>
          A trigger dependent on a feature of one
          <code class="literal">SQL_MODE</code> setting would cause an error when
          invoked after the <code class="literal">SQL_MODE</code> was changed.
          (<a href="http://bugs.mysql.com/5891" target="_top">Bug #5891</a>)
        </p></li><li><p>
          A delayed insert that would duplicate an existing record
          crashed the server instead. (<a href="http://bugs.mysql.com/12226" target="_top">Bug #12226</a>)
        </p></li><li><p>
          <code class="literal">ALTER TABLE</code> when <code class="literal">SQL_MODE =
          'TRADITIONAL'</code> gave rise to an invalid error message.
          (<a href="http://bugs.mysql.com/11964" target="_top">Bug #11964</a>)
        </p></li><li><p>
          Attempting to repair a table having a fulltext index on a
          column containing words whose length exceeded 21 characters
          and where <code class="literal">myisam_repair_threads</code> was greater
          than 1 would crash the server. (<a href="http://bugs.mysql.com/11684" target="_top">Bug #11684</a>)
        </p></li><li><p>
          The MySQL Cluster backup log was invalid where the number of
          Cluster nodes was not equal to a power of 2. (<a href="http://bugs.mysql.com/11675" target="_top">Bug #11675</a>)
        </p></li><li><p>
          <code class="literal">GROUP_CONCAT()</code> sometimes returned a result
          with a different collation that that of its arguments. (<a href="http://bugs.mysql.com/10201" target="_top">Bug
          #10201</a>)
        </p></li><li><p>
          The <code class="literal">LPAD()</code> and <code class="literal">RPAD()</code>
          functions returned the wrong length to
          <code class="literal">mysql_fetch_fields()</code>. (<a href="http://bugs.mysql.com/11311" target="_top">Bug #11311</a>)
        </p></li><li><p>
          A <code class="literal">UNIQUE VARCHAR</code> column would be
          mis-identified as <code class="literal">MUL</code> in table
          descriptions. (<a href="http://bugs.mysql.com/11227" target="_top">Bug #11227</a>)
        </p></li><li><p>
          Incorrect error message displayed if user attempted to create
          a table in a non-existing database using <code class="literal">CREATE
          <em class="replaceable"><code>database_name</code></em>.<em class="replaceable"><code>table_name</code></em></code>
          syntax. (<a href="http://bugs.mysql.com/10407" target="_top">Bug #10407</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Do not flush after each write, not
          even before setting up the doublewrite buffer. Flushing can be
          extremely slow on some systems. (<a href="http://bugs.mysql.com/12125" target="_top">Bug #12125</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: True <code class="literal">VARCHAR</code>:
          Return <code class="literal">NULL</code> columns in the format expected
          by MySQL. (<a href="http://bugs.mysql.com/12186" target="_top">Bug #12186</a>)
        </p></li><li><p>
          Two threads could potentially initialize different characters
          sets and overwrite each other. (<a href="http://bugs.mysql.com/12109" target="_top">Bug #12109</a>)
        </p></li><li><p>
          Unsigned <code class="literal">LONG</code> system variables may return
          incorrect value when retreived with a
          <code class="literal">SELECT</code> for certain values. (<a href="http://bugs.mysql.com/10351" target="_top">Bug #10351</a>)
        </p></li><li><p>
          Prepared statements were not being written to the Slow Query
          log. (<a href="http://bugs.mysql.com/9968" target="_top">Bug #9968</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-10"></a>D.1.7. Changes in release 5.0.10 (27 July 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Security improvement: Applied a patch that addresses a
          <code class="literal">zlib</code> data vulnerability that could result
          in a buffer overflow and code execution.
          (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-2096" target="_top">CAN-2005-2096</a>)
          (<a href="http://bugs.mysql.com/11844" target="_top">Bug #11844</a>)
        </p></li><li><p>
          <span class="bold"><strong>Incompatible change:</strong></span> The
          namespace for triggers has changed. Previously, trigger names
          had to be unique per table. Now they must be unique within the
          schema (database). An implication of this change is that
          <code class="literal">DROP TRIGGER</code> syntax now uses a schema name
          instead of a table name (schema name is optional and, if
          omitted, the current schema will be used). (<a href="http://bugs.mysql.com/5892" target="_top">Bug #5892</a>)
        </p><p>
          <span class="emphasis"><em>Note:</em></span> When upgrading from a previous
          version of MySQL 5 to MySQL 5.0.10 or newer, you must drop all
          triggers and re-create them or <code class="literal">DROP TRIGGER</code>
          will not work after the upgrade. A suggested procedure for
          doing this is given in <a href="installing.html#upgrading-from-4-1" title="2.10.2. Upgrading from Version 4.1 to 5.0">Section 2.10.2, “Upgrading from Version 4.1 to 5.0”</a>.
        </p></li><li><p>
          The viewing of triggers and trigger metadata has been enhanced
          as follows:
        </p><div class="itemizedlist"><ul type="circle"><li><p>
              An extension to the <code class="literal">SHOW</code> command has
              been added: <code class="literal">SHOW TRIGGERS</code> can be used
              to view a listing of triggers. See
              <a href="sql-syntax.html#show-triggers" title="13.5.4.20. SHOW TRIGGERS Syntax">Section 13.5.4.20, “<code class="literal">SHOW TRIGGERS</code> Syntax”</a> for details.
            </p></li><li><p>
              The <code class="literal">INFORMATION_SCHEMA</code> database now
              includes a <code class="literal">TRIGGERS</code> table. See
              <a href="information-schema.html#triggers-table" title="20.1.16. The INFORMATION_SCHEMA TRIGGERS Table">Section 20.1.16, “The <code class="literal">INFORMATION_SCHEMA TRIGGERS</code> Table”</a> for details. (<a href="http://bugs.mysql.com/9586" target="_top">Bug #9586</a>)
            </p></li></ul></div></li><li><p>
          Triggers can now reference tables by name. See
          <a href="triggers.html#create-trigger" title="18.1. CREATE TRIGGER Syntax">Section 18.1, “<code class="literal">CREATE TRIGGER</code> Syntax”</a> for more information.
        </p></li><li><p>
          The output of <code class="literal">perror --help</code> now displays
          the <code class="option">--ndb</code> option. (<a href="http://bugs.mysql.com/11999" target="_top">Bug #11999</a>)
        </p></li><li><p>
          On Windows, the search path used by MySQL applications for
          <code class="filename">my.ini</code> now includes
          <code class="filename">..\my.ini</code> (that is, the application's
          parent directory, and hence, the installation directory). (<a href="http://bugs.mysql.com/10419" target="_top">Bug
          #10419</a>)
        </p></li><li><p>
          Added <code class="literal">mysql_get_character_set_info()</code> C API
          function for obtaining information about the default character
          set of the current connection.
        </p></li><li><p>
          The bundled version of the <code class="literal">readline</code> library
          was upgraded to version 5.0.
        </p></li><li><p>
          It is no longer necessary to issue an explicit <code class="literal">LOCK
          TABLES</code> for any tables accessed by a trigger prior to
          executing any statements that might invoke the trigger. (<a href="http://bugs.mysql.com/9581" target="_top">Bug
          #9581</a>, <a href="http://bugs.mysql.com/8406" target="_top">Bug #8406</a>)
        </p></li><li><p>
          <code class="literal">MySQL Cluster</code>: A new <code class="option">-P</code>
          option is available for use with the
          <span><strong class="command">ndb_mgmd</strong></span> client. When called with this
          option, <span><strong class="command">ndb_mgmd</strong></span> prints all configuration
          data to <code class="literal">stdout</code>, then exits.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">NDB</code>: Trying to use a greater number of
          tables then specified by the value of
          <code class="literal">MaxNoOfTables</code> caused table corruption such
          that data nodes could not be restarted. (<a href="http://bugs.mysql.com/9994" target="_top">Bug #9994</a>)
        </p></li><li><p>
          <code class="literal">NDB</code>: Attempting to create or drop tables
          during a backup would cause the cluster to shut down. (<a href="http://bugs.mysql.com/11942" target="_top">Bug
          #11942</a>)
        </p></li><li><p>
          When attempting to drop a table with a broken unique index,
          <code class="literal">NDB</code> failed to drop the table and
          erroneously report that the table was unknown. (<a href="http://bugs.mysql.com/11355" target="_top">Bug #11355</a>)
        </p></li><li><p>
          <code class="literal">SELECT ... NOT IN()</code> gave unexpected results
          when only static value present between the
          <code class="literal">()</code>. (<a href="http://bugs.mysql.com/11885" target="_top">Bug #11885</a>)
        </p></li><li><p>
          Fixed compile error when using GCC4 on AMD64. (<a href="http://bugs.mysql.com/12040" target="_top">Bug #12040</a>)
        </p></li><li><p>
          <code class="literal">NDB</code> ignored the <code class="literal">Hostname</code>
          option in the <code class="literal">NDBD DEFAULT</code> section of the
          Cluster configuration file. (<a href="http://bugs.mysql.com/12028" target="_top">Bug #12028</a>)
        </p></li><li><p>
          <code class="literal">SHOW PROCEDURE/FUNCTION STATUS</code> didn't work
          for users with limited access. (<a href="http://bugs.mysql.com/11577" target="_top">Bug #11577</a>)
        </p></li><li><p>
          MySQL server would crash is a fetch was performed after a
          <code class="literal">ROLLBACK</code> when cursors were involved. (<a href="http://bugs.mysql.com/10760" target="_top">Bug
          #10760</a>)
        </p></li><li><p>
          The temporary tables created by an <code class="literal">ALTER
          TABLE</code> on a cluster table were visible to all MySQL
          servers. (<a href="http://bugs.mysql.com/12055" target="_top">Bug #12055</a>)
        </p></li><li><p>
          <code class="literal">NDB_MGMD</code> was leaking file descriptors. (<a href="http://bugs.mysql.com/11898" target="_top">Bug
          #11898</a>)
        </p></li><li><p>
          IP addresses not shown in <code class="literal">ndb_mgm SHOW</code>
          command on second ndb_mgmd (or on ndb_mgmd restart). (<a href="http://bugs.mysql.com/11596" target="_top">Bug
          #11596</a>)
        </p></li><li><p>
          Functions that evaluate to constants (such as
          <code class="literal">NOW()</code> and <code class="literal">CURRENT_USER()</code>
          were being evaluated in the definition of a
          <code class="literal">VIEW</code> rather than included verbatim. (<a href="http://bugs.mysql.com/4663" target="_top">Bug
          #4663</a>)
        </p></li><li><p>
          Execution of <code class="literal">SHOW TABLES</code> failed to
          increment the <code class="literal">Com_show_tables</code> status
          variable. (<a href="http://bugs.mysql.com/11685" target="_top">Bug #11685</a>)
        </p></li><li><p>
          For execution of a stored procedure that refers to a view,
          changes to the view definition were not seen. The procedure
          continued to see the old contents of the view. (<a href="http://bugs.mysql.com/6120" target="_top">Bug #6120</a>)
        </p></li><li><p>
          For prepared statements, the SQL parser did not disallow
          ‘<code class="literal">?</code>’ parameter markers
          immediately adjacent to other tokens, which could result in
          malformed statements in the binary log. (For example,
          <code class="literal">SELECT * FROM t WHERE? = 1</code> could become
          <code class="literal">SELECT * FROM t WHERE0 = 1</code>.) (<a href="http://bugs.mysql.com/11299" target="_top">Bug #11299</a>)
        </p></li><li><p>
          When two threads compete for the same table, a deadlock could
          occur if one thread has also a lock on another table through
          <code class="literal">LOCK TABLES</code> and the thread is attempting to
          remove the table in some manner and the other thread want
          locks on both tables. (<a href="http://bugs.mysql.com/10600" target="_top">Bug #10600</a>)
        </p></li><li><p>
          Aliasing the column names in a <code class="literal">VIEW</code> did not
          work when executing a <code class="literal">SELECT</code> query on the
          <code class="literal">VIEW</code>. (<a href="http://bugs.mysql.com/11399" target="_top">Bug #11399</a>)
        </p></li><li><p>
          Performing an <code class="literal">ORDER BY</code> on a
          <code class="literal">SELECT</code> from a <code class="literal">VIEW</code>
          produced unexpected results when <code class="literal">VIEW</code> and
          underlying table had the same column name on different
          columns. <a href="http://bugs.mysql.com/11709" target="_top">Bug #11709</a>)
        </p></li><li><p>
          The C API function <code class="literal">mysql_statement_reset()</code>
          did not clear error information. (<a href="http://bugs.mysql.com/11183" target="_top">Bug #11183</a>)
        </p></li><li><p>
          When used within a subquery, <code class="literal">SUBSTRING()</code>
          returned an empty string. (<a href="http://bugs.mysql.com/10269" target="_top">Bug #10269</a>)
        </p></li><li><p>
          Multiple-table <code class="literal">UPDATE</code> queries using
          <code class="literal">CONVERT_TZ()</code> would fail with an error. (<a href="http://bugs.mysql.com/9979" target="_top">Bug
          #9979</a>)
        </p></li><li><p>
          <code class="literal">mysql_fetch_fields()</code> returned incorrect
          length information for <code class="literal">MEDIUM</code> and
          <code class="literal">LONG</code> <code class="literal">TEXT</code> and
          <code class="literal">BLOB</code> columns. (<a href="http://bugs.mysql.com/9735" target="_top">Bug #9735</a>)
        </p></li><li><p>
          <code class="literal">mysqlbinlog</code> was failing the test suite on
          Windows due to <code class="literal">BOOL</code> being incorrectly cast
          to <code class="literal">INT</code>. (<a href="http://bugs.mysql.com/11567" target="_top">Bug #11567</a>)
        </p></li><li><p>
          <code class="literal">NDBCLuster</code>: Server left core files
          following shutdown if data nodes had failed. (<a href="http://bugs.mysql.com/11516" target="_top">Bug #11516</a>)
        </p></li><li><p>
          Creating a trigger in one database that references a table in
          another database was being allowed without generating errors.
          (<a href="http://bugs.mysql.com/8751" target="_top">Bug #8751</a>)
        </p></li><li><p>
          Duplicate trigger names were allowed within a single schema.
          (<a href="http://bugs.mysql.com/6182" target="_top">Bug #6182</a>)
        </p></li><li><p>
          Server did not accept some fully-qualified trigger names. (<a href="http://bugs.mysql.com/8758" target="_top">Bug
          #8758</a>)
        </p></li><li><p>
          The <code class="literal">traditional</code> SQL mode accepted invalid
          dates if the date value provided was the result of an implicit
          type conversion. (<a href="http://bugs.mysql.com/5906" target="_top">Bug #5906</a>)
        </p></li><li><p>
          The MySQL server had issues with certain combinations of
          basedir and datadir. (<a href="http://bugs.mysql.com/7249" target="_top">Bug #7249</a>)
        </p></li><li><p>
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> had some
          inaccurate values for some data types. (<a href="http://bugs.mysql.com/11057" target="_top">Bug #11057</a>)
        </p></li><li><p>
          LIKE pattern matching using prefix index didn't return correct
          result. (<a href="http://bugs.mysql.com/11650" target="_top">Bug #11650</a>)
        </p></li><li><p>
          For several character sets, MySQL incorrectly converted the
          character code for the division sign to the
          <code class="literal">eucjpms</code> character set. (<a href="http://bugs.mysql.com/11717" target="_top">Bug #11717</a>)
        </p></li><li><p>
          When invoked within a view, <code class="literal">SUBTIME()</code>
          returned incorrect values. (<a href="http://bugs.mysql.com/11760" target="_top">Bug #11760</a>)
        </p></li><li><p>
          <code class="literal">SHOW BINARY LOGS</code> displayed a file size of 0
          for all log files but the current one if the files were not
          located in the data directory. (<a href="http://bugs.mysql.com/12004" target="_top">Bug #12004</a>)
        </p></li><li><p>
          Server-side prepared statements failed for columns with a
          character set of <code class="literal">ucs2</code>. (<a href="http://bugs.mysql.com/9442" target="_top">Bug #9442</a>)
        </p></li><li><p>
          References to system variables in an SQL statement prepared
          with <code class="literal">PREPARE</code> were evaluated during
          <code class="literal">EXECUTE</code> to their values at prepare time,
          not to their values at execution time. (<a href="http://bugs.mysql.com/9359" target="_top">Bug #9359</a>)
        </p></li><li><p>
          For server shutdown on Windows, error messages of the form
          <code class="literal">Forcing close of thread <em class="replaceable"><code>n</code></em>
          user: '<em class="replaceable"><code>name</code></em>'</code> were being
          written to the error log. Now connections are closed more
          gracefully without generating error messages. (<a href="http://bugs.mysql.com/7403" target="_top">Bug #7403</a>)
        </p></li><li><p>
          Increased the version number of the
          <code class="literal">libmysqlclient</code> shared library from 14 to 15
          because it is binary incompatible with the MySQL 4.1 client
          library. (<a href="http://bugs.mysql.com/11893" target="_top">Bug #11893</a>)
        </p></li><li><p>
          A recent optimizer change caused <code class="literal">DELETE …
          WHERE … NOT LIKE</code> and <code class="literal">DELETE …
          WHERE … NOT BETWEEN</code> to not properly identify
          the rows to be deleted. (<a href="http://bugs.mysql.com/11853" target="_top">Bug #11853</a>)
        </p></li><li><p>
          Within a stored procedure that selects from a table, invoking
          another procedure that requires a write lock for the table
          caused that procedure to fail with a message that the table
          was read-locked. (<a href="http://bugs.mysql.com/9565" target="_top">Bug #9565</a>)
        </p></li><li><p>
          Within a stored procedure, selecting from a table through a
          view caused subsequent updates to the table to fail with a
          message that the table was read-locked. (<a href="http://bugs.mysql.com/9597" target="_top">Bug #9597</a>)
        </p></li><li><p>
          For a stored procedure defined with <code class="literal">SQL SECURITY
          DEFINER</code> characteristic,
          <code class="literal">CURRENT_USER()</code> incorrectly reported the use
          invoking the procedure, not the user who defined it. (<a href="http://bugs.mysql.com/7291" target="_top">Bug
          #7291</a>)
        </p></li><li><p>
          Creating a table with a <code class="literal">SET</code> or
          <code class="literal">ENUM</code> column with the <code class="literal">DEFAULT
          0</code> clause caused a server crash if the table's
          character set was <code class="literal">utf8</code>. (<a href="http://bugs.mysql.com/11819" target="_top">Bug #11819</a>)
        </p></li><li><p>
          With strict SQL mode enabled, <code class="literal">ALTER TABLE</code>
          reported spurious “<span class="quote">Invalid default value</span>”
          messages for columns that had no <code class="literal">DEFAULT</code>
          clause. (<a href="http://bugs.mysql.com/9881" target="_top">Bug #9881</a>)
        </p></li><li><p>
          In SQL prepared statements, comparisons could fail for values
          not equally space-padded. For example, <code class="literal">SELECT 'a' =
          'a ';</code> returns 1, but <code class="literal">PREPARE s FROM
          'SELECT ?=?'; SET @a = 'a', @b = 'a '; PREPARE s FROM
          'SELECT ?=?'; EXECUTE s USING @a, @b;</code> incorrectly
          returned 0. (<a href="http://bugs.mysql.com/9379" target="_top">Bug #9379</a>)
        </p></li><li><p>
          Labels in stored routines did not work if the character set
          was not <code class="literal">latin1</code>. (<a href="http://bugs.mysql.com/7088" target="_top">Bug #7088</a>)
        </p></li><li><p>
          Invoking the <code class="literal">DES_ENCRYPT()</code> function could
          cause a server crash if the server was started without the
          <code class="option">--des-key-file</code> option. (<a href="http://bugs.mysql.com/11643" target="_top">Bug #11643</a>)
        </p></li><li><p>
          The server crashed upon execution of a statement that used a
          stored function indirectly (via a view) if the function was
          not yet in the connection-specific stored routine cache and
          the statement would update a
          <code class="literal">Handler_<em class="replaceable"><code>xxx</code></em></code>
          status variable. This fix allows the use of stored routines
          under <code class="literal">LOCK TABLES</code> without explicitly
          locking the <code class="literal">mysql.lock</code> table. However, you
          cannot use <code class="literal">mysql.proc</code> in statements that
          will combine locking of it with modifications for other
          tables. (<a href="http://bugs.mysql.com/11554" target="_top">Bug #11554</a>)
        </p></li><li><p>
          The server crashed when dropping a trigger that invoked a
          stored procedure, if the procedure was not yet in the
          connection-specific stored routine cache. (<a href="http://bugs.mysql.com/11889" target="_top">Bug #11889</a>)
        </p></li><li><p>
          Selecting the result of an aggregate function for an
          <code class="literal">ENUM</code> or <code class="literal">SET</code> column
          within a subquery could result in a server crash. (<a href="http://bugs.mysql.com/11821" target="_top">Bug #11821</a>)
        </p></li><li><p>
          Incorrect column values could be retrieved from views defined
          using statements of the form <code class="literal">SELECT * FROM
          <em class="replaceable"><code>tbl_name</code></em></code>. (<a href="http://bugs.mysql.com/11771" target="_top">Bug #11771</a>)
        </p></li><li><p>
          The <code class="literal">mysql.proc</code> table was not being created
          properly with the proper <code class="literal">utf8</code> character set
          and collation, causing server crashes for stored procedure
          operations if the server was using a multi-byte character set.
          To take advantage of the bug fix,
          <span><strong class="command">mysql_fix_privilege_tables</strong></span> should be run to
          correct the structure of the <code class="literal">mysql.proc</code>
          table. (<a href="http://bugs.mysql.com/11365" target="_top">Bug #11365</a>)
        </p><p>
          Note that it is <span class="emphasis"><em>necessary</em></span> to run
          <span><strong class="command">mysql_fix_privileges_tables</strong></span> when upgrading
          from a previous installation that contains the
          <code class="literal">mysql.proc</code> table (that is, from a previous
          5.0 installation). Otherwise, creating stored procedures might
          not work.
        </p></li><li><p>
          Execution of a prepared statement that invoked a non-existent
          or dropped stored routine would crash the server. (<a href="http://bugs.mysql.com/11834" target="_top">Bug #11834</a>)
        </p></li><li><p>
          Executing a statement that invoked a trigger would cause
          problems unless a <code class="literal">LOCK TABLES</code> was first
          issued for any tables accessed by the trigger.
          <span class="bold"><strong>Note</strong></span>: The exact nature of the
          problem depended upon the MySQL 5.0 release being used: prior
          to 5.0.3, this resulted in a crash; from 5.0.3 to 5.0.7, MySQL
          would issue a warning; in 5.0.9, the server would issue an
          error. (<a href="http://bugs.mysql.com/8406" target="_top">Bug #8406</a>)
        </p><p>
          The same issue caused <code class="literal">LOCK TABLES</code> to fail
          following <code class="literal">UNLOCK TABLES</code> if triggers were
          involved. (<a href="http://bugs.mysql.com/9581" target="_top">Bug #9581</a>)
        </p></li><li><p>
          In a shared Windows environment, MySQL could not find its
          configuration file unless the file was in the
          <code class="filename">C:\</code> directory. (<a href="http://bugs.mysql.com/5354" target="_top">Bug #5354</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-9"></a>D.1.8. Changes in release 5.0.9 (15 July 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          An attempt to create a <code class="literal">TIMESTAMP</code> column
          with a display width (for example,
          <code class="literal">TIMESTAMP(6)</code>) now results in a warning.
          Display widths have not been supported for
          <code class="literal">TIMESTAMP</code> since MySQL 4.1. (<a href="http://bugs.mysql.com/10466" target="_top">Bug #10466</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: When creating or extending an
          InnoDB data file, at most one megabyte at a time is allocated
          for initializing the file. Previously, InnoDB allocated and
          initialized 1 or 8 megabytes of memory, even if only a few
          16-kilobyte pages were to be written. This improves the
          performance of <code class="literal">CREATE TABLE</code> in
          <code class="literal">innodb_file_per_table</code> mode.
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Various optimizations. Removed
          unreachable debug code from non-debug builds. Added hints for
          the branch predictor in <span><strong class="command">gcc</strong></span>. Made
          assertions occupy less space.
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Make
          <code class="literal">innodb_thread_concurrency=20</code> by default.
          Bypass the concurrency checking if the setting is greater than
          or equal to 20.
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Make <code class="literal">CHECK TABLE</code>
          killable. (<a href="http://bugs.mysql.com/9730" target="_top">Bug #9730</a>)
        </p></li><li><p>
          Recursion in stored routines is now disabled because it was
          crashing the server. We plan to modify stored routines to
          allow this to operate safely in a future release. (<a href="http://bugs.mysql.com/11394" target="_top">Bug #11394</a>)
        </p></li><li><p>
          The handling of <code class="literal">BIT</code> columns has been
          improved, and should now be much more reliable in a number of
          cases. (<a href="http://bugs.mysql.com/10617" target="_top">Bug #10617</a>, <a href="http://bugs.mysql.com/11091" target="_top">Bug #11091</a>, <a href="http://bugs.mysql.com/11572" target="_top">Bug #11572</a>)
        </p></li><li><p>
          <code class="literal">mysql_real_escape_string()</code> API function now
          respects <code class="literal">NO_BACKSLASH_ESCAPES</code> SQL mode.
          (<a href="http://bugs.mysql.com/10214" target="_top">Bug #10214</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">SHOW CREATE VIEW</code> did not take the
          <code class="literal">ANSI MODE</code> into account when quoting
          identifiers. (<a href="http://bugs.mysql.com/6903" target="_top">Bug #6903</a>)
        </p></li><li><p>
          The <code class="literal">mysql_config</code> script did not handle
          symbolic linking properly. (<a href="http://bugs.mysql.com/10986" target="_top">Bug #10986</a>)
        </p></li><li><p>
          Incorrect results when using <code class="literal">GROUP BY ... WITH
          ROLLUP</code> on a <code class="literal">VIEW</code>. (<a href="http://bugs.mysql.com/11639" target="_top">Bug #11639</a>)
        </p></li><li><p>
          Instances of the <code class="literal">VAR_SAMP()</code> function in
          view definitions were converted to
          <code class="literal">VARIANCE()</code>. This is incorrect because
          <code class="literal">VARIANCE()</code> is the same as
          <code class="literal">VAR_POP()</code>, not
          <code class="literal">VAR_SAMP()</code>. (<a href="http://bugs.mysql.com/10651" target="_top">Bug #10651</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> failed when reloading a view if
          the view was defined in terms of a different view that had not
          yet been reloaded. <span><strong class="command">mysqldump</strong></span> now creates a
          dummy table to handle this case. (<a href="http://bugs.mysql.com/10927" target="_top">Bug #10927</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> could crash for illegal or
          nonexistent table names. (<a href="http://bugs.mysql.com/9358" target="_top">Bug #9358</a>)
        </p></li><li><p>
          The <code class="option">--no-data</code> option for
          <span><strong class="command">mysqldump</strong></span> was being ignored if table names
          were given after the database name. (<a href="http://bugs.mysql.com/9558" target="_top">Bug #9558</a>)
        </p></li><li><p>
          The <code class="option">--master-data</code> option for
          <span><strong class="command">mysqldump</strong></span> resulted in no error if the
          binary log was not enabled. Now an error occurs unless the
          <code class="option">--force</code> option is given. (<a href="http://bugs.mysql.com/11678" target="_top">Bug #11678</a>)
        </p></li><li><p>
          <code class="literal">DES_ENCRYPT()</code> and
          <code class="literal">DES_DECRYPT()</code> require SSL support to be
          enabled, but were not checking for it. Checking for incorrect
          arguments or resource exhaustion was also improved for these
          functions. (<a href="http://bugs.mysql.com/10589" target="_top">Bug #10589</a>)
        </p></li><li><p>
          When used in joins, <code class="literal">SUBSTRING()</code> failed to
          truncate to zero any string values that could not be converted
          to numbers. (<a href="http://bugs.mysql.com/10124" target="_top">Bug #10124</a>)
        </p></li><li><p>
          <code class="literal">mysqldump --xml</code> did not format
          <code class="literal">NULL</code> column values correctly. (<a href="http://bugs.mysql.com/9657" target="_top">Bug #9657</a>)
        </p></li><li><p>
          There was a compression algorithm issue with
          <code class="literal">myisampack</code> for very large datasets (where
          the total size of of all records in a single column was on the
          order of 3 GB or more) on 64-bit platforms. (A fix for other
          platforms was made in MySQL 5.0.6.) (<a href="http://bugs.mysql.com/8321" target="_top">Bug #8321</a>)
        </p></li><li><p>
          Temporary tables were created in the data directory instead of
          <code class="literal">tmpdir</code>. (<a href="http://bugs.mysql.com/11440" target="_top">Bug #11440</a>)
        </p></li><li><p>
          MySQL would not compile correctly on QNX due to missing
          <code class="literal">rint()</code> function. (<a href="http://bugs.mysql.com/11544" target="_top">Bug #11544</a>)
        </p></li><li><p>
          A <code class="literal">SELECT DISTINCT
          <em class="replaceable"><code>col_name</code></em></code> would work
          correctly with a <code class="literal">MyISAM</code> table only when
          there was an index on <em class="replaceable"><code>col_name</code></em>.
          (<a href="http://bugs.mysql.com/11484" target="_top">Bug #11484</a>)
        </p></li><li><p>
          The server would lose table-level <code class="literal">CREATE
          VIEW</code> and <code class="literal">SHOW VIEW</code> privileges
          following a <code class="literal">FLUSH PRIVILEGES</code> or server
          restart. (<a href="http://bugs.mysql.com/9795" target="_top">Bug #9795</a>)
        </p></li><li><p>
          In strict mode, an <code class="literal">INSERT</code> into a view that
          did not include a value for a <code class="literal">NOT NULL</code>
          column but that did include a <code class="literal">WHERE</code> test on
          the same column would succeed, This happened even though the
          <code class="literal">INSERT</code> should have been prevented due to
          the failure to supply a value for the <code class="literal">NOT
          NULL</code> column. (<a href="http://bugs.mysql.com/6443" target="_top">Bug #6443</a>)
        </p></li><li><p>
          Running a <code class="literal">CHECK TABLES</code> on multiple views
          crashed the server. (<a href="http://bugs.mysql.com/11337" target="_top">Bug #11337</a>)
        </p></li><li><p>
          When a table had a primary key containing a
          <code class="literal">BLOB</code> column, creation of another index
          failed with the error <code class="literal">BLOB/TEXT column used in key
          specification without keylength</code>, even when the new
          index did not contain a <code class="literal">BLOB</code> column. (<a href="http://bugs.mysql.com/11657" target="_top">Bug
          #11657</a>)
        </p></li><li><p>
          NDB Cluster: When trying to open a table that could not be
          discovered or unpacked, cluster would return error codes which
          the MySQL server falsely interpreted as operating system
          errors. (<a href="http://bugs.mysql.com/103651" target="_top">Bug #103651</a>)
        </p></li><li><p>
          Manually inserting a row with <code class="literal">host=''</code> into
          <code class="literal">mysql.tables_priv</code> and performing a
          <code class="literal">FLUSH PRIVILEGES</code> would cause the server to
          crash. (<a href="http://bugs.mysql.com/11330" target="_top">Bug #11330</a>)
        </p></li><li><p>
          A cursor using a query with a filter on a
          <code class="literal">DATE</code> or <code class="literal">DATETIME</code> column
          would cause the server to crash server after the data was
          fetched. (<a href="http://bugs.mysql.com/11172" target="_top">Bug #11172</a>)
        </p></li><li><p>
          Closing a cursor that was already closed would cause MySQL to
          hang. (<a href="http://bugs.mysql.com/9814" target="_top">Bug #9814</a>)
        </p></li><li><p>
          Using <code class="literal">CONCAT_WS</code> on a column set
          <code class="literal">NOT NULL</code> caused incorrect results when used
          in a <code class="literal">LEFT JOIN</code>. (<a href="http://bugs.mysql.com/11469" target="_top">Bug #11469</a>)
        </p></li><li><p>
          Signed <code class="literal">BIGINT</code> would not accept
          <code class="literal">-9223372036854775808</code> as a
          <code class="literal">DEFAULT</code> value. (<a href="http://bugs.mysql.com/11215" target="_top">Bug #11215</a>)
        </p></li><li><p>
          Views did not use indexes on all appropriate queries. (<a href="http://bugs.mysql.com/10031" target="_top">Bug
          #10031</a>)
        </p></li><li><p>
          For <code class="literal">MEMORY</code> tables, it was possible for for
          updates to be performed using outdated key statistics when the
          updates involved only very small changes in a very few rows.
          This resulted in the random failures of queries such as
          <code class="literal">UPDATE t SET col = col + 1 WHERE col_key =
          2;</code> where the same query with no
          <code class="literal">WHERE</code> clause would succeed. (<a href="http://bugs.mysql.com/10178" target="_top">Bug #10178</a>)
        </p></li><li><p>
          Optimizer performed range check when comparing unsigned
          integers to negative constants, could cause errors. (<a href="http://bugs.mysql.com/11185" target="_top">Bug
          #11185</a>)
        </p></li><li><p>
          Wrong comparison method used in <code class="literal">VIEW</code> when
          relaxed date syntax used (i.e. <code class="literal">2005.06.10</code>).
          (<a href="http://bugs.mysql.com/11325" target="_top">Bug #11325</a>)
        </p></li><li><p>
          The <code class="literal">ENCRYPT()</code> and
          <code class="literal">SUBSTRING_INDEX()</code> functions would cause
          errors when used with a <code class="literal">VIEW</code>. (<a href="http://bugs.mysql.com/7024" target="_top">Bug #7024</a>)
        </p></li><li><p>
          Clients would hang following some errors with stored
          procedures. (<a href="http://bugs.mysql.com/9503" target="_top">Bug #9503</a>)
        </p></li><li><p>
          Combining cursors and subselects could cause server crash or
          memory leaks. (<a href="http://bugs.mysql.com/10736" target="_top">Bug #10736</a>)
        </p></li><li><p>
          If a prepared statement cursor is opened but not completely
          fetched, attempting to open a cursor for a second prepared
          statement will fail. (<a href="http://bugs.mysql.com/10794" target="_top">Bug #10794</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-8"></a>D.1.9. Changes in release 5.0.8 (Not released)</h3></div></div></div><p>
      <span class="bold"><strong>Note</strong></span>: Starting with version
      5.0.8, changes for MySQL Cluster can be found in the combined
      Change History.
    </p><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">MEMORY</code> tables now support indexes of up to
          500 bytes. See <a href="storage-engines.html#memory-storage-engine" title="14.4. The MEMORY (HEAP) Storage Engine">Section 14.4, “The <code class="literal">MEMORY</code> (<code class="literal">HEAP</code>) Storage Engine”</a>. (<a href="http://bugs.mysql.com/10566" target="_top">Bug
          #10566</a>)
        </p></li><li><p>
          New <code class="literal">SQL_MODE</code> -
          <code class="literal">NO_ENGINE_SUBSTITUTION</code> Prevents automatic
          substitution of storage engine when the requested storage
          engine is disabled or not compiled in. (<a href="http://bugs.mysql.com/6877" target="_top">Bug #6877</a>)
        </p></li><li><p>
          The statements <code class="literal">CREATE TABLE</code>,
          <code class="literal">TRUNCATE TABLE</code>, <code class="literal">DROP
          DATABASE</code>, and <code class="literal">CREATE DATABASE</code>
          cause an implicit commit. (<a href="http://bugs.mysql.com/6883" target="_top">Bug #6883</a>)
        </p></li><li><p>
          Expanded on information provided in general log and slow query
          log for prepared statements. (<a href="http://bugs.mysql.com/8367" target="_top">Bug #8367</a>, <a href="http://bugs.mysql.com/9334" target="_top">Bug #9334</a>)
        </p></li><li><p>
          Where a <code class="literal">GROUP BY</code> query uses a grouping
          column from the query's <code class="literal">SELECT</code> clause,
          MySQL now issues a warning. This is because the SQL standard
          states that any grouping column must unambiguously reference a
          column of the table resulting from the query's
          <code class="literal">FROM</code> clause, and allowing columns from the
          <code class="literal">SELECT</code> clause to be used as grouping
          columns is a MySQL extension to the standard.
        </p><p>
          By way of example, consider the following table:
        </p><pre class="programlisting">CREATE TABLE users (
  userid INT NOT NULL PRIMARY KEY,
  username VARCHAR(25),
  usergroupid INT NOT NULL
);
</pre><p>
          MySQL allows you to use the alias in this query:
        </p><pre class="programlisting">SELECT usergroupid AS id, COUNT(userid) AS number_of_users
FROM users
GROUP BY id;
</pre><p>
          However, the SQL standard requires that the column name be
          used, as shown here:
        </p><pre class="programlisting">SELECT usergroupid AS id, COUNT(userid) AS number_of_users
FROM users
GROUP BY usergroupid;
</pre><p>
          Queries such as the first of the two shown above will continue
          to be supported in MySQL; however, beginning with MySQL 5.0.8,
          using a column alias in this fashion will generate a warning.
          Note that in the event of a collision between column names
          and/or aliases used in joins, MySQL attempts to resolve the
          conflict by giving preference to columns arising from tables
          named in the query's <code class="literal">FROM</code> clause. (<a href="http://bugs.mysql.com/11211" target="_top">Bug
          #11211</a>)
        </p></li><li><p>
          The granting or revocation of privileges on a stored routine
          is no longer performed when running the server with
          <code class="option">--skip-grant-tables</code> even after the statement
          <code class="literal">SET @@global.automatic_sp_privileges=1;</code> has
          been executed. (<a href="http://bugs.mysql.com/9993" target="_top">Bug #9993</a>)
        </p></li><li><p>
          Added support for <code class="literal">B'10'</code> syntax for bit
          literal. (<a href="http://bugs.mysql.com/10650" target="_top">Bug #10650</a>)
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Security fix</strong></span>: On Windows
          systems, a user with any of the following privileges
        </p><div class="itemizedlist"><ul type="circle"><li><p>
              <code class="literal">REFERENCES</code>
            </p></li><li><p>
              <code class="literal">CREATE TEMPORARY TABLES</code>
            </p></li><li><p>
              <code class="literal">GRANT OPTION</code>
            </p></li><li><p>
              <code class="literal">CREATE</code>
            </p></li><li><p>
              <code class="literal">SELECT</code>
            </p></li></ul></div><p>
          on <code class="literal">*.*</code> could crash
          <code class="literal">mysqld</code> by issuing a <code class="literal">USE
          LPT1;</code> or <code class="literal">USE PRN;</code> command. In
          addition, any of the commands <code class="literal">USE NUL;</code>,
          <code class="literal">USE CON;</code>, <code class="literal">USE COM1;</code>, or
          <code class="literal">USE AUX;</code> would report success even though
          the database was not in fact changed.
          <span class="bold"><strong>Note</strong></span>: Although this bug was
          thought to be fixed previously, it was later discovered to be
          present in the MySQL 5.0.7-beta release for Windows. (<a href="http://bugs.mysql.com/9148" target="_top">Bug
          #9148</a>,
          <a href="http://cve.mitre.org/cvename.cgi?name=CAN-2005-0799" target="_top">CAN-2005-0799</a>
        </p></li><li><p>
          A <code class="literal">CREATE TABLE
          <em class="replaceable"><code>db_name</code></em>.<em class="replaceable"><code>tbl_name</code></em>
          LIKE ...</code> statement would crash the server when no
          database was selected. (<a href="http://bugs.mysql.com/11028" target="_top">Bug #11028</a>)
        </p></li><li><p>
          <code class="literal">SELECT DISTINCT</code> queries or <code class="literal">GROUP
          BY</code> queries without <code class="literal">MIN()</code> or
          <code class="literal">MAX()</code> could return inconsistent results for
          indexed columns. (<a href="http://bugs.mysql.com/11044" target="_top">Bug #11044</a>)
        </p></li><li><p>
          The <code class="literal">SHOW INSTANCE OPTIONS</code> command in MySQL
          Instance Manager displayed option values incorrectly for
          options for which no value had been given. (<a href="http://bugs.mysql.com/11200" target="_top">Bug #11200</a>)
        </p></li><li><p>
          An outer join with an empty derived table (a result from a
          subquery) returned no result. (<a href="http://bugs.mysql.com/11284" target="_top">Bug #11284</a>)
        </p></li><li><p>
          An outer join with an <code class="literal">ON</code> condition that
          evaluated to false could return an incorrect result. (<a href="http://bugs.mysql.com/11285" target="_top">Bug
          #11285</a>)
        </p></li><li><p>
          <code class="literal">mysqld_safe</code> would sometimes fail to remove
          the pid file for the old <code class="literal">mysql</code> process
          after a crash. As a result, the server would fail to start due
          to a false <code class="literal">A mysqld process already
          exists...</code> error. (<a href="http://bugs.mysql.com/11122" target="_top">Bug #11122</a>)
        </p></li><li><p>
          <code class="literal">CAST( ... AS DECIMAL) didn't work for strings. (<a href="http://bugs.mysql.com/11283" target="_top">Bug
          #11283</a>)</code>
        </p></li><li><p>
          <code class="literal">NULLIF()</code> function could produce incorrect
          results if first argument is <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/11142" target="_top">Bug
          #11142</a>)
        </p></li><li><p>
          Setting <code class="literal">@@SQL_MODE = NULL</code> caused an
          erroneous error message. (<a href="http://bugs.mysql.com/10732" target="_top">Bug #10732</a>)
        </p></li><li><p>
          Converting a <code class="literal">VARCHAR</code> column having an index
          to a different type (such as <code class="literal">TINYTEXT</code>) gave
          rise to an incorrect error message. (<a href="http://bugs.mysql.com/10543" target="_top">Bug #10543</a>)
        </p><p>
          Note that this bugfix induces a slight change in the behavior
          of indexes: If an index is defined to be the same length as a
          field (or is left to default to that field's length), and the
          length of the field is later changed, then the index will
          adopt the new length of the field. Previously, the size of the
          index did not change for some field types (such as
          <code class="literal">VARCHAR</code>) when the field type was changed.
        </p></li><li><p>
          <code class="literal">sql_data_access</code> column of
          <code class="literal">routines</code> table of
          <code class="literal">INFORMATION_SCHEMA</code> was empty. (<a href="http://bugs.mysql.com/11055" target="_top">Bug #11055</a>)
        </p></li><li><p>
          A <code class="literal">CAST()</code> value could not be included in a
          <code class="literal">VIEW</code>. (<a href="http://bugs.mysql.com/11387" target="_top">Bug #11387</a>)
        </p></li><li><p>
          Server crashed when using <code class="literal">GROUP BY</code> on the
          result of a <code class="literal">DIV</code> operation on a
          <code class="literal">DATETIME</code> value. (<a href="http://bugs.mysql.com/11385" target="_top">Bug #11385</a>)
        </p></li><li><p>
          Possible <code class="literal">NULL</code> values in
          <code class="literal">BLOB</code> columns could crash the server when a
          <code class="literal">BLOB</code> was used in a <code class="literal">GROUP
          BY</code> query. (<a href="http://bugs.mysql.com/11295" target="_top">Bug #11295</a>)
        </p></li><li><p>
          Fixed 64 bit compiler warning for packet length in
          replication. (<a href="http://bugs.mysql.com/11064" target="_top">Bug #11064</a>)
        </p></li><li><p>
          Multiple range accesses in a subquery cause server crash. (<a href="http://bugs.mysql.com/11487" target="_top">Bug
          #11487</a>)
        </p></li><li><p>
          An issue with index merging could cause suboptimal index merge
          plans to be chosen when searching by indexes created on
          <code class="literal">DATE</code> columns. The same issue caused the
          InnoDB storage engine to issue the warning <code class="literal">using a
          partial-field key prefix in search</code>. (<a href="http://bugs.mysql.com/8441" target="_top">Bug #8441</a>)
        </p></li><li><p>
          The <code class="literal">mysqlhotcopy</code> script was not parsing the
          output of <code class="literal">SHOW SLAVE STATUS</code> correctly when
          called with the <code class="option">--record_log_pos</code> option. (<a href="http://bugs.mysql.com/7967" target="_top">Bug
          #7967</a>)
        </p></li><li><p>
          <code class="literal">SELECT * FROM
          <em class="replaceable"><code>table</code></em></code> returned incorrect
          results when called from a stored procedure, where
          <em class="replaceable"><code>table</code></em> had a primary key. (<a href="http://bugs.mysql.com/10136" target="_top">Bug
          #10136</a>)
        </p></li><li><p>
          When used in defining a view, the
          <code class="literal">TIME_FORMAT()</code> function failed with
          calculated values, for example, when passed the value returned
          by <code class="literal">SEC_TO_TIME()</code>. (<a href="http://bugs.mysql.com/7521" target="_top">Bug #7521</a>)
        </p></li><li><p>
          <code class="literal">SELECT DISTINCT ... GROUP BY
          <em class="replaceable"><code>constant</code></em></code> returned
          multiple rows (it should return a single row). (<a href="http://bugs.mysql.com/8614" target="_top">Bug #8614</a>)
        </p></li><li><p>
          <code class="literal">INSERT INTO SELECT FROM
          <em class="replaceable"><code>view</code></em></code> produced incorrect
          result when using <code class="literal">ORDER BY</code>. (<a href="http://bugs.mysql.com/11298" target="_top">Bug #11298</a>)
        </p></li><li><p>
          Fixed hang/crash with Boolean full-text search where a query
          contained more query terms that one-third of the query length
          (it could be achieved with truncation operator: 'a*b*c*d*').
          (<a href="http://bugs.mysql.com/7858" target="_top">Bug #7858</a>)
        </p></li><li><p>
          Fixed column name generation in <code class="literal">VIEW</code>
          creation to ensure there are no duplicate column names. (<a href="http://bugs.mysql.com/7448" target="_top">Bug
          #7448</a>)
        </p></li><li><p>
          An <code class="literal">ORDER BY</code> clause sometimes had no effect
          on the ordering of a result when selecting specific columns
          (as opposed to using <code class="literal">SELECT *</code>) from a view.
          (<a href="http://bugs.mysql.com/7422" target="_top">Bug #7422</a>)
        </p></li><li><p>
          Some data definition statements (<code class="literal">CREATE
          TABLE</code> where the table was not a temporary table,
          <code class="literal">TRUNCATE TABLE</code>, <code class="literal">DROP
          DATABASE</code>, and <code class="literal">CREATE DATABASE</code>)
          were not being written to the binary log after a
          <code class="literal">ROLLBACK</code>. This also caused problems with
          replication. (<a href="http://bugs.mysql.com/6883" target="_top">Bug #6883</a>)
        </p></li><li><p>
          Calling a stored procedure that made use of an <code class="literal">INSERT
          ... SELECT ... UNION SELECT ...</code> query caused a
          server crash. (<a href="http://bugs.mysql.com/11060" target="_top">Bug #11060</a>)
        </p></li><li><p>
          Selecting from a view defined using <code class="literal">SELECT
          SUM(DISTINCT ...)</code> caused an error; attempting to
          execute a <code class="literal">SELECT * FROM
          INFORMATION_SCHEMA.TABLES</code> query after defining such
          a view crashed the server. (<a href="http://bugs.mysql.com/7015" target="_top">Bug #7015</a>)
        </p></li><li><p>
          The <span><strong class="command">mysql</strong></span> client would output a prompt
          twice following input of very long strings, because it
          incorrectly assumed that a call to the
          <span><strong class="command">_cgets()</strong></span> function would clear the input
          buffer. (<a href="http://bugs.mysql.com/10840" target="_top">Bug #10840</a>)
        </p></li><li><p>
          A three byte buffer overflow in the client functions caused
          improper exiting of the client when reading a command from the
          user. (<a href="http://bugs.mysql.com/10841" target="_top">Bug #10841</a>)
        </p></li><li><p>
          Fixed a problem where a stored procedure caused a server crash
          if the query cache was enabled. (<a href="http://bugs.mysql.com/9715" target="_top">Bug #9715</a>)
        </p></li><li><p>
          <code class="literal">SHOW CREATE DATABASE INFORMATION_SCHEMA</code>
          returned an “<span class="quote">unknown database</span>” error. (<a href="http://bugs.mysql.com/9434" target="_top">Bug #9434</a>)
        </p></li><li><p>
          Corrected a problem with <code class="literal">IFNULL()</code> returning
          an incorrect result on 64-bit systems. (<a href="http://bugs.mysql.com/11235" target="_top">Bug #11235</a>)
        </p></li><li><p>
          Fixed a problem resolving table names with
          <code class="literal">lower_case_table_names=2</code> when the table
          name lettercase differed in the <code class="literal">FROM</code> and
          <code class="literal">WHERE</code> clauses. (<a href="http://bugs.mysql.com/9500" target="_top">Bug #9500</a>)
        </p></li><li><p>
          Fixed server crash due to some internal functions not taking
          into account that for multi-byte character sets,
          <code class="literal">CHAR</code> columns could exceed 255 bytes and
          <code class="literal">VARCHAR</code> columns could exceed 65,535 bytes.
          (<a href="http://bugs.mysql.com/11167" target="_top">Bug #11167</a>)
        </p></li><li><p>
          Fixed locking problems for multiple-statement
          <code class="literal">DELETE</code> statements performed within a stored
          routine, such as incorrectly locking a to-be-modified table
          with a read lock rather than a write lock. (<a href="http://bugs.mysql.com/11158" target="_top">Bug #11158</a>)
        </p></li><li><p>
          Fixed a portability problem testing for
          <code class="literal">crypt()</code> support that caused compilation
          problems when using OpenSSL/yaSSL on HP-UX and Mac OS X. (<a href="http://bugs.mysql.com/10675" target="_top">Bug
          #10675</a>, <a href="http://bugs.mysql.com/11150" target="_top">Bug #11150</a>)
        </p></li><li><p>
          The hostname cache was not working. (<a href="http://bugs.mysql.com/10931" target="_top">Bug #10931</a>)
        </p></li><li><p>
          On Windows, <code class="literal">mysqlshow</code> did not interpret
          wildcard characters properly if they were given in the table
          name argument. (<a href="http://bugs.mysql.com/10947" target="_top">Bug #10947</a>)
        </p></li><li><p>
          The default hostname for MySQL server was always
          <code class="literal">mysql</code>. (<a href="http://bugs.mysql.com/11174" target="_top">Bug #11174</a>)
        </p></li><li><p>
          Using <code class="literal">PREPARE</code> to prepare a statement that
          invoked a stored routine that deallocated the prepared
          statement caused a server crash. This is prevented by
          disabling dynamic SQL within stored routines. (<a href="http://bugs.mysql.com/10975" target="_top">Bug #10975</a>)
          (Note: This restriction was lifted in 5.0.13 for stored
          procedures, but not stored functions or triggers.)
        </p></li><li><p>
          Using <code class="literal">PREPARE</code> to prepare a statement that
          invoked a stored routine that executed the prepared statement
          caused a <code class="literal">Packets out of order</code> error the
          second time the routine was invoked. This is prevented by
          disabling dynamic SQL within stored routines. (<a href="http://bugs.mysql.com/7115" target="_top">Bug #7115</a>)
          (Note: This restriction was lifted in 5.0.13 for stored
          procedures, but not stored functions or triggers.)
        </p></li><li><p>
          Using prepared statements within a stored routine
          (<code class="literal">PREPARE</code>, <code class="literal">EXECUTE</code>,
          <code class="literal">DEALLOCATE</code>) could cause the client
          connection to be dropped after the routine returned. This is
          prevented by disabling dynamic SQL within stored routines.
          (<a href="http://bugs.mysql.com/10605" target="_top">Bug #10605</a>) (Note: This restriction was lifted in 5.0.13 for
          stored procedures, but not stored functions or triggers.)
        </p></li><li><p>
          When using a cursor with a prepared statement, the first
          execution returned the correct result but was not cleaned up
          properly, causing subsequent executions to return incorrect
          results. (<a href="http://bugs.mysql.com/10729" target="_top">Bug #10729</a>)
        </p></li><li><p>
          MySQL Cluster: Connections between data nodes and management
          nodes were not being closed following shutdown of
          <code class="literal">ndb_mgmd</code>. (<a href="http://bugs.mysql.com/11132" target="_top">Bug #11132</a>)
        </p></li><li><p>
          MySQL Cluster: <code class="literal">mysqld</code> processes would not
          reconnect to cluster following restart of
          <code class="literal">ndb_mgmd</code>. (<a href="http://bugs.mysql.com/11221" target="_top">Bug #11221</a>)
        </p></li><li><p>
          MySQL Cluster: Fixed problem whereby data nodes would fail to
          restart on 64-bit Solaris (<a href="http://bugs.mysql.com/9025" target="_top">Bug #9025</a>)
        </p></li><li><p>
          MySQL Cluster: Calling <code class="literal">ndb_select_count()</code>
          crashed the cluster when running on Red Hat Enterprise
          4/64-bit/Opteron. (<a href="http://bugs.mysql.com/10058" target="_top">Bug #10058</a>)
        </p></li><li><p>
          MySQL Cluster: Insert records were incorrectly applied by
          <code class="literal">ndb_restore</code>, thus making restoration from
          backup inconsistent if the binlog contained inserts. (<a href="http://bugs.mysql.com/11166" target="_top">Bug
          #11166</a>)
        </p></li><li><p>
          MySQL Cluster: Cluster would time out and crash after first
          query on 64-bit Solaris 9. (<a href="http://bugs.mysql.com/8918" target="_top">Bug #8918</a>)
        </p></li><li><p>
          MySQL Cluster: <code class="literal">ndb_mgm</code> client
          <code class="literal">show</code> command displayed incorrect output
          after master data node failure. (<a href="http://bugs.mysql.com/11050" target="_top">Bug #11050</a>)
        </p></li><li><p>
          MySQL Cluster: A delete performed as part of a transaction
          caused an erroneous result. (<a href="http://bugs.mysql.com/11133" target="_top">Bug #11133</a>)
        </p></li><li><p>
          MySQL Cluster: Not allowing sufficient parallelism in cluster
          configuration (e.g. <code class="literal">NoOfTransactions</code> too
          small) caused <code class="literal">ndb_restore</code> to fail without
          providing any error messages. (<a href="http://bugs.mysql.com/10294" target="_top">Bug #10294</a>)
        </p></li><li><p>
          MySQL Cluster: When using dynamically allocated ports on
          Linux, cluster would hang on initial startup. (<a href="http://bugs.mysql.com/10893" target="_top">Bug #10893</a>)
        </p></li><li><p>
          MySQL Cluster: Setting TransactionInactiveTimeout= 0 did not
          result in an infinite timeout. (<a href="http://bugs.mysql.com/11290" target="_top">Bug #11290</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Enforce maximum
          <code class="literal">CHAR_LENGTH()</code> of UTF-8 data in <code class="literal">ON
          UPDATE CASCADE</code>. (<a href="http://bugs.mysql.com/10409" target="_top">Bug #10409</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Pad UTF-8 variable-length
          <code class="literal">CHAR</code> columns with <code class="literal">0x20</code>.
          Pad UCS2 <code class="literal">CHAR</code> columns with
          <code class="literal">0x0020</code>. (<a href="http://bugs.mysql.com/10511" target="_top">Bug #10511</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-7"></a>D.1.10. Changes in release 5.0.7 (10 June 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Security improvement: Applied a patch to fix a UDF
          library-loading vulnerability that could result in a buffer
          overflow and code execution.
          (<a href="http://www.appsecinc.com/resources/alerts/mysql/2005-002.html" target="_top">http://www.appsecinc.com/resources/alerts/mysql/2005-002.html</a>)
        </p></li><li><p>
          Added <code class="literal">mysql_set_character_set()</code> C API
          function for setting the default character set of the current
          connection. This allows clients to affect the character set
          used by <code class="literal">mysql_real_escape_string()</code>. (<a href="http://bugs.mysql.com/8317" target="_top">Bug
          #8317</a>)
        </p></li><li><p>
          The behavior of the <code class="literal">Last_query_cost</code> system
          variable has been changed. The default value is now 0 (rather
          than -1) and it now has session-level scope (rather than being
          global). See <a href="database-administration.html#server-status-variables" title="5.3.4. Server Status Variables">Section 5.3.4, “Server Status Variables”</a> for
          additional information.
        </p></li><li><p>
          All characters occuring on the same line following the
          <code class="literal">DELIMITER</code> keyword will be set as delimiter.
          For example, <code class="literal">DELIMITER :;</code> will set
          <code class="literal">:;</code> as the delimiter. This behavior is now
          consistent between MySQL 5.1 and MySQL 5.0. (<a href="http://bugs.mysql.com/9879" target="_top">Bug #9879</a>)
        </p></li><li><p>
          The <code class="literal">table</code>, <code class="literal">type</code>, and
          <code class="literal">rows</code> columns of <code class="literal">EXPLAIN</code>
          output can now be <code class="literal">NULL</code>. This is required
          for using <code class="literal">EXPLAIN</code> on
          <code class="literal">SELECT</code> queries that use no tables (i.e.
          <code class="literal">EXPLAIN SELECT 1</code>). (<a href="http://bugs.mysql.com/9899" target="_top">Bug #9899</a>)
        </p></li><li><p>
          Placeholders now can be used for <code class="literal">LIMIT</code> in
          prepared statements. (<a href="http://bugs.mysql.com/7306" target="_top">Bug #7306</a>)
        </p></li><li><p>
          <code class="literal">SHOW BINARY LOGS</code> now displays a
          <code class="literal">File_size</code> column that indicates the size of
          each file.
        </p></li><li><p>
          The <code class="option">--delayed-insert</code> option for
          <span><strong class="command">mysqldump</strong></span> has been disabled to avoid
          causing problems with storage engines that do not support
          <code class="literal">INSERT DELAYED</code>. (<a href="http://bugs.mysql.com/7815" target="_top">Bug #7815</a>)
        </p></li><li><p>
          Improved the optimizer to be able to use indexes for
          expressions of the form
          <code class="literal"><em class="replaceable"><code>indexed_col</code></em> NOT IN
          (<em class="replaceable"><code>val1</code></em>,
          <em class="replaceable"><code>val2</code></em>, ...)</code> and
          <code class="literal"><em class="replaceable"><code>indexed_col</code></em> NOT BETWEEN
          <em class="replaceable"><code>val1</code></em> AND
          <em class="replaceable"><code>val2</code></em></code>.. (<a href="http://bugs.mysql.com/10561" target="_top">Bug #10561</a>)
        </p></li><li><p>
          Removed <code class="literal">mysqlshutdown.exe</code> and
          <code class="literal">mysqlwatch.exe</code> from the Windows “<span class="quote">No
          Installer</span>” distribution (they had already been removed
          from the “<span class="quote">With Installer</span>” distribution before).
          Removed those programs from the source distribution.
        </p></li><li><p>
          Removed <code class="literal">WinMySQLAdmin</code> from the source
          distribution and from the “<span class="quote">No Installer</span>” Windows
          distribution (it had already been removed from the “<span class="quote">With
          Installer</span>” distribution before).
        </p></li><li><p>
          <code class="literal">InnoDB</code>: In stored procedures and functions,
          <code class="literal">InnoDB</code> no longer takes full explicit table
          locks for every involved table. Only `intention' locks are
          taken, similar to those in the execution of an ordinary SQL
          statement. This greatly reduces the number of deadlocks.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Security update</strong></span>: A user with
          limited privileges could obtain information about the
          privileges of other users by querying objects in the
          <code class="literal">INFORMATION_SCHEMA</code> database for which that
          user did not have the requisite privileges. (<a href="http://bugs.mysql.com/10964" target="_top">Bug #10964</a>)
        </p></li><li><p>
          Triggers with dropped functions caused crashes. (<a href="http://bugs.mysql.com/5893" target="_top">Bug #5893</a>)
        </p></li><li><p>
          Failure of a <code class="literal">BEFORE</code> trigger did not prevent
          the triggering statement from performing its operation on the
          row for which the trigger error occurred. Now the triggering
          statement fails as described in
          <a href="triggers.html#using-triggers" title="18.3. Using Triggers">Section 18.3, “Using Triggers”</a>. (<a href="http://bugs.mysql.com/10902" target="_top">Bug #10902</a>)
        </p></li><li><p>
          Issuing a write lock for a table from one client prevented
          other clients from accessing the table's metadata. For
          example, if one client issued a <code class="literal">LOCK TABLES
          <em class="replaceable"><code>mydb</code></em>.<em class="replaceable"><code>mytable</code></em>
          WRITE</code>, then a second client attempting to execute a
          <code class="literal">USE <em class="replaceable"><code>mydb</code></em>;</code> would
          hang. (<a href="http://bugs.mysql.com/9998" target="_top">Bug #9998</a>)
        </p></li><li><p>
          The <code class="literal">LAST_DAY()</code> failed to return
          <code class="literal">NULL</code> when supplied with an invalid
          argument. See <a href="functions.html#date-and-time-functions" title="12.5. Date and Time Functions">Section 12.5, “Date and Time Functions”</a>. (<a href="http://bugs.mysql.com/10568" target="_top">Bug
          #10568</a>)
        </p></li><li><p>
          The functions <code class="literal">COALESCE()</code>,
          <code class="literal">IF()</code>, and <code class="literal">IFNULL()</code>
          performed incorrect conversions of their arguments. (<a href="http://bugs.mysql.com/9939" target="_top">Bug
          #9939</a>)
        </p></li><li><p>
          The <code class="literal">TIME_FORMAT()</code> function returned
          incorrect results with some format specifiers. See
          <a href="functions.html#date-and-time-functions" title="12.5. Date and Time Functions">Section 12.5, “Date and Time Functions”</a>. (<a href="http://bugs.mysql.com/10590" target="_top">Bug #10590</a>)
        </p></li><li><p>
          Dropping stored routines when the MySQL server had been
          started with <code class="option">--skip-grant-tables</code> generated
          extraneous warnings. (<a href="http://bugs.mysql.com/9993" target="_top">Bug #9993</a>)
        </p></li><li><p>
          A problem with the <code class="filename">my_global.h</code> file
          caused compilation of MySQL to fail on single-processor Linux
          systems running 2.6 kernels. (<a href="http://bugs.mysql.com/10364" target="_top">Bug #10364</a>)
        </p></li><li><p>
          The ucs2_turkish_ci collation failed with upper('i').
          UPPER/LOWER now can return a string with different length.
          (<a href="http://bugs.mysql.com/8610" target="_top">Bug #8610</a>)
        </p></li><li><p>
          OPTIMIZE of InnoDB table does not return 'Table is full' if
          out of tablespace. (<a href="http://bugs.mysql.com/8135" target="_top">Bug #8135</a>)
        </p></li><li><p>
          GROUP BY queries with ROLLUP returned wrong results for
          expressions containing group by columns. (<a href="http://bugs.mysql.com/7894" target="_top">Bug #7894</a>)
        </p></li><li><p>
          Fixed bug in <code class="literal">FIELD()</code> function where value
          list contains <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/10944" target="_top">Bug #10944</a>)
        </p></li><li><p>
          Corrected a problem where an incorrect column type was
          returned in the result set metadata when using a prepared
          <code class="literal">SELECT DISTINCT</code> statement to select from a
          view. (<a href="http://bugs.mysql.com/11111" target="_top">Bug #11111</a>)
        </p></li><li><p>
          Fixed bug in the MySQL Instance manager that caused the
          version to always be <code class="literal">unknown</code> when
          <code class="literal">SHOW INSTANCE STATUS</code> was issued. (<a href="http://bugs.mysql.com/10229" target="_top">Bug
          #10229</a>)
        </p></li><li><p>
          Using <code class="literal">ORDER BY</code> to sort the results of an
          <code class="literal">IF()</code> that contained a
          <code class="literal">FROM_UNIXTIME()</code> expression returned
          incorrect results due to integer overflow. (<a href="http://bugs.mysql.com/9669" target="_top">Bug #9669</a>)
        </p></li><li><p>
          Fixed a server crash resulting from accessing
          <code class="literal">InnoDB</code> tables within stored functions. This
          is handled by prohibiting statements that do an implicit or
          explicit commit or rollback within stored functions or
          triggers. (<a href="http://bugs.mysql.com/10015" target="_top">Bug #10015</a>)
        </p></li><li><p>
          Fixed a server crash resulting from the second invocation of a
          stored procedure that selected from a view defined as a join
          that used <code class="literal">ON</code> in the join conditions. (<a href="http://bugs.mysql.com/6866" target="_top">Bug
          #6866</a>)
        </p></li><li><p>
          Using <code class="literal">ALTER TABLE</code> for a table that had a
          trigger caused a crash when executing a statement that
          activated the trigger, and also a crash later with
          <code class="literal">USE <em class="replaceable"><code>db_name</code></em></code> for
          the database containing the table. (<a href="http://bugs.mysql.com/5894" target="_top">Bug #5894</a>)
        </p></li><li><p>
          Fixed a server crash resulting from an attempt to allocate too
          much memory when <code class="literal">GROUP BY
          <em class="replaceable"><code>blob_col</code></em></code> and
          <code class="literal">COUNT(DISTINCT)</code> were used. (<a href="http://bugs.mysql.com/11088" target="_top">Bug #11088</a>)
        </p></li><li><p>
          Fixed a portability problem for compiling on Windows with
          Visual Studio 6. (<a href="http://bugs.mysql.com/11153" target="_top">Bug #11153</a>)
        </p></li><li><p>
          The incorrect sequence of statements <code class="literal">HANDLER
          <em class="replaceable"><code>tbl_name</code></em> READ
          <em class="replaceable"><code>index_name</code></em> NEXT</code> without a
          preceding <code class="literal">HANDLER <em class="replaceable"><code>tbl_name</code></em>
          READ <em class="replaceable"><code>index_name</code></em> =
          (<em class="replaceable"><code>value_list</code></em>)</code> for an
          <code class="literal">InnoDB</code> table resulted in a server crash
          rather than an error. (<a href="http://bugs.mysql.com/5373" target="_top">Bug #5373</a>)
        </p></li><li><p>
          On Windows, with <code class="literal">lower_case_table_names</code> set
          to 2, using <code class="literal">ALTER TABLE</code> to alter a
          <code class="literal">MEMORY</code> or <code class="literal">InnoDB</code> table
          that had a mixed-case name also improperly changed the name to
          lowercase. (<a href="http://bugs.mysql.com/9660" target="_top">Bug #9660</a>)
        </p></li><li><p>
          The server timed out SSL connections too quickly on Windows.
          (<a href="http://bugs.mysql.com/8572" target="_top">Bug #8572</a>)
        </p></li><li><p>
          Executing <code class="literal">LOAD INDEX INTO CACHE</code> for a table
          while other threads where selecting from the table caused a
          deadlock. (<a href="http://bugs.mysql.com/10602" target="_top">Bug #10602</a>)
        </p></li><li><p>
          Fixed a server crash resulting from <code class="literal">CREATE TABLE ...
          SELECT</code> that selected from a table being altered by
          <code class="literal">ALTER TABLE</code>. (<a href="http://bugs.mysql.com/10224" target="_top">Bug #10224</a>)
        </p></li><li><p>
          The <code class="literal">FEDERATED</code> storage engine properly
          handled outer joins, but not inner joins. (<a href="http://bugs.mysql.com/10848" target="_top">Bug #10848</a>)
        </p></li><li><p>
          Consistently report <code class="literal">INFORMATION_SCHEMA</code>
          table names in uppercase in <code class="literal">SHOW TABLE
          STATUS</code> output. (<a href="http://bugs.mysql.com/10059" target="_top">Bug #10059</a>)
        </p></li><li><p>
          Fixed a failure of <code class="literal">WITH ROLLUP</code> to sum
          values properly. (<a href="http://bugs.mysql.com/10982" target="_top">Bug #10982</a>)
        </p></li><li><p>
          Triggers were not being activated for multiple-table
          <code class="literal">UPDATE</code> or <code class="literal">DELETE</code>
          statements. (<a href="http://bugs.mysql.com/5860" target="_top">Bug #5860</a>)
        </p></li><li><p>
          <code class="literal">INSERT BEFORE</code> triggers were not being
          activated for <code class="literal">INSERT ... SELECT</code> statements.
          (<a href="http://bugs.mysql.com/6812" target="_top">Bug #6812</a>)
        </p></li><li><p>
          <code class="literal">INSERT BEFORE</code> triggers were not being
          activated for implicit inserts (<code class="literal">LOAD DATA</code>).
          (<a href="http://bugs.mysql.com/8755" target="_top">Bug #8755</a>)
        </p></li><li><p>
          If a stored function contained a <code class="literal">FLUSH</code>
          statement, the function crashed when invoked.
          <code class="literal">FLUSH</code> now is disallowed within stored
          functions. (<a href="http://bugs.mysql.com/8409" target="_top">Bug #8409</a>)
        </p></li><li><p>
          Multiple-row <code class="literal">REPLACE</code> could fail on a
          duplicate-key error when having one
          <code class="literal">AUTO_INCREMENT</code> key and one unique key. (<a href="http://bugs.mysql.com/11080" target="_top">Bug
          #11080</a>)
        </p></li><li><p>
          Fixed a server crash resulting from invalid string pointer
          when inserting into the <code class="literal">mysql.host</code> table.
          (<a href="http://bugs.mysql.com/10181" target="_top">Bug #10181</a>)
        </p></li><li><p>
          Multiple-table <code class="literal">DELETE</code> did always delete on
          the fly from the first table that was to be deleted from. In
          some cases, when using many tables and it was necessary to
          access the same row twice in the first table, we could miss
          some rows-to-be-deleted from other tables. This is now fixed.
        </p></li><li><p>
          The <code class="literal">mysql_next_result()</code> function could hang
          if you were executing many statements in a
          <code class="literal">mysql_real_query()</code> call and one of those
          statements raised an error. (<a href="http://bugs.mysql.com/9992" target="_top">Bug #9992</a>)
        </p></li><li><p>
          The combination of <code class="literal">COUNT()</code>,
          <code class="literal">DISTINCT</code>, and <code class="literal">CONCAT()</code>
          sometimes triggered a memory deallocation bug on Windows
          resulting in a server crash. (<a href="http://bugs.mysql.com/9593" target="_top">Bug #9593</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Do very fast shutdown only if
          <code class="literal">innodb_fast_shutdown=2</code>, but wait for
          threads to exit and release allocated memory if
          <code class="literal">innodb_fast_shutdown=1</code>. Starting with
          MySQL/InnoDB 5.0.5, InnoDB would do brutal shutdown also when
          <code class="literal">innodb_fast_shutdown=1</code>. (<a href="http://bugs.mysql.com/9673" target="_top">Bug #9673</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Fixed <code class="literal">InnoDB: Error:
          stored_select_lock_type is 0 inside ::start_stmt()!</code>
          in a stored procedure call if
          <code class="literal">innodb_locks_unsafe_for_binlog</code> was set in
          <code class="filename">my.cnf</code>. (<a href="http://bugs.mysql.com/10746" target="_top">Bug #10746</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Fixed a duplicate key error that
          occurred with <code class="literal">REPLACE</code> in a table with an
          <code class="literal">AUTO-INC</code> column. (<a href="http://bugs.mysql.com/11005" target="_top">Bug #11005</a>)
        </p></li><li><p>
          MySQL would pass an incorrect key length to storage engines
          for <code class="literal">MIN()</code>. This could cause warnings
          <code class="literal">InnoDB: Warning: using a partial-field key prefix in
          search.</code> in the <code class="filename">.err</code> log. (<a href="http://bugs.mysql.com/11039" target="_top">Bug
          #11039</a>, same as <a href="http://bugs.mysql.com/13218" target="_top">Bug #13218</a> in MySQL 4.1.15)
        </p></li><li><p>
          Fixed a server crash for <code class="literal">INSERT</code> or
          <code class="literal">UPDATE</code> when the <code class="literal">WHERE</code>
          clause contained a correlated subquery that referred to a
          column of the table being modified. (<a href="http://bugs.mysql.com/6384" target="_top">Bug #6384</a>)
        </p></li><li><p>
          Fixed a problem causing an incorrect result for columns that
          include an aggregate function as part of an expression when
          <code class="literal">WITH ROLLUP</code> is added to <code class="literal">GROUP
          BY</code>. (<a href="http://bugs.mysql.com/7914" target="_top">Bug #7914</a>)
        </p></li><li><p>
          Fixed a problem with returning an incorrect result from a view
          that selected a <code class="literal">COALESCE()</code> expression from
          the result of an outer join. (<a href="http://bugs.mysql.com/9938" target="_top">Bug #9938</a>)
        </p></li><li><p>
          MySQL was adding a <code class="literal">DEFAULT</code> clause to
          <code class="literal">ENUM</code> columns that included no explicit
          <code class="literal">DEFAULT</code> and were defined as <code class="literal">NOT
          NULL</code>. (This is supposed to happen only for columns
          that are <code class="literal">NULL</code>.) (<a href="http://bugs.mysql.com/6267" target="_top">Bug #6267</a>)
        </p></li><li><p>
          Corrected inappropriate error messages that were displayed
          when attempting to set the read-only
          <code class="literal">warning_count</code> and
          <code class="literal">error_count</code> system variables. (<a href="http://bugs.mysql.com/10339" target="_top">Bug #10339</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-6"></a>D.1.11. Changes in release 5.0.6 (26 May 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Incompatible change:</strong></span>
          <code class="literal">MyISAM</code> and <code class="literal">InnoDB</code> tables
          created with <code class="literal">DECIMAL</code> columns in MySQL 5.0.3
          to 5.0.5 will appear corrupt after an upgrade to MySQL 5.0.6.
          Dump such tables with <span><strong class="command">mysqldump</strong></span> before
          upgrading, and then reload them after upgrading. (The same
          incompatibility will occur for these tables created in MySQL
          5.0.6 after a downgrade to MySQL 5.0.3 to 5.0.5.) (<a href="http://bugs.mysql.com/10465" target="_top">Bug #10465</a>,
          <a href="http://bugs.mysql.com/10625" target="_top">Bug #10625</a>)
        </p></li><li><p>
          The precision of the <code class="literal">DECIMAL</code> data type has
          been increased from 64 to 65 decimal digits.
        </p></li><li><p>
          Added the <code class="literal">div_precision_increment</code> system
          variable, which indicates the number of digits of precision by
          which to increase the result of division operations performed
          with the <code class="literal">/</code> operator.
        </p></li><li><p>
          Added the <code class="literal">log_bin_trust_routine_creators</code>
          system variable, which applies when binary logging is enabled.
          It controls whether stored routine creators can be trusted not
          to create stored routines that will cause unsafe events to be
          written to the binary log.
        </p></li><li><p>
          Added the <code class="option">--log-bin-trust-routine-creators</code>
          server option for setting the
          <code class="literal">log_bin_trust_routine_creators</code> system
          variable from the command line.
        </p></li><li><p>
          Implemented the <code class="literal">STMT_ATTR_PREFETCH_ROWS</code>
          option for the <code class="literal">mysql_stmt_attr_set()</code> C API
          function. This sets how many rows to fetch at a time when
          using cursors with prepared statements.
        </p></li><li><p>
          The <code class="literal">GRANT</code> and <code class="literal">REVOKE</code>
          statements now support an
          <em class="replaceable"><code>object_type</code></em> clause to be used for
          disambiguating whether the grant object is a table, a stored
          function, or a stored procedure. Use of this clause requires
          that you upgrade your grant tables. See
          <a href="installing.html#upgrading-grant-tables" title="2.10.3. Upgrading the Grant Tables">Section 2.10.3, “Upgrading the Grant Tables”</a>. (<a href="http://bugs.mysql.com/10246" target="_top">Bug #10246</a>)
        </p></li><li><p>
          Added <code class="literal">REFERENCED_TABLE_SCHEMA</code>,
          <code class="literal">REFERENCED_TABLE_NAME</code>, and
          <code class="literal">REFERENCED_COLUMN_NAME</code> columns to the
          <code class="literal">KEY_COLUMN_USAGE</code> table of
          <code class="literal">INFORMATION_SCHEMA</code>. (<a href="http://bugs.mysql.com/9587" target="_top">Bug #9587</a>)
        </p></li><li><p>
          Added a <code class="option">--show-warnings</code> option to
          <span><strong class="command">mysql</strong></span> to cause warnings to be shown after
          each statement if there are any. This option applies to
          interactive and batch mode. In interactive mode,
          <code class="literal">\w</code> and <code class="literal">\W</code> may be used to
          enable and disable warning display. (<a href="http://bugs.mysql.com/8684" target="_top">Bug #8684</a>)
        </p></li><li><p>
          Removed a limitation that prevented use of FIFOs as logging
          targets (such as for the general query log). This modification
          <span class="emphasis"><em>does not apply</em></span> to the binary log and the
          relay log. (<a href="http://bugs.mysql.com/8271" target="_top">Bug #8271</a>)
        </p></li><li><p>
          Added a <code class="option">--debug</code> option to
          <span><strong class="command">my_print_defaults</strong></span>.
        </p></li><li><p>
          When the server cannot read a table because it cannot read the
          <code class="filename">.frm</code> file, print a message that the table
          was created with a different version of MySQL. (This can
          happen if you create tables that use new features and then
          downgrade to an older version of MySQL.) (<a href="http://bugs.mysql.com/10435" target="_top">Bug #10435</a>)
        </p></li><li><p>
          <code class="literal">SHOW VARIABLES</code> now shows the
          <code class="literal">slave_compressed_protocol</code>,
          <code class="literal">slave_load_tmpdir</code> and
          <code class="literal">slave_skip_errors</code> system variables. (<a href="http://bugs.mysql.com/7800" target="_top">Bug
          #7800</a>)
        </p></li><li><p>
          Removed unused system variable
          <code class="literal">myisam_max_extra_sort_file_size</code>.
        </p></li><li><p>
          Changed default value of
          <code class="literal">myisam_data_pointer_size</code> from 4 to 6. This
          allows us to avoid <code class="literal">table is full</code> errors for
          most cases.
        </p></li><li><p>
          The variable <code class="literal">concurrent_insert</code> now takes 3
          values. Setting this to 2 changes MyISAM to do concurrent
          inserts to end of table if table is in use by another thread.
        </p></li><li><p>
          New <code class="literal">/*&gt;</code> prompt for
          <span><strong class="command">mysql</strong></span>. This prompt indicates that a
          <code class="literal">/* ... */</code> comment was begun on an earlier
          line and the closing <code class="literal">*/</code> sequence has not
          yet been seen. (<a href="http://bugs.mysql.com/9186" target="_top">Bug #9186</a>)
        </p></li><li><p>
          If strict SQL mode is enabled, <code class="literal">VARCHAR</code> and
          <code class="literal">VARBINARY</code> columns with a length greater
          than 65,535 no longer are silently converted to
          <code class="literal">TEXT</code> or <code class="literal">BLOB</code> columns.
          Instead, an error occurs. (<a href="http://bugs.mysql.com/8295" target="_top">Bug #8295</a>, <a href="http://bugs.mysql.com/8296" target="_top">Bug #8296</a>)
        </p></li><li><p>
          The <code class="literal">INFORMATION_SCHEMA.SCHEMATA</code> table now
          has a <code class="literal">DEFAULT_COLLATION_NAME</code> column. (<a href="http://bugs.mysql.com/8998" target="_top">Bug
          #8998</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: When the maximum length of
          <code class="literal">SHOW INNODB STATUS</code> output would be
          exceeded, truncate the beginning of the list of active
          transactions, instead of truncating the end of the output.
          (<a href="http://bugs.mysql.com/5436" target="_top">Bug #5436</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: If
          <code class="literal">innodb_locks_unsafe_for_binlog</code> option is
          set and the isolation level of the transaction is not set to
          serializable then <code class="literal">InnoDB</code> uses a consistent
          read for select in clauses like <code class="literal">INSERT INTO ...
          SELECT</code> and <code class="literal">UPDATE ... (SELECT)</code>
          that do not specify <code class="literal">FOR UPDATE</code> or
          <code class="literal">IN SHARE MODE</code>. Thus no locks are set to
          rows read from selected table.
        </p></li><li><p>
          Updated version of <code class="literal">libedit</code> to 2.9. (<a href="http://bugs.mysql.com/2596" target="_top">Bug
          #2596</a>)
        </p></li><li><p>
          Removed <code class="literal">mysqlshutdown.exe</code> and
          <code class="literal">mysqlwatch.exe</code> from the Windows “<span class="quote">With
          Installer</span>” distribution.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          An error in the implementation of the
          <code class="literal">MyISAM</code> compression algorithm caused
          <code class="literal">myisampack</code> to fail with very large sets of
          data (total size of all the records in a single column needed
          to be &gt;= 3 GB in order to trigger this issue). (<a href="http://bugs.mysql.com/8321" target="_top">Bug #8321</a>)
        </p></li><li><p>
          Statements that create and use stored routines were not being
          written to the binary log, which affects replication and data
          recovery options. (<a href="http://bugs.mysql.com/2610" target="_top">Bug #2610</a>) Stored routine-related
          statements now are logged, subject to the issues and
          limitations discussed in
          <a href="stored-procedures.html#stored-procedure-logging" title="17.4. Binary Logging of Stored Routines and Triggers">Section 17.4, “Binary Logging of Stored Routines and Triggers”</a>
        </p></li><li><p>
          Disabled binary logging within stored routines to avoid
          writing spurious extra statements to the binary log. For
          example, if a routine <code class="literal">p()</code> executes an
          <code class="literal">INSERT</code> statement, then for <code class="literal">CALL
          p()</code>, the <code class="literal">CALL</code> statement appears
          in the binary log, but not the <code class="literal">INSERT</code>
          statement. (<a href="http://bugs.mysql.com/9100" target="_top">Bug #9100</a>)
        </p></li><li><p>
          Statements that create and drop triggers were not being
          written to the binary log, which affects replication and data
          recovery options. (<a href="http://bugs.mysql.com/10417" target="_top">Bug #10417</a>) Trigger-related statements now
          are logged, subject to the issues and limitations discussed in
          <a href="stored-procedures.html#stored-procedure-logging" title="17.4. Binary Logging of Stored Routines and Triggers">Section 17.4, “Binary Logging of Stored Routines and Triggers”</a>
        </p></li><li><p>
          The <code class="literal">mysql_stmt_execute()</code> and
          <code class="literal">mysql_stmt_reset()</code> C API functions now
          close any cursor that is open for the statement, which
          prevents a server crash. (<a href="http://bugs.mysql.com/9478" target="_top">Bug #9478</a>)
        </p></li><li><p>
          The <code class="literal">mysql_stmt_attr_set()</code> C API function
          now returns an error for option values that are defined in
          <code class="filename">mysql.h</code> but not yet implemented, such as
          <code class="literal">CURSOR_TYPE_SCROLLABLE</code>. (<a href="http://bugs.mysql.com/9643" target="_top">Bug #9643</a>)
        </p></li><li><p>
          <code class="literal">MERGE</code> tables could fail on Windows due to
          incorrect interpretation of pathname separator characters for
          filenames in the <code class="filename">.MRG</code> file. (<a href="http://bugs.mysql.com/10687" target="_top">Bug #10687</a>)
        </p></li><li><p>
          Fixed a server crash for <code class="literal">INSERT ... ON DUPLICATE KEY
          UPDATE</code> with <code class="literal">MERGE</code> tables, which
          do not have unique indexes. (<a href="http://bugs.mysql.com/10400" target="_top">Bug #10400</a>)
        </p></li><li><p>
          Fix <code class="literal">FORMAT()</code> to do better rounding for
          double values (for example, <code class="literal">FORMAT(4.55,1)</code>
          returns <code class="literal">4.6</code>, not <code class="literal">4.5</code>).
          (<a href="http://bugs.mysql.com/9060" target="_top">Bug #9060</a>)
        </p></li><li><p>
          Disallow use of <code class="literal">SESSION</code> or
          <code class="literal">GLOBAL</code> for user variables or local
          variables in stored routines. (<a href="http://bugs.mysql.com/9286" target="_top">Bug #9286</a>)
        </p></li><li><p>
          Fixed a server crash when using <code class="literal">GROUP BY ... WITH
          ROLLUP</code> on an indexed column in an
          <code class="literal">InnoDB</code> table. (<a href="http://bugs.mysql.com/9798" target="_top">Bug #9798</a>)
        </p></li><li><p>
          In strict SQL mode, some assignments to numeric columns that
          should have been rejected were not (such as the result of an
          arithmetic expression or an explicit <code class="literal">CAST()</code>
          operation). (<a href="http://bugs.mysql.com/6961" target="_top">Bug #6961</a>)
        </p></li><li><p>
          <code class="literal">CREATE TABLE t AS SELECT UUID()</code> created a
          <code class="literal">VARCHAR(12)</code> column, which is too small to
          hold the 36-character result from <code class="literal">UUID()</code>.
          (<a href="http://bugs.mysql.com/9535" target="_top">Bug #9535</a>)
        </p></li><li><p>
          Fixed a server crash in the <code class="literal">BLACKHOLE</code>
          storage engine. (<a href="http://bugs.mysql.com/10175" target="_top">Bug #10175</a>)
        </p></li><li><p>
          Fixed a server crash resulting from repeated calls to
          <code class="literal">ABS()</code> when the argument evaluated to
          <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/10599" target="_top">Bug #10599</a>)
        </p></li><li><p>
          For a user-defined function invoked from within a prepared
          statement, the UDF's initialization routine was invoked for
          each execution of the statement, but the deinitialization
          routine was not. (It was invoked only when the statement was
          closed.) Similarly, when invoking a UDF from within a trigger,
          the initialization routine was invoked but the
          deinitialization routine was not. For UDFs that have an
          expensive deinit function (such as <code class="literal">myperl</code>,
          this bugfix will have negative performance consequences. (<a href="http://bugs.mysql.com/9913" target="_top">Bug
          #9913</a>)
        </p></li><li><p>
          Portability fix for Cygwin: Don't use <code class="literal">#pragma
          interface</code> in source files. (<a href="http://bugs.mysql.com/10241" target="_top">Bug #10241</a>)
        </p></li><li><p>
          Fix <code class="literal">CREATE TABLE ... LIKE</code> to work when
          <code class="literal">lower_case_table_names</code> is set on a
          case-sensitive filesystem and the source table name is not
          given in lowercase. (<a href="http://bugs.mysql.com/9761" target="_top">Bug #9761</a>)
        </p></li><li><p>
          Fixed a server crash resulting from a <code class="literal">CHECK
          TABLE</code> statement where the arguments were a view name
          followed by a table name. (<a href="http://bugs.mysql.com/9897" target="_top">Bug #9897</a>)
        </p></li><li><p>
          Within a stored procedure, attempting to update a view defined
          as an inner join failed with a <code class="literal">Table
          '<em class="replaceable"><code>tbl_name</code></em>' was locked with a READ
          lock and can't be updated</code> error. (<a href="http://bugs.mysql.com/9481" target="_top">Bug #9481</a>)
        </p></li><li><p>
          Fixed a problem with <code class="literal">INFORMATION_SCHEMA</code>
          tables being inaccessible depending on lettercase used to
          refer to them. (<a href="http://bugs.mysql.com/10018" target="_top">Bug #10018</a>)
        </p></li><li><p>
          <span><strong class="command">my_print_defaults</strong></span> was ignoring the
          <code class="option">--defaults-extra-file</code> option or crashing when
          the option was given. (<a href="http://bugs.mysql.com/9136" target="_top">Bug #9136</a>, <a href="http://bugs.mysql.com/9851" target="_top">Bug #9851</a>)
        </p></li><li><p>
          The <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> table was
          missing columns of views for which the user has access. (<a href="http://bugs.mysql.com/9838" target="_top">Bug
          #9838</a>)
        </p></li><li><p>
          Fixed a <span><strong class="command">mysqldump</strong></span> crash that occurred with
          the <code class="option">--complete-insert</code> option when dumping
          tables with a large number of long column names. (<a href="http://bugs.mysql.com/10286" target="_top">Bug #10286</a>)
        </p></li><li><p>
          Corrected a problem where <code class="literal">DEFAULT</code> values
          where not assigned properly to <code class="literal">BIT(1)</code> or
          <code class="literal">CHAR(1)</code> columns if certain other columns
          preceded them in the table definition. (<a href="http://bugs.mysql.com/10179" target="_top">Bug #10179</a>)
        </p></li><li><p>
          For <code class="literal">MERGE</code> tables, avoid writing absolute
          pathnames in the <code class="filename">.MRG</code> file for the names
          of the constituent <code class="literal">MyISAM</code> tables so that if
          the data directory is moved, <code class="literal">MERGE</code> tables
          will not break. For <span><strong class="command">mysqld</strong></span>, write just the
          <code class="literal">MyISAM</code> table name if it is in the same
          database as the <code class="literal">MERGE</code> table, and a path
          relative to the data directory otherwise. For the embedded
          servers, absolute pathnames may still be used. (<a href="http://bugs.mysql.com/5964" target="_top">Bug #5964</a>)
        </p></li><li><p>
          Corrected a problem resolving outer column references in
          correlated subqueries when using the prepared statements. (<a href="http://bugs.mysql.com/10041" target="_top">Bug
          #10041</a>)
        </p></li><li><p>
          Corrected the error message for exceeding the
          <code class="literal">MAX_CONNECTIONS_PER_HOUR</code> limit to say
          <code class="literal">max_connections_per_hour</code> instead of
          <code class="literal">max_connections</code>. (<a href="http://bugs.mysql.com/9947" target="_top">Bug #9947</a>)
        </p></li><li><p>
          Fixed incorrect memory block allocation for the query cache in
          the embedded server. (<a href="http://bugs.mysql.com/9549" target="_top">Bug #9549</a>)
        </p></li><li><p>
          Corrected an inability to select from a view within a stored
          procedure. (<a href="http://bugs.mysql.com/9758" target="_top">Bug #9758</a>)
        </p></li><li><p>
          Fixed a server crash resulting from use of
          <code class="literal">AVG(DISTINCT)</code> with <code class="literal">GROUP BY ...
          WITH ROLLUP</code>. (<a href="http://bugs.mysql.com/9799" target="_top">Bug #9799</a>)
        </p></li><li><p>
          Fixed a server crash resulting from use of <code class="literal">DISTINCT
          AVG()</code> with <code class="literal">GROUP BY ... WITH
          ROLLUP</code>. (<a href="http://bugs.mysql.com/9800" target="_top">Bug #9800</a>)
        </p></li><li><p>
          Fixed a server crash resulting from use of a
          <code class="literal">CHAR</code> or <code class="literal">VARCHAR</code> column
          with <code class="literal">MIN()</code> or <code class="literal">MAX()</code> and
          <code class="literal">GROUP BY ... WITH ROLLUP</code>. (<a href="http://bugs.mysql.com/9820" target="_top">Bug #9820</a>)
        </p></li><li><p>
          Fixed a server crash resulting from use of <code class="literal">SELECT
          DISTINCT</code> with a prepared statement that uses a
          cursor. (<a href="http://bugs.mysql.com/9520" target="_top">Bug #9520</a>)
        </p></li><li><p>
          Fixed server crash resulting from multiple calls to a stored
          procedure that assigned the result of a subquery to a variable
          or compared it to a value with <code class="literal">IN</code>. (<a href="http://bugs.mysql.com/5963" target="_top">Bug
          #5963</a>)
        </p></li><li><p>
          Selecting from a single-table view defined on multiple-table
          views caused a server crash. (<a href="http://bugs.mysql.com/8528" target="_top">Bug #8528</a>)
        </p></li><li><p>
          If the file named by a <code class="option">--defaults-extra-file</code>
          option does not exist or is otherwise inaccessible, an error
          now occurs. (<a href="http://bugs.mysql.com/5056" target="_top">Bug #5056</a>)
        </p></li><li><p>
          <code class="literal">net_read_timeout</code> and
          <code class="literal">net_write_timeout</code> were not being respected
          on Windows. (<a href="http://bugs.mysql.com/9721" target="_top">Bug #9721</a>)
        </p></li><li><p>
          <code class="literal">SELECT</code> from
          <code class="literal">INFORMATION_SCHEMA</code> tables failed if the
          statement has a <code class="literal">GROUP BY</code> clause and an
          aggregate function in the select list. (<a href="http://bugs.mysql.com/9404" target="_top">Bug #9404</a>)
        </p></li><li><p>
          Corrected some failures of prepared statements for SQL
          (<code class="literal">PREPARE</code> plus <code class="literal">EXECUTE</code>)
          to return all rows for some <code class="literal">SELECT</code>
          statements. (<a href="http://bugs.mysql.com/9096" target="_top">Bug #9096</a>, <a href="http://bugs.mysql.com/9777" target="_top">Bug #9777</a>)
        </p></li><li><p>
          Remove extra slashes in <code class="option">--tmpdir</code> value (for
          example, convert <code class="filename">/var//tmp</code> to
          <code class="filename">/var/tmp</code>, because they caused various
          errors. (<a href="http://bugs.mysql.com/8497" target="_top">Bug #8497</a>)
        </p></li><li><p>
          Added <code class="literal">Create_routine_priv</code>,
          <code class="literal">Alter_routine_priv</code>, and
          <code class="literal">Execute_priv</code> privileges to the
          <code class="literal">mysql.host</code> privilege table. (They had been
          added to <code class="literal">mysql.db</code> in MySQL 5.0.3 but not to
          the <code class="literal">host</code> table.) (<a href="http://bugs.mysql.com/8166" target="_top">Bug #8166</a>)
        </p></li><li><p>
          Fixed <span><strong class="command">configure</strong></span> to properly recognize
          whether NTPL is available on Linux. (<a href="http://bugs.mysql.com/2173" target="_top">Bug #2173</a>)
        </p></li><li><p>
          Incomplete results were returned from
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> for
          <code class="literal">INFORMATION_SCHEMA</code> tables for
          non-<code class="literal">root</code> users. (<a href="http://bugs.mysql.com/10261" target="_top">Bug #10261</a>)
        </p></li><li><p>
          Fixed a portability problem in compiling
          <code class="filename">mysql.cc</code> with <span><strong class="command">VC++</strong></span> on
          Windows. (<a href="http://bugs.mysql.com/10245" target="_top">Bug #10245</a>)
        </p></li><li><p>
          <code class="literal">SELECT 0/0</code> returned <code class="literal">0</code>
          rather than <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/10404" target="_top">Bug #10404</a>)
        </p></li><li><p>
          <code class="literal">MAX()</code> for an <code class="literal">INT
          UNSIGNED</code> (unsigned 4-byte integer) column could
          return negative values if the column contained values larger
          than 2<sup>31</sup>. (<a href="http://bugs.mysql.com/9298" target="_top">Bug #9298</a>)
        </p></li><li><p>
          <code class="literal">SHOW CREATE VIEW</code> got confused and could not
          find the view if there was a temporary table with the same
          name as the view. (<a href="http://bugs.mysql.com/8921" target="_top">Bug #8921</a>)
        </p></li><li><p>
          Fixed a deadlock resulting from use of <code class="literal">FLUSH TABLES
          WITH READ LOCK</code> while an <code class="literal">INSERT
          DELAYED</code> statement is in progress. (<a href="http://bugs.mysql.com/7823" target="_top">Bug #7823</a>)
        </p></li><li><p>
          The optimizer was choosing suboptimal execution plans for
          certain outer joins where the right table of a left join (or
          left table of a right join) had both <code class="literal">ON</code> and
          <code class="literal">WHERE</code> conditions. (<a href="http://bugs.mysql.com/10162" target="_top">Bug #10162</a>)
        </p></li><li><p>
          <code class="literal">RENAME TABLE</code> for an
          <code class="literal">ARCHIVE</code> table failed if the
          <code class="filename">.arn</code> file was not present. (<a href="http://bugs.mysql.com/9911" target="_top">Bug #9911</a>)
        </p></li><li><p>
          Invoking a stored function that executed a
          <code class="literal">SHOW</code> statement resulted in a server crash.
          (<a href="http://bugs.mysql.com/8408" target="_top">Bug #8408</a>)
        </p></li><li><p>
          Fixed problems with static variables and do not link with
          <code class="literal">libsupc++</code> to allow building on FreeBSD 5.3.
          (<a href="http://bugs.mysql.com/9714" target="_top">Bug #9714</a>)
        </p></li><li><p>
          Fixed some <span><strong class="command">awk</strong></span> script portability problems
          in <span><strong class="command">cmd-line-utils/libedit/makelist.sh</strong></span>. (<a href="http://bugs.mysql.com/9954" target="_top">Bug
          #9954</a>)
        </p></li><li><p>
          Fixed a problem with mishandling of <code class="literal">NULL</code>
          key parts in hash indexes on <code class="literal">VARCHAR</code>
          columns, resulting in incorrect query results. (<a href="http://bugs.mysql.com/9489" target="_top">Bug #9489</a>, <a href="http://bugs.mysql.com/10176" target="_top">Bug
          #10176</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Fixed a critical bug in InnoDB
          <code class="literal">AUTO_INCREMENT</code>: it could assign the same
          value for several rows. (<a href="http://bugs.mysql.com/10359" target="_top">Bug #10359</a>)
          <code class="literal">InnoDB</code>: All InnoDB bug fixes from 4.1.12
          and earlier versions, and also the fixes to bugs #10335 and
          #10607 listed in the 4.1.13 change notes.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-5"></a>D.1.12. Changes in release 5.0.5 (Not released)</h3></div></div></div><p>
      No public release of MySQL 5.0.5 was made. The changes described
      in this section are available in MySQL 5.0.6.
    </p><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Added support for the <code class="literal">BIT</code> data type to the
          <code class="literal">MEMORY</code>, <code class="literal">InnoDB</code>, and
          <code class="literal">BDB</code> storage engines.
        </p></li><li><p>
          <code class="literal">SHOW VARIABLES</code> no longer displays the
          deprecated <code class="literal">log_update</code> system variable. (<a href="http://bugs.mysql.com/9738" target="_top">Bug
          #9738</a>)
        </p></li><li><p>
          The behavior controlled by the
          <code class="option">--innodb-fast-shutdown</code> option now can be
          changed at runtime by setting the value of the global
          <code class="literal">innodb_fast_shutdown</code> system variable. It
          now accepts values 0, 1 and 2 (except on Netware where 2 is
          disabled). If set to 2, then when the MySQL server shuts down,
          <code class="literal">InnoDB</code> will just flush its logs and shut
          down brutally (and quickly) as if a MySQL crash had occurred;
          no committed transaction will be lost, but a crash recovery
          will be done at next startup.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Security fix:</strong></span> If
          <span><strong class="command">mysqld</strong></span> was started with
          <code class="option">--user=<em class="replaceable"><code>non_existent_user</code></em></code>,
          it would run using the privileges of the account it was
          invoked from, even if that was <code class="literal">root</code>. (<a href="http://bugs.mysql.com/9833" target="_top">Bug
          #9833</a>)
        </p></li><li><p>
          Corrected a failure to resolve a column reference correctly
          for a <code class="literal">LEFT JOIN</code> that compared a join column
          to an <code class="literal">IN</code> subquery. (<a href="http://bugs.mysql.com/9338" target="_top">Bug #9338</a>)
        </p></li><li><p>
          Fixed a problem where, after an internal temporary table in
          memory became too large and had to be converted to an on-disk
          table, the error indicator was not cleared and the query
          failed with error 1023 (<code class="literal">Can't find record in
          ''</code>). (<a href="http://bugs.mysql.com/9703" target="_top">Bug #9703</a>)
        </p></li><li><p>
          Multiple-table updates could produce spurious data-truncation
          warnings if they used a join across columns that are indexed
          using a column prefix. (<a href="http://bugs.mysql.com/9103" target="_top">Bug #9103</a>)
        </p></li><li><p>
          Fixed a string-length comparison problem that caused
          <span><strong class="command">mysql</strong></span> to fail loading dump files containing
          certain ‘<code class="literal">\</code>’-sequences. (<a href="http://bugs.mysql.com/9756" target="_top">Bug
          #9756</a>)
        </p></li><li><p>
          Fixed a failure to resolve a column reference properly when an
          outer join involving a view contained a subquery and the
          column was used in the subquery and the outer query. (<a href="http://bugs.mysql.com/6106" target="_top">Bug
          #6106</a>, <a href="http://bugs.mysql.com/6107" target="_top">Bug #6107</a>)
        </p></li><li><p>
          Use of a subquery that used <code class="literal">WITH ROLLUP</code> in
          the <code class="literal">FROM</code> clause of the main query sometimes
          resulted in a <code class="literal">Column cannot be null</code> error.
          (<a href="http://bugs.mysql.com/9681" target="_top">Bug #9681</a>)
        </p></li><li><p>
          Fixed a memory leak that occurred when selecting from a view
          that contained a subquery. (<a href="http://bugs.mysql.com/10107" target="_top">Bug #10107</a>)
        </p></li><li><p>
          Fixed an optimizer bug in computing the union of two ranges
          for the <code class="literal">OR</code> operator. (<a href="http://bugs.mysql.com/9348" target="_top">Bug #9348</a>)
        </p></li><li><p>
          Fixed a segmentation fault in <span><strong class="command">mysqlcheck</strong></span>
          that occurred when the last table checked in
          <code class="option">--auto-repair</code> mode returned an error (such as
          the table being a <code class="literal">MERGE</code> table). (<a href="http://bugs.mysql.com/9492" target="_top">Bug #9492</a>)
        </p></li><li><p>
          <code class="literal">SET @var= CAST(NULL AS [INTEGER|CHAR])</code> now
          sets the result type of the variable to
          <code class="literal">INTEGER</code>/<code class="literal">CHAR</code>. (<a href="http://bugs.mysql.com/6598" target="_top">Bug
          #6598</a>)
        </p></li><li><p>
          Incorrect results were returned for queries of the form
          <code class="literal">SELECT ... LEFT JOIN ... WHERE EXISTS
          (<em class="replaceable"><code>subquery</code></em>)</code>, where the
          subquery selected rows based on an <code class="literal">IS NULL</code>
          condition. (<a href="http://bugs.mysql.com/9516" target="_top">Bug #9516</a>)
        </p></li><li><p>
          Executing <code class="literal">LOCK TABLES</code> and then calling a
          stored procedure caused an error and resulting in the server
          thinking that no stored procedures exist. (<a href="http://bugs.mysql.com/9566" target="_top">Bug #9566</a>)
        </p></li><li><p>
          Selecting from a view containing a subquery caused the server
          to hang. (<a href="http://bugs.mysql.com/8490" target="_top">Bug #8490</a>)
        </p></li><li><p>
          Within a stored procedure, attempting to execute a
          multiple-table <code class="literal">UPDATE</code> failed with a
          <code class="literal">Table '<em class="replaceable"><code>tbl_name</code></em>' was
          locked with a READ lock and can't be updated</code> error.
          (<a href="http://bugs.mysql.com/9486" target="_top">Bug #9486</a>)
        </p></li><li><p>
          Starting <span><strong class="command">mysqld</strong></span> with the
          <code class="option">--skip-innodb</code> and
          <code class="option">--default-storage-engine=innodb</code> (or
          <code class="option">--default-table-type=innodb</code> caused a server
          crash. (<a href="http://bugs.mysql.com/9815" target="_top">Bug #9815</a>)
        </p></li><li><p>
          Queries containing <code class="literal">CURRENT_USER()</code>
          incorrectly were registered in the query cache. (<a href="http://bugs.mysql.com/9796" target="_top">Bug #9796</a>)
        </p></li><li><p>
          Setting the <code class="literal">storage_engine</code> system variable
          to <code class="literal">MEMORY</code> succeeded, but retrieving the
          variable resulted in a value of <code class="literal">HEAP</code> (the
          old name for the <code class="literal">MEMORY</code> storage engine)
          rather than <code class="literal">MEMORY</code>. (<a href="http://bugs.mysql.com/10039" target="_top">Bug #10039</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlshow</strong></span> displayed an incorrect row count
          for tables. (<a href="http://bugs.mysql.com/9391" target="_top">Bug #9391</a>)
        </p></li><li><p>
          The server died with signal 11 if a non-existent location was
          specified for the location of the binary log. Now the server
          exits after printing an appropriate error messsage. (<a href="http://bugs.mysql.com/9542" target="_top">Bug
          #9542</a>)
        </p></li><li><p>
          Fixed a problem in the client/server protocol where the server
          closed the connection before sending the final error message.
          The problem could show up as a <code class="literal">Lost connection to
          MySQL server during query</code> when attempting to connect
          to access a non-existent database. (<a href="http://bugs.mysql.com/6387" target="_top">Bug #6387</a>, <a href="http://bugs.mysql.com/9455" target="_top">Bug #9455</a>)
        </p></li><li><p>
          Fixed a <code class="literal">readline</code>-related crash in
          <span><strong class="command">mysql</strong></span> when the user pressed Control-R. (<a href="http://bugs.mysql.com/9568" target="_top">Bug
          #9568</a>)
        </p></li><li><p>
          For stored functions that should return a
          <code class="literal">YEAR</code> value, corrected a failure of the
          value to be in <code class="literal">YEAR</code> format. (<a href="http://bugs.mysql.com/8861" target="_top">Bug #8861</a>)
        </p></li><li><p>
          Fixed a server crash resulting from invocation of a stored
          function that returned a value having an
          <code class="literal">ENUM</code> or <code class="literal">SET</code> data type.
          (<a href="http://bugs.mysql.com/9775" target="_top">Bug #9775</a>)
        </p></li><li><p>
          Fixed a server crash resulting from invocation of a stored
          function that returned a value having a
          <code class="literal">BLOB</code> data type. (<a href="http://bugs.mysql.com/9102" target="_top">Bug #9102</a>)
        </p></li><li><p>
          Fixed a server crash resulting from invocation of a stored
          function that returned a value having a <code class="literal">BIT</code>
          data type. (<a href="http://bugs.mysql.com/7648" target="_top">Bug #7648</a>)
        </p></li><li><p>
          <code class="literal">TIMEDIFF()</code> with a negative time first
          argument and postive time second argument produced incorrect
          results. (<a href="http://bugs.mysql.com/8068" target="_top">Bug #8068</a>)
        </p></li><li><p>
          Fixed a problem with <code class="literal">OPTIMIZE TABLE</code> for
          <code class="literal">InnoDB</code> tables being written twice to the
          binary log. (<a href="http://bugs.mysql.com/9149" target="_top">Bug #9149</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Prevent <code class="literal">ALTER
          TABLE</code> from changing the storage engine if there are
          foreign key constraints on the table. (<a href="http://bugs.mysql.com/5574" target="_top">Bug #5574</a>, <a href="http://bugs.mysql.com/5670" target="_top">Bug #5670</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Fixed a bug where next-key locking
          doesn't allow the insert which does not produce a phantom.
          (<a href="http://bugs.mysql.com/9354" target="_top">Bug #9354</a>) If the range is of type <code class="literal">'a' &lt;=
          uniquecolumn</code>, <code class="literal">InnoDB</code> lock only
          the RECORD, if the record with the column value
          <code class="literal">'a'</code> exists in a CLUSTERED index. This
          allows inserts before a range.
        </p></li><li><p>
          <code class="literal">InnoDB</code>: When
          <code class="literal">FOREIGN_KEY_CHECKS=0</code>, <code class="literal">ALTER
          TABLE</code> and <code class="literal">RENAME TABLE</code> will
          ignore any type incompatibilities between referencing and
          referenced columns. Thus, it will be possible to convert the
          character sets of columns that participate in a foreign key.
          Be sure to convert all tables before modifying any data! (<a href="http://bugs.mysql.com/9802" target="_top">Bug
          #9802</a>)
        </p></li><li><p>
          Provide more informative error messages in clustered setting
          when a query is issued against a table that has been modified
          by another <code class="literal">mysqld</code> server. (<a href="http://bugs.mysql.com/6762" target="_top">Bug #6762</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-4"></a>D.1.13. Changes in release 5.0.4 (16 Apr 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Added <code class="literal">ENGINE=MyISAM</code> table option when
          creating <code class="literal">mysql.proc</code> table in
          <span><strong class="command">mysql_create_system_tables</strong></span> script to make
          sure the table is created as a <code class="literal">MyISAM</code> table
          even if the default storage engine has been changed. (<a href="http://bugs.mysql.com/9496" target="_top">Bug
          #9496</a>)
        </p></li><li><p>
          <code class="literal">SHOW CREATE TABLE</code> for an
          <code class="literal">INFORMATION_SCHEMA</code> table no longer prints a
          <code class="literal">MAX_ROWS</code> value because the value has no
          meaning. (<a href="http://bugs.mysql.com/8941" target="_top">Bug #8941</a>)
        </p></li><li><p>
          Invalid <code class="literal">DEFAULT</code> values for <code class="literal">CREATE
          TABLE</code> now generate errors. (<a href="http://bugs.mysql.com/5902" target="_top">Bug #5902</a>)
        </p></li><li><p>
          Added <code class="option">--show-table-type</code> option to
          <span><strong class="command">mysqlshow</strong></span>, to display a column indicating
          the table type, as in <code class="literal">SHOW FULL TABLES</code>.
          (<a href="http://bugs.mysql.com/5036" target="_top">Bug #5036</a>)
        </p></li><li><p>
          The way the time zone information is stored in the binary log
          was changed, so that it is now possible to have a replication
          master and slave running with different global time zones. A
          drawback is that replication from 5.0.4 masters to pre-5.0.4
          slaves is impossible.
        </p></li><li><p>
          Added <code class="option">--with-big-tables</code> compilation option to
          <span><strong class="command">configure</strong></span>. (Previously it was necessary to
          pass <code class="option">-DBIG_TABLES</code> to the compiler manually in
          order to enable large table support.) See
          <a href="installing.html#configure-options" title="2.8.2. Typical configure Options">Section 2.8.2, “Typical <span><strong class="command">configure</strong></span> Options”</a> for details.
        </p></li><li><p>
          New configuration directives <code class="literal">!include</code> and
          <code class="literal">!includedir</code> implemented for including
          option files and searching directories for option files. See
          <a href="using-mysql-programs.html#option-files" title="4.3.2. Using Option Files">Section 4.3.2, “Using Option Files”</a> for usage.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          The use of <code class="literal">XOR</code> together with <code class="literal">NOT
          ISNULL()</code> erroneously resulted in some outer joins
          being converted to inner joins by the optimizer. (<a href="http://bugs.mysql.com/9017" target="_top">Bug #9017</a>)
        </p></li><li><p>
          Fixed an optimizer problem where extraneous comparisons
          between <code class="literal">NULL</code> values in indexed columns were
          being done for operators such as <code class="literal">=</code> that are
          never true for <code class="literal">NULL</code>. (<a href="http://bugs.mysql.com/8877" target="_top">Bug #8877</a>)
        </p></li><li><p>
          Fixed the client/server protocol for prepared statements so
          that reconnection works properly when the connection is killed
          while reconnect is enabled. (<a href="http://bugs.mysql.com/8866" target="_top">Bug #8866</a>)
        </p></li><li><p>
          A server installed as a Windows service and started with
          <code class="option">--shared-memory</code> could not be stopped. (<a href="http://bugs.mysql.com/9665" target="_top">Bug
          #9665</a>)
        </p></li><li><p>
          Fixed a server crash resulting from multiple executions of a
          prepared statement involving a join of an
          <code class="literal">INFORMATION_SCHEMA</code> table with another
          table. (<a href="http://bugs.mysql.com/9383" target="_top">Bug #9383</a>)
        </p></li><li><p>
          Fixed <code class="literal">utf8_spanish2_ci</code> and
          <code class="literal">ucs2_spanish2_ci</code> collations to not consider
          ‘<code class="literal">r</code>’ equal to
          ‘<code class="literal">rr</code>’. If you upgrade to this
          version from an earlier version, you should rebuild the
          indexes of affected tables. (<a href="http://bugs.mysql.com/9269" target="_top">Bug #9269</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> dumped core when invoked with
          <code class="option">--tmp</code> and
          <code class="option">--single-transaction</code> options and a
          non-existent table name. (<a href="http://bugs.mysql.com/9175" target="_top">Bug #9175</a>)
        </p></li><li><p>
          Allow extra HKSCS and cp950 characters
          (<code class="literal">big5</code> extension characters) to be accepted
          in <code class="literal">big5</code> columns. (<a href="http://bugs.mysql.com/9357" target="_top">Bug #9357</a>)
        </p></li><li><p>
          <span><strong class="command">mysql.server</strong></span> no longer uses non-portable
          <span><strong class="command">alias</strong></span> command or LSB functions. (<a href="http://bugs.mysql.com/9852" target="_top">Bug #9852</a>)
        </p></li><li><p>
          Fixed a server crash resulting from <code class="literal">GROUP
          BY</code> on a decimal expression. (<a href="http://bugs.mysql.com/9210" target="_top">Bug #9210</a>)
        </p></li><li><p>
          In prepared statements, subqueries containing parameters were
          erroneously treated as <code class="literal">const</code> tables during
          preparation, resulting in a server crash. (<a href="http://bugs.mysql.com/8807" target="_top">Bug #8807</a>)
        </p></li><li><p>
          InnoDB: <code class="literal">ENUM</code> and <code class="literal">SET</code>
          columns were treated incorrectly as character strings. This
          bug did not manifest itself with <code class="literal">latin1</code>
          collations if there were less than about 100 elements in an
          <code class="literal">ENUM</code>, but it caused malfunction with
          <code class="literal">UTF-8</code>. Old tables will continue to work. In
          new tables, <code class="literal">ENUM</code> and <code class="literal">SET</code>
          will be internally stored as unsigned integers. (<a href="http://bugs.mysql.com/9526" target="_top">Bug #9526</a>)
        </p></li><li><p>
          InnoDB: Avoid test suite failures caused by a locking conflict
          between two server instances at server shutdown/startup. This
          conflict on advisory locks appears to be the result of a bug
          in the operating system; these locks should be released when
          the files are closed, but somehow that does not always happen
          immediately in Linux. (<a href="http://bugs.mysql.com/9381" target="_top">Bug #9381</a>)
        </p></li><li><p>
          InnoDB: True <code class="literal">VARCHAR</code>: InnoDB stored the
          'position' of a row wrong in a column prefix primary key
          index; this could cause MySQL to complain <code class="literal">ERROR 1032:
          Can't find record …</code> in an update of the primary
          key, and also some <code class="literal">ORDER BY</code> or
          <code class="literal">DISTINCT</code> queries. (<a href="http://bugs.mysql.com/9314" target="_top">Bug #9314</a>)
        </p></li><li><p>
          InnoDB: Fix bug in MySQL/InnoDB 5.0.3: SQL statements were not
          rolled back on error. (<a href="http://bugs.mysql.com/8650" target="_top">Bug #8650</a>)
        </p></li><li><p>
          Fixed a <code class="literal">Commands out of sync</code> error when two
          prepared statements for single-row result sets were open
          simultaneously. (<a href="http://bugs.mysql.com/8880" target="_top">Bug #8880</a>)
        </p></li><li><p>
          Fixed a server crash after a call to
          <code class="literal">mysql_stmt_close()</code> for single-row result
          set. (<a href="http://bugs.mysql.com/9159" target="_top">Bug #9159</a>)
        </p></li><li><p>
          Fixed server crashes for <code class="literal">CREATE TABLE ...
          SELECT</code> or <code class="literal">INSERT INTO ... SELECT</code>
          when selecting from multiple-table view. (<a href="http://bugs.mysql.com/8703" target="_top">Bug #8703</a>, <a href="http://bugs.mysql.com/9398" target="_top">Bug
          #9398</a>)
        </p></li><li><p>
          <code class="literal">TRADITIONAL</code> SQL mode should prevent inserts
          where a column with no default value is omitted or set to a
          value of <code class="literal">DEFAULT</code>. Fixed cases where this
          restriction was not enforced. (<a href="http://bugs.mysql.com/5986" target="_top">Bug #5986</a>)
        </p></li><li><p>
          Fixed a server crash when creating a <code class="literal">PRIMARY
          KEY</code> for a table, if the table contained a
          <code class="literal">BIT</code> column. (<a href="http://bugs.mysql.com/9571" target="_top">Bug #9571</a>)
        </p></li><li><p>
          Warning message from <code class="literal">GROUP_CONCAT()</code> did not
          always indicate correct number of lines. (<a href="http://bugs.mysql.com/8681" target="_top">Bug #8681</a>)
        </p></li><li><p>
          The commit count cache for <code class="literal">NDB</code> was not
          properly invalidated when deleting a record using a cursor.
          (<a href="http://bugs.mysql.com/8585" target="_top">Bug #8585</a>)
        </p></li><li><p>
          Fixed option-parsing code for the embedded server to
          understand <code class="literal">K</code>, <code class="literal">M</code>, and
          <code class="literal">G</code> suffixes for the
          <code class="literal">net_buffer_length</code> and
          <code class="literal">max_allowed_packet</code> options. (<a href="http://bugs.mysql.com/9472" target="_top">Bug #9472</a>)
        </p></li><li><p>
          Selecting a <code class="literal">BIT</code> column failed if the binary
          client/server protocol was used. (<a href="http://bugs.mysql.com/9608" target="_top">Bug #9608</a>)
        </p></li><li><p>
          Fixed a permissions problem whereby information in
          <code class="literal">INFORMATION_SCHEMA</code> could be exposed to a
          user with insufficient privileges. (<a href="http://bugs.mysql.com/7214" target="_top">Bug #7214</a>)
        </p></li><li><p>
          An error now occurs if you try to insert an invalid value via
          a stored procedure in <code class="literal">STRICT</code> mode. (<a href="http://bugs.mysql.com/5907" target="_top">Bug
          #5907</a>)
        </p></li><li><p>
          Link with <code class="literal">libsupc++</code> on Fedora Core 3 to get
          language support functions. (<a href="http://bugs.mysql.com/6554" target="_top">Bug #6554</a>)
        </p></li><li><p>
          The value of the <code class="literal">CHARACTER_MAXIMUM_LENGTH</code>
          and <code class="literal">CHARACTER_OCTET_LENGTH</code> columns of the
          <code class="literal">INFORMATION_SCHEMA.COLUMNS</code> table must be
          <code class="literal">NULL</code> for numeric columns, but were not.
          (<a href="http://bugs.mysql.com/9344" target="_top">Bug #9344</a>)
        </p></li><li><p>
          <code class="literal">DROP TABLE</code> did not drop triggers that were
          defined for the table. <code class="literal">DROP DATABASE</code> did
          not drop triggers in the database. (<a href="http://bugs.mysql.com/5859" target="_top">Bug #5859</a>, <a href="http://bugs.mysql.com/6559" target="_top">Bug #6559</a>)
        </p></li><li><p>
          <code class="literal">CREATE OR REPLACE VIEW</code> and <code class="literal">ALTER
          VIEW</code> now require the <code class="literal">CREATE VIEW</code>
          and <code class="literal">DROP</code> privileges, not <code class="literal">CREATE
          VIEW</code> and <code class="literal">DELETE</code>.
          (<code class="literal">DELETE</code> is a row-level privilege, not a
          table-level privilege.) (<a href="http://bugs.mysql.com/9260" target="_top">Bug #9260</a>)
        </p></li><li><p>
          Some user variables were not being handled with
          “<span class="quote">implicit</span>” coercibility. (<a href="http://bugs.mysql.com/9425" target="_top">Bug #9425</a>)
        </p></li><li><p>
          Setting the <code class="literal">max_error_count</code> system variable
          to 0 resulted in a setting of 1. (<a href="http://bugs.mysql.com/9072" target="_top">Bug #9072</a>)
        </p></li><li><p>
          Fixed a collation coercibility problem that caused a union
          between binary and non-binary columns to fail. (<a href="http://bugs.mysql.com/6519" target="_top">Bug #6519</a>)
        </p></li><li><p>
          Fixed a bug in division of floating point numbers. It could
          cause nine zeroes (<code class="literal">000000000</code>) to be
          inserted in the middle of the quotient. (<a href="http://bugs.mysql.com/9501" target="_top">Bug #9501</a>)
        </p></li><li><p>
          <code class="literal">INFORMATION_SCHEMA</code> tables had an implicit
          upper limit for the number of rows. As a result, not all data
          could be returned for some queries. (<a href="http://bugs.mysql.com/9317" target="_top">Bug #9317</a>)
        </p></li><li><p>
          Fixed a problem with the <code class="literal">tee</code> command in
          <span><strong class="command">mysql</strong></span> that resulted in
          <span><strong class="command">mysql</strong></span> crashing. (<a href="http://bugs.mysql.com/8499" target="_top">Bug #8499</a>)
        </p></li><li><p>
          <code class="literal">CAST()</code> now produces warnings when casting
          incorrect <code class="literal">INTEGER</code> and
          <code class="literal">CHAR</code> values. This also applies to implicit
          <code class="literal">string</code> to <code class="literal">number</code> casts.
          (<a href="http://bugs.mysql.com/5912" target="_top">Bug #5912</a>)
        </p></li><li><p>
          <code class="literal">ALTER TABLE</code> now fails in
          <code class="literal">STRICT</code> mode if the alteration generates
          warnings.
        </p></li><li><p>
          Using <code class="literal">CONVERT('0000-00-00',date)</code> or
          <code class="literal">CAST('0000-00-00' as date)</code> in
          <code class="literal">TRADITIONAL</code> SQL mode now produces a
          warning. (<a href="http://bugs.mysql.com/6145" target="_top">Bug #6145</a>)
        </p></li><li><p>
          Inserting a zero date in a <code class="literal">DATE</code>,
          <code class="literal">DATETIME</code> or <code class="literal">TIMESTAMP</code>
          column during <code class="literal">TRADITIONAL</code> mode now produces
          an error. (<a href="http://bugs.mysql.com/5933" target="_top">Bug #5933</a>)
        </p></li><li><p>
          Inserting a zero date into a <code class="literal">DATETIME</code>
          column in <code class="literal">TRADITIONAL</code> mode now produces an
          error.
        </p></li><li><p>
          <code class="literal">STR_TO_DATE()</code> now produces errors in strict
          mode (and warnings otherwise) when given an illegal argument.
          (<a href="http://bugs.mysql.com/5902" target="_top">Bug #5902</a>)
        </p></li><li><p>
          Fixed a problem with <code class="literal">ORDER BY</code> that
          sometimes caused incorrect sorting of <code class="literal">utf8</code>
          data. (<a href="http://bugs.mysql.com/9309" target="_top">Bug #9309</a>)
        </p></li><li><p>
          Fixed server crash resulting from queries that combined
          <code class="literal">SELECT DISTINCT</code>, <code class="literal">SUM()</code>,
          and <code class="literal">ROLLUP</code>. (<a href="http://bugs.mysql.com/8615" target="_top">Bug #8615</a>)
        </p></li><li><p>
          Incorrect results were returned from queries that combined
          <code class="literal">SELECT DISTINCT</code>, <code class="literal">GROUP BY
          </code>, and <code class="literal">ROLLUP</code>. (<a href="http://bugs.mysql.com/8616" target="_top">Bug #8616</a>)
        </p></li><li><p>
          Too many rows were returned from queries that combined
          <code class="literal">ROLLUP</code> and <code class="literal">LIMIT</code> if
          <code class="literal">SQL_CALC_FOUND_ROWS</code> was given. (<a href="http://bugs.mysql.com/8617" target="_top">Bug #8617</a>)
        </p></li><li><p>
          If on replication master a <code class="literal">LOAD DATA INFILE</code>
          is interrupted in the middle (integrity constraint violation,
          killed connection...), the slave used to skip this
          <code class="literal">LOAD DATA INFILE</code> entirely, thus missing
          some changes if this command permanently inserted/updated some
          table records before being interrupted. This is now fixed.
          (<a href="http://bugs.mysql.com/3247" target="_top">Bug #3247</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-3"></a>D.1.14. Changes in release 5.0.3 (23 Mar 2005: Beta)</h3></div></div></div><p>
      <span class="bold"><strong>Note</strong></span>: This Beta release, as any
      other pre-production release, should not be installed on
      “<span class="quote">production</span>” level systems or systems with critical
      data. It is good practice to back up your data before installing
      any new version of software. Although MySQL has done its best to
      ensure a high level of quality, protect your data by making a
      backup as you would for any software beta release.
    </p><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Security improvement: The server creates
          <code class="filename">.frm</code>, <code class="filename">.MYD</code>,
          <code class="filename">.MYI</code>, <code class="filename">.MRG</code>,
          <code class="filename">.ISD</code>, and <code class="filename">.ISM</code> table
          files only if a file with the same name does not already
          exist. Thanks to Stefano Di Paola
          <code class="email">&lt;<a href="mailto:stefano.dipaola@wisec.it">stefano.dipaola@wisec.it</a>&gt;</code> for finding and
          informing us about this issue.
          (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0711" target="_top">CAN-2005-0711</a>)
        </p></li><li><p>
          Security improvement: User-defined functions should have at
          least one symbol defined in addition to the
          <code class="literal">xxx</code> symbol that corresponds to the main
          <code class="literal">xxx()</code> function. These auxiliary symbols
          correspond to the <code class="literal">xxx_init()</code>,
          <code class="literal">xxx_deinit()</code>,
          <code class="literal">xxx_reset()</code>,
          <code class="literal">xxx_clear()</code>, and
          <code class="literal">xxx_add()</code> functions.
          <span><strong class="command">mysqld</strong></span> by default no longer loads UDFs
          unless they have at least one auxiliary symbol defined in
          addition to the main symbol. The
          <code class="option">--allow-suspicious-udfs</code> option controls
          whether UDFs that have only an <code class="literal">xxx</code> symbol
          can be loaded. By default, the option is off.
          <code class="literal">mysqld</code> also checks UDF filenames when it
          reads them from the <code class="literal">mysql.func</code> table and
          rejects those that contain directory pathname separator
          characters. (It already checked names as given in
          <code class="literal">CREATE FUNCTION</code> statements.) See
          <a href="extending-mysql.html#udf-calling" title="24.2.3.1. UDF Calling Sequences for Simple Functions">Section 24.2.3.1, “UDF Calling Sequences for Simple Functions”</a>,
          <a href="extending-mysql.html#udf-aggr-calling" title="24.2.3.2. UDF Calling Sequences for Aggregate Functions">Section 24.2.3.2, “UDF Calling Sequences for Aggregate Functions”</a>, and
          <a href="extending-mysql.html#udf-security" title="24.2.3.6. User-Defined Function Security Precautions">Section 24.2.3.6, “User-Defined Function Security Precautions”</a>. Thanks to Stefano Di Paola
          <code class="email">&lt;<a href="mailto:stefano.dipaola@wisec.it">stefano.dipaola@wisec.it</a>&gt;</code> for finding and
          informing us about this issue.
          (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0709" target="_top">CAN-2005-0709</a>,
          <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0710" target="_top">CAN-2005-0710</a>)
        </p></li><li><p>
          InnoDB: <span class="bold"><strong>Upgrading from 4.1:</strong></span>
          The sorting order for end-space in <code class="literal">TEXT</code>
          columns for InnoDB tables has changed. Starting from 5.0.3,
          InnoDB compares <code class="literal">TEXT</code> columns as
          space-padded at the end. If you have a non-unique index on a
          <code class="literal">TEXT</code> column, you should run <code class="literal">CHECK
          TABLE</code> on it, and run <code class="literal">OPTIMIZE
          TABLE</code> if the check reports errors. If you have a
          <code class="literal">UNIQUE INDEX</code> on a <code class="literal">TEXT</code>
          column, you should rebuild the table with <code class="literal">OPTIMIZE
          TABLE</code>.
        </p></li><li><p>
          Implemented support for XA transactions. See
          <a href="sql-syntax.html#xa" title="13.4.7. XA Transactions">Section 13.4.7, “XA Transactions”</a>. The implementation make the
          <code class="literal">innodb_safe_binlog</code> system variable
          obsolete, so it has been removed.
        </p></li><li><p>
          <span><strong class="command">mysqlbinlog</strong></span> now prints a
          <code class="literal">ROLLBACK</code> statement at the end of its
          output, in case the server crashed while it was in the process
          of writing the final entry into the last binary log named on
          the command line. This causes any half-written transaction to
          be rolled back when the output is executed. The
          <code class="literal">ROLLBACK</code> is harmless if the binary log file
          was written and closed normally.
        </p></li><li><p>
          Added the <code class="literal">engine_condition_pushdown</code> system
          variable. For NDB, setting this variable to 1 allows
          processing of some <code class="literal">WHERE</code> clause conditions
          to be processed in NDB nodes before rows are sent to the MySQL
          server, rather than having rows sent to the server for
          evaluation.
        </p></li><li><p>
          Additional control over transaction completion was
          implemented. The <code class="literal">COMMIT</code> and
          <code class="literal">ROLLBACK</code> statements support <code class="literal">AND
          [NO] CHAIN</code> and <code class="literal">RELEASE</code> clauses.
          There is a new <code class="literal">RELEASE SAVEPOINT</code> statement.
          The <code class="literal">completion_type</code> system variable was
          added for setting the global and session default completion
          type.
        </p></li><li><p>
          A new <code class="literal">CREATE USER</code> privilege was added.
        </p></li><li><p>
          <code class="filename">my.cnf</code> in the compile-time datadir
          (usually <code class="filename">/usr/local/mysql/data/</code> in the
          binary tarball distributions) is not being read anymore. The
          value of the environment variable
          <code class="literal">MYSQL_HOME</code> is used instead of the
          hard-coded path.
        </p></li><li><p>
          Support for the <code class="literal">ISAM</code> storage engine has
          been removed. If you have <code class="literal">ISAM</code> tables, you
          should convert them before upgrading. See
          <a href="installing.html#upgrading-from-4-1" title="2.10.2. Upgrading from Version 4.1 to 5.0">Section 2.10.2, “Upgrading from Version 4.1 to 5.0”</a>.
        </p></li><li><p>
          Support for <code class="literal">RAID</code> options in
          <code class="literal">MyISAM</code> tables has been removed. If you have
          tables that use these options, you should convert them before
          upgrading. See <a href="installing.html#upgrading-from-4-1" title="2.10.2. Upgrading from Version 4.1 to 5.0">Section 2.10.2, “Upgrading from Version 4.1 to 5.0”</a>.
        </p></li><li><p>
          Added support for <code class="literal">AVG(DISTINCT)</code>.
        </p></li><li><p>
          <code class="literal">ONLY_FULL_GROUP_BY</code> no longer is included in
          the <code class="literal">ANSI</code> composite SQL mode. (<a href="http://bugs.mysql.com/8510" target="_top">Bug #8510</a>)
        </p></li><li><p>
          <span><strong class="command">mysqld_safe</strong></span> will create the directory where
          the UNIX socket file is to be located if the directory does
          not exist. This applies only to the last component of the
          directory pathname. (<a href="http://bugs.mysql.com/8513" target="_top">Bug #8513</a>)
        </p></li><li><p>
          The coercibility for the return value of functions such as
          <code class="literal">USER()</code> or <code class="literal">VERSION()</code> now
          is “<span class="quote">system constant</span>” rather than
          “<span class="quote">implicit.</span>” This makes these functions more
          coercible than column values so that comparisons of the two do
          not result in <code class="literal">Illegal mix of collations</code>
          errors. <code class="literal">COERCIBILITY()</code> was modified to
          accommodate this new coercibility value. See
          <a href="functions.html#information-functions" title="12.9.3. Information Functions">Section 12.9.3, “Information Functions”</a>.
        </p></li><li><p>
          User variable coercibility has been changed from
          “<span class="quote">coercible</span>” to “<span class="quote">implicit.</span>” That is,
          user variables have the same coercibility as column values.
        </p></li><li><p>
          Boolean full-text phrase searching now requires only that
          matches contain exactly the same words as the phrase and in
          the same order. Non-word characters no longer need match
          exactly.
        </p></li><li><p>
          <code class="literal">CHECKSUM TABLE</code> returns a warning for
          non-existing tables. The checksum value remains
          <code class="literal">NULL</code> as before. (<a href="http://bugs.mysql.com/8256" target="_top">Bug #8256</a>)
        </p></li><li><p>
          The server now includes a timestamp in the <code class="literal">Ready for
          connections</code> message that is written to the error log
          at startup. (<a href="http://bugs.mysql.com/8444" target="_top">Bug #8444</a>)
        </p></li><li><p>
          Added <code class="literal">SQL_NOTES</code> session variable to cause
          <code class="literal">Note</code>-level warnings not to be recorded.
          (<a href="http://bugs.mysql.com/6662" target="_top">Bug #6662</a>)
        </p></li><li><p>
          Allowed the service-installation command for Windows servers
          to specify a single option other than
          <code class="option">--defaults-file</code> following the service name.
          This is for compatibility with MySQL 4.1. (<a href="http://bugs.mysql.com/7856" target="_top">Bug #7856</a>)
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Commit after every 10,000 copied
          rows when executing <code class="literal">ALTER TABLE</code>,
          <code class="literal">CREATE INDEX</code>, <code class="literal">DROP INDEX</code>
          or <code class="literal">OPTIMIZE TABLE</code>. This makes it much
          faster to recover from an aborted operation.
        </p></li><li><p>
          Added <code class="literal">VAR_POP()</code> and
          <code class="literal">STDDEV_POP()</code> as standard SQL aliases for
          the <code class="literal">VARIANCE()</code> and
          <code class="literal">STDDEV()</code> functions that compute population
          variance and standard deviation. Added new
          <code class="literal">VAR_SAMP()</code> and
          <code class="literal">STDDEV_SAMP()</code> functions to compute sample
          variance and standard deviation. (<a href="http://bugs.mysql.com/3190" target="_top">Bug #3190</a>)
        </p></li><li><p>
          Fixed a problem with out-of-order packets being sent
          (<code class="literal">ERROR</code> after <code class="literal">OK</code> or
          <code class="literal">EOF</code>) following a <code class="literal">KILL
          QUERY</code> statement. (<a href="http://bugs.mysql.com/6804" target="_top">Bug #6804</a>)
        </p></li><li><p>
          Retrieving from a view defined as a <code class="literal">SELECT</code>
          that mixed <code class="literal">UNION ALL</code> and <code class="literal">UNION
          DISTINCT</code> resulted in a different result than
          retrieving from the original <code class="literal">SELECT</code>. (<a href="http://bugs.mysql.com/6565" target="_top">Bug
          #6565</a>)
        </p></li><li><p>
          Fixed a problem with non-optimal
          <code class="literal">index_merge</code> query execution plans being
          chosen on IRIX. (<a href="http://bugs.mysql.com/8578" target="_top">Bug #8578</a>)
        </p></li><li><p>
          <code class="literal">BIT</code> in column definitions now is a distinct
          data type; it no longer is treated as a synonym for
          <code class="literal">TINYINT(1)</code>.
        </p></li><li><p>
          Bit-field values can be written using
          <code class="literal">b'<em class="replaceable"><code>value</code></em>'</code>
          notation. <em class="replaceable"><code>value</code></em> is a binary value
          written using 0s and 1s.
        </p></li><li><p>
          From the Windows distribution, predefined accounts without
          passwords for remote users ("root@%", "@%") were removed
          (other distributions never had them).
        </p></li><li><p>
          Added <code class="literal">mysql_library_init()</code> and
          <code class="literal">mysql_library_end()</code> as synonyms for the
          <code class="literal">mysql_server_init()</code> and
          <code class="literal">mysql_server_end()</code> C API functions.
          <code class="literal">mysql_library_init()</code> and
          <code class="literal">mysql_library_end()</code> are
          <code class="literal">#define</code> symbols, but the names more clearly
          indicate that they should be called when beginning and ending
          use of a MySQL C API library no matter whether the application
          uses <code class="literal">libmysqlclient</code> or
          <code class="literal">libmysqld</code>. (<a href="http://bugs.mysql.com/6149" target="_top">Bug #6149</a>)
        </p></li><li><p>
          <code class="literal">SHOW COLUMNS</code> now displays
          <code class="literal">NO</code> rather than blank in the
          <code class="literal">Null</code> output column if the corresponding
          table column cannot be <code class="literal">NULL</code>.
        </p></li><li><p>
          Changed XML format for <span><strong class="command">mysql</strong></span> from
          <code class="literal">&lt;<em class="replaceable"><code>col_name</code></em>&gt;<em class="replaceable"><code>col_value</code></em>&lt;/<em class="replaceable"><code>col_name</code></em>&gt;</code>
          to <code class="literal">&lt;field
          name="<em class="replaceable"><code>col_name</code></em>"&gt;<em class="replaceable"><code>col_value</code></em>&lt;/field&gt;</code>
          to allow for proper encoding of column names that are not
          legal as element names. (<a href="http://bugs.mysql.com/7811" target="_top">Bug #7811</a>)
        </p></li><li><p>
          Added <code class="option">--innodb-checksums</code> and
          <code class="option">--innodb-doublewrite</code> options for
          <span><strong class="command">mysqld</strong></span>.
        </p></li><li><p>
          Added <code class="option">--large-pages</code> option for
          <span><strong class="command">mysqld</strong></span>.
        </p></li><li><p>
          Added <code class="literal">multi_read_range</code> system variable.
        </p></li><li><p>
          <code class="literal">SHOW DATABASES</code>, <code class="literal">SHOW
          TABLES</code>, <code class="literal">SHOW COLUMNS</code>, and so
          forth display information about the
          <code class="literal">INFORMATION_SCHEMA</code> database. Also, several
          <code class="literal">SHOW</code> statements now accept a
          <code class="literal">WHERE</code> clause specifying which output rows
          to display. See <a href="information-schema.html" title="Chapter 20. The INFORMATION_SCHEMA Information Database">Chapter 20, <i>The <code class="literal">INFORMATION_SCHEMA</code> Information Database</i></a>.
        </p></li><li><p>
          Added the <code class="literal">CREATE ROUTINE</code> and <code class="literal">ALTER
          ROUTINE</code> privileges, and made the
          <code class="literal">EXECUTE</code> privilege operational.
        </p></li><li><p>
          InnoDB: Corrected a bug in the crash recovery of
          <code class="literal">ROW_FORMAT=COMPACT</code> tables that caused
          corruption. (<a href="http://bugs.mysql.com/7973" target="_top">Bug #7973</a>) There may still be bugs in the crash
          recovery, especially in <code class="literal">COMPACT</code> tables.
        </p></li><li><p>
          When the <code class="literal">MyISAM</code> storage engine detects
          corruption of a <code class="literal">MyISAM</code> table, a message
          describing the problem now is written to the error log.
        </p></li><li><p>
          InnoDB: When MySQL/InnoDB is compiled on Mac OS X 10.2 or
          earlier, detect the operating system version at run time and
          use the <code class="literal">fcntl()</code> file flush method on Mac OS
          X versions 10.3 and later. In Mac OS X,
          <code class="literal">fsync()</code> does not flush the write cache in
          the disk drive, but the special <code class="literal">fcntl()</code>
          does; however, the flush request is ignored by some external
          devices. Failure to flush the buffers may cause severe
          database corruption at power outages.
        </p></li><li><p>
          InnoDB: Implemented fast <code class="literal">TRUNCATE TABLE</code>.
          The old approach (deleting rows one by one) may be used if the
          table is being referenced by foreign keys. (<a href="http://bugs.mysql.com/7150" target="_top">Bug #7150</a>)
        </p></li><li><p>
          Added <code class="literal">cp932</code> (SJIS for Windows Japanese) and
          <code class="literal">eucjpms</code> (UJIS for Windows Japanese)
          character sets.
        </p></li><li><p>
          Added several <code class="literal">InnoDB</code> status variables. See
          <a href="database-administration.html#server-status-variables" title="5.3.4. Server Status Variables">Section 5.3.4, “Server Status Variables”</a>.
        </p></li><li><p>
          Added the <code class="literal">FEDERATED</code> storage engine. See
          <a href="storage-engines.html#federated-storage-engine" title="14.7. The FEDERATED Storage Engine">Section 14.7, “The <code class="literal">FEDERATED</code> Storage Engine”</a>.
        </p></li><li><p>
          <code class="literal">SHOW CREATE TABLE</code> now uses <code class="literal">USING
          <em class="replaceable"><code>index_type</code></em></code> rather than
          <code class="literal">TYPE <em class="replaceable"><code>index_type</code></em></code>
          to specify an index type. (<a href="http://bugs.mysql.com/7233" target="_top">Bug #7233</a>)
        </p></li><li><p>
          InnoDB now supports a fast <code class="literal">TRUNCATE TABLE</code>.
          One visible change from this is that auto-increment values for
          this table are reset on <code class="literal">TRUNCATE</code>.
        </p></li><li><p>
          Added an <code class="literal">error</code> member to the
          <code class="literal">MYSQL_BIND</code> data structure that is used in
          the C API for prepared statements. This member is used for
          reporting data truncation errors. Truncation reporting is
          enabled via the new
          <code class="literal">MYSQL_REPORT_DATA_TRUNCATION</code> option for the
          <code class="literal">mysql_options()</code> C API function.
        </p></li><li><p>
          API change: the <code class="literal">reconnect</code> flag in the
          <code class="literal">MYSQL</code> structure is now set to 0 by
          <code class="literal">mysql_real_connect()</code>. Only those client
          programs which didn't explicitly set this flag to 0 or 1 after
          <code class="literal">mysql_real_connect()</code> experience a change.
          Having automatic reconnection enabled by default was
          considered too dangerous (after reconnection, table locks,
          temporary tables, user and session variables are lost).
        </p></li><li><p>
          <code class="literal">FLUSH TABLES WITH READ LOCK</code> is now killable
          while it's waiting for running <code class="literal">COMMIT</code>
          statements to finish.
        </p></li><li><p>
          <code class="literal">MEMORY</code> (<code class="literal">HEAP</code>) can have
          <code class="literal">VARCHAR()</code> fields.
        </p></li><li><p>
          <code class="literal">VARCHAR</code> columns now remember end space. A
          <code class="literal">VARCHAR()</code> column can now contain up to
          65535 bytes. For more details, see
          <a href="news.html#news-5-0-x" title="D.1. Changes in release 5.0.x (Production)">Section D.1, “Changes in release 5.0.x (Production)”</a>. If the table handler doesn't
          support the new <code class="literal">VARCHAR</code> type, then it's
          converted to a <code class="literal">CHAR</code> column. Currently this
          happens for <code class="literal">NDB</code> tables.
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Introduced a compact record format
          that does not store the number of columns or the lengths of
          fixed-size columns. The old format can be requested by
          specifying <code class="literal">ROW_FORMAT=REDUNDANT</code>. The new
          format (<code class="literal">ROW_FORMAT=COMPACT</code>) is the default.
          The new format typically saves 20 % of disk space and memory.
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Setting the initial
          <code class="literal">AUTO_INCREMENT</code> value for an
          <code class="literal">InnoDB</code> table using <code class="literal">CREATE TABLE
          ... AUTO_INCREMENT = <em class="replaceable"><code>n</code></em></code>
          now works, and <code class="literal">ALTER TABLE ... AUTO_INCREMENT =
          <em class="replaceable"><code>n</code></em></code> resets the current
          value.
        </p></li><li><p>
          <code class="literal">Seconds_Behind_Master</code> is
          <code class="literal">NULL</code> (which means “<span class="quote">unknown</span>”)
          if the slave SQL thread is not running, or if the slave I/O
          thread is not running or not connected to master. It is zero
          if the SQL thread has caught up to the I/O thread. It no
          longer grows indefinitely if the master is idle.
        </p></li><li><p>
          The MySQL server aborts immediately instead of simply issuing
          a warning if it is started with the <code class="option">--log-bin</code>
          option but cannot initialize the binary log at startup (that
          is, an error occurs when writing to the binary log file or
          binary log index file).
        </p></li><li><p>
          The binary log file and binary log index file now are handled
          the same way as <code class="literal">MyISAM</code> tables when there is
          a “<span class="quote">disk full</span>” or “<span class="quote">quota exceeded</span>”
          error. See <a href="problems.html#full-disk" title="A.4.3. How MySQL Handles a Full Disk">Section A.4.3, “How MySQL Handles a Full Disk”</a>.
        </p></li><li><p>
          The MySQL server now aborts when started with the option
          <code class="option">--log-bin-index</code> and without
          <code class="option">--log-bin</code>, and when started with
          <code class="option">--log-slave-updates</code> and without
          <code class="option">--log-bin</code>.
        </p></li><li><p>
          If the MySQL server is started without an argument to
          <code class="option">--log-bin</code> and without
          <code class="option">--log-bin-index</code>, thus not providing a name
          for the binary log index file, a warning is issued because
          MySQL falls back to using the hostname for that name, and this
          is prone to replication issues if the server's hostname's gets
          changed later. See <a href="problems.html#open-bugs" title="A.8.1. Open Issues in MySQL">Section A.8.1, “Open Issues in MySQL”</a>.
        </p></li><li><p>
          Added account-specific <code class="literal">MAX_USER_CONNECTIONS</code>
          limit, which allows you to specify the maximum number of
          concurrent connections for the account. Also, all limited
          resources now are counted per account (instead of being
          counted per user + host pair as it was before). Use the
          <code class="option">--old-style-user-limits</code> option to get the old
          behavior.
        </p></li><li><p>
          InnoDB: A shared record lock
          (<code class="literal">LOCK_REC_NOT_GAP</code>) is now taken for a
          matching record in the foreign key check because inserts can
          be allowed into gaps.
        </p></li><li><p>
          InnoDB: Relaxed locking in <code class="literal">INSERT…SELECT</code>,
          single table <code class="literal">UPDATE…SELECT</code> and single
          table <code class="literal">DELETE…SELECT</code> clauses when
          <code class="literal">innodb_locks_unsafe_for_binlog</code> is used and
          isolation level of the transaction is not serializable.
          <code class="literal">InnoDB</code> uses consistent read in these cases
          for a selected table.
        </p></li><li><p>
          Added a new global system variable
          <code class="literal">slave_transaction_retries</code>: if the
          replication slave SQL thread fails to execute a transaction
          because of an <code class="literal">InnoDB</code> deadlock or exceeded
          InnoDB's <code class="literal">innodb_lock_wait_timeout</code> or
          NDBCluster's
          <code class="literal">TransactionDeadlockDetectionTimeout</code> or
          <code class="literal">TransactionInactiveTimeout</code>, it
          automatically retries
          <code class="literal">slave_transaction_retries</code> times before
          stopping with an error. The default is 10. (<a href="http://bugs.mysql.com/8325" target="_top">Bug #8325</a>)
        </p></li><li><p>
          When a client releases a user-level lock, <code class="literal">DO
          RELEASE_LOCK()</code> will not be written to the binary log
          anymore (this makes the binary log smaller); as a counterpart,
          the slave does not actually take the lock when it executes
          <code class="literal">GET_LOCK()</code>. This is mainly an optimization
          and should not affect existing setups. (<a href="http://bugs.mysql.com/7998" target="_top">Bug #7998</a>)
        </p></li><li><p>
          The way the character set information is stored into the
          binary log was changed, so that it's now possible to have a
          replication master and slave running with different global
          character sets. A drawback is that replication from 5.0.3
          masters to pre-5.0.3 slaves is impossible.
        </p></li><li><p>
          The <code class="literal">LOAD DATA</code> statement was extended to
          support user variables in the target column list, and an
          optional <code class="literal">SET</code> clause. Now one can perform
          some transformations on data after they have been read and
          before they are inserted into the table. For example:
        </p><pre class="programlisting">LOAD DATA INFILE 'file.txt'
  INTO TABLE t1
  (column1, @var1)
  SET column2 = @var1/100;
</pre><p>
          Also, replication of <code class="literal">LOAD DATA</code> was changed,
          so you can't replicate such statements from a 5.0.3 master to
          pre-5.0.3 slaves.
        </p></li><li><p>
          <code class="literal">NDB Cluster</code>: When using this storage
          engine, the output of <code class="literal">SHOW TABLE STATUS</code> now
          displays properly-calculated values in the
          <code class="literal">Avg_row_length</code> and
          <code class="literal">Data_length</code> columns. (Note that
          <code class="literal">BLOB</code> columns are not yet taken into
          account.) In addition, the number of replicas is now shown in
          the <code class="literal">Comment</code> column (as
          <code class="literal">number_of_replicas</code>).
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          If a <code class="literal">MyISAM</code> table on Windows had
          <code class="literal">INDEX DIRECTORY</code> or <code class="literal">DATA
          DIRECTORY</code> table options,
          <span><strong class="command">mysqldump</strong></span> dumped the directory pathnames
          with single-backslash pathname separators. This would cause
          syntax errors when importing the dump file.
          <span><strong class="command">mysqldump</strong></span> now changes
          ‘<code class="literal">\</code>’ to
          ‘<code class="literal">/</code>’ in the pathnames on
          Windows. (<a href="http://bugs.mysql.com/6660" target="_top">Bug #6660</a>)
        </p></li><li><p>
          <code class="literal">mysql_fix_privilege_tables</code> now fixes that
          the <code class="literal">mysql</code> privilege tables can be used in
          MySQL 4.1. This allows one to easily downgrade to 4.1 or run
          MySQL 5.0 and 4.1 with the same privilege files for testing
          purposes.
        </p></li><li><p>
          Fixed bug creating user with GRANT fails with password but
          works without, (<a href="http://bugs.mysql.com/7905" target="_top">Bug #7905</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> misinterpreted
          ‘<code class="literal">_</code>’ and
          ‘<code class="literal">%</code>’ characters in the names of
          tables to be dumped as wildcard characters. (<a href="http://bugs.mysql.com/9123" target="_top">Bug #9123</a>)
        </p></li><li><p>
          The definition of the enumeration-valued
          <code class="literal">sql_mode</code> column of the
          <code class="literal">mysql.proc</code> table was missing some of the
          current allowable SQL modes, so stored routines would not
          necessarily execute with the SQL mode in effect at the time of
          routine definition. (<a href="http://bugs.mysql.com/8902" target="_top">Bug #8902</a>)
        </p></li><li><p>
          <code class="literal">REPAIR TABLE</code> did not invalidate query
          results in the query cache that were generated from the table.
          (<a href="http://bugs.mysql.com/8480" target="_top">Bug #8480</a>)
        </p></li><li><p>
          In strict or traditional SQL mode, too-long string values
          assigned to string columns (<code class="literal">CHAR</code>,
          <code class="literal">VARCHAR</code>, <code class="literal">BINARY</code>,
          <code class="literal">VARBINARY</code>, <code class="literal">TEXT</code>, or
          <code class="literal">BLOB</code>) were correctly truncated, but the
          server returned an SQLSTATE value of <code class="literal">01000</code>
          (should be <code class="literal">22001</code>). (<a href="http://bugs.mysql.com/6999" target="_top">Bug #6999</a>, <a href="http://bugs.mysql.com/9029" target="_top">Bug #9029</a>)
        </p></li><li><p>
          Stored functions that used cursors could return incorrect
          results. (<a href="http://bugs.mysql.com/8386" target="_top">Bug #8386</a>)
        </p></li><li><p>
          <code class="literal">AES_DECRYPT(<em class="replaceable"><code>col_name</code></em>,<em class="replaceable"><code>key</code></em>)</code>
          could fail to return <code class="literal">NULL</code> for invalid
          values in <em class="replaceable"><code>col_name</code></em>, if
          <em class="replaceable"><code>col_name</code></em> was declared as
          <code class="literal">NOT NULL</code>. (<a href="http://bugs.mysql.com/8669" target="_top">Bug #8669</a>)
        </p></li><li><p>
          Ordering by unsigned expression (more complex than a column
          reference) was treating the value as signed, producing
          incorrectly sorted results. (<a href="http://bugs.mysql.com/7425" target="_top">Bug #7425</a>)
        </p></li><li><p>
          <code class="literal">HAVING</code> was treating unsigned columns as
          signed. (<a href="http://bugs.mysql.com/7425" target="_top">Bug #7425</a>)
        </p></li><li><p>
          Fixed a problem with boolean full-text searches on
          <code class="literal">utf8</code> columns where a double quote in the
          search string caused a server crash. (<a href="http://bugs.mysql.com/8351" target="_top">Bug #8351</a>)
        </p></li><li><p>
          For a query with both <code class="literal">GROUP BY</code> and
          <code class="literal">COUNT(DISTINCT)</code> clauses and a
          <code class="literal">FROM</code> clause with a subquery,
          <code class="literal">NULL</code> was returned for any
          <code class="literal">VARCHAR</code> column selected by the subquery.
          (<a href="http://bugs.mysql.com/8218" target="_top">Bug #8218</a>)
        </p></li><li><p>
          Fixed a bug in <code class="literal">TRUNCATE</code>, which did not work
          within stored procedures. A workaround has been made so that
          within stored procedures, <code class="literal">TRUNCATE</code> is
          executed like <code class="literal">DELETE</code>. This was necessary
          because <code class="literal">TRUNCATE</code> is implicitly locking
          tables. (<a href="http://bugs.mysql.com/8850" target="_top">Bug #8850</a>)
        </p></li><li><p>
          Fixed an optimizer bug that caused incorrectly ordered result
          from a query that used a <code class="literal">FULLTEXT</code> index to
          retrieve rows and there was another index that was usable for
          <code class="literal">ORDER BY</code>. For such a query,
          <code class="literal">EXPLAIN</code> showed <code class="literal">fulltext</code>
          join type, but regular (not <code class="literal">FULLTEXT</code>) index
          in the <code class="literal">Key</code> column. (<a href="http://bugs.mysql.com/6635" target="_top">Bug #6635</a>)
        </p></li><li><p>
          If <code class="literal">SELECT DISTINCT</code> named an index column
          multiple times in the select list, the server tried to access
          different key fields for each instance of the column, which
          could result in a crash. (<a href="http://bugs.mysql.com/8532" target="_top">Bug #8532</a>)
        </p></li><li><p>
          For a stored function that refers to a given table, invoking
          the function while selecting from the same table resulted in a
          server crash. (<a href="http://bugs.mysql.com/8405" target="_top">Bug #8405</a>)
        </p></li><li><p>
          Comparison of a <code class="literal">DECIMAL</code> column containing
          <code class="literal">NULL</code> to a subquery that produced
          <code class="literal">DECIMAL</code> values resulted in a server crash.
          (<a href="http://bugs.mysql.com/8397" target="_top">Bug #8397</a>)
        </p></li><li><p>
          The <code class="option">--set-character-set</code> option for
          <span><strong class="command">myisamchk</strong></span> was changed to
          <code class="option">--set-collation</code>. The value needed for
          specifying how to sort indexes is a collation name, not a
          character set name. (<a href="http://bugs.mysql.com/8349" target="_top">Bug #8349</a>)
        </p></li><li><p>
          Hostname matching didn't work if a netmask was specified for
          table-specific privileges. (<a href="http://bugs.mysql.com/3309" target="_top">Bug #3309</a>)
        </p></li><li><p>
          Corruption of <code class="literal">MyISAM</code> table indexes could
          occur with <code class="literal">TRUNCATE TABLE</code> if the table had
          already been opened. For example, this was possible if the
          table had been opened implicitly by selecting from a
          <code class="literal">MERGE</code> table that mapped to the
          <code class="literal">MyISAM</code> table. The server now issues an
          error message for <code class="literal">TRUNCATE TABLE</code> under
          these conditions. (<a href="http://bugs.mysql.com/8306" target="_top">Bug #8306</a>)
        </p></li><li><p>
          Setting the connection collation to a value different from the
          server collation followed by a <code class="literal">CREATE TABLE</code>
          statement that included a quoted default value resulted in a
          server crash. (<a href="http://bugs.mysql.com/8235" target="_top">Bug #8235</a>)
        </p></li><li><p>
          Fixed handling of table-name matching in
          <span><strong class="command">mysqlhotcopy</strong></span> to accommodate
          <code class="literal">DBD::mysql</code> 2.9003 and up (which implement
          identifier quoting). (<a href="http://bugs.mysql.com/8136" target="_top">Bug #8136</a>)
        </p></li><li><p>
          Selecting from a view defined as a join caused a server crash
          if the query cache was enabled. (<a href="http://bugs.mysql.com/8054" target="_top">Bug #8054</a>)
        </p></li><li><p>
          Results in the query cache generated from a view were not
          properly invalidated after <code class="literal">ALTER VIEW</code> or
          <code class="literal">DROP VIEW</code> on that view. (<a href="http://bugs.mysql.com/8050" target="_top">Bug #8050</a>)
        </p></li><li><p>
          <code class="literal">FOUND_ROWS()</code> returned an incorrect value
          after a <code class="literal">SELECT SQL_CALC_FOUND_ROWS DISTINCT</code>
          statement that selected constants and included <code class="literal">GROUP
          BY</code> and <code class="literal">LIMIT</code> clauses. (<a href="http://bugs.mysql.com/7945" target="_top">Bug #7945</a>)
        </p></li><li><p>
          Selecting from an <code class="literal">INFORMATION_SCHEMA</code> table
          combined with a subselect on an
          <code class="literal">INFORMATION_SCHEMA</code> table caused an error
          with the message <code class="literal">Table
          <em class="replaceable"><code>tbl_name</code></em> is corrupted</code>.
          (<a href="http://bugs.mysql.com/8164" target="_top">Bug #8164</a>)
        </p></li><li><p>
          Fixed a problem with equality propagation optimization for
          prepared statements and stored procedures that caused a server
          crash upon re-execution of the prepared statement or stored
          procedure. (<a href="http://bugs.mysql.com/8115" target="_top">Bug #8115</a>, <a href="http://bugs.mysql.com/8849" target="_top">Bug #8849</a>)
        </p></li><li><p>
          <code class="literal">LEFT OUTER JOIN</code> between an empty base table
          and a view on an empty base table caused a server crash. (<a href="http://bugs.mysql.com/7433" target="_top">Bug
          #7433</a>)
        </p></li><li><p>
          Use of <code class="literal">GROUP_CONCAT()</code> in the select list
          when selecting from a view caused a server crash. (<a href="http://bugs.mysql.com/7116" target="_top">Bug #7116</a>)
        </p></li><li><p>
          Use of a view in a correlated subquery that contains
          <code class="literal">HAVING</code> but no <code class="literal">GROUP BY</code>
          caused a server crash. (<a href="http://bugs.mysql.com/6894" target="_top">Bug #6894</a>)
        </p></li><li><p>
          Handling by <code class="literal">mysql_list_fields()</code> of
          references to stored functions within views was incorrect and
          could result in a server crash. (<a href="http://bugs.mysql.com/6814" target="_top">Bug #6814</a>)
        </p></li><li><p>
          <span><strong class="command">mysqldump</strong></span> now avoids writing <code class="literal">SET
          NAMES</code> to the dump output if the server is older than
          version 4.1 and would not understand that statement. (<a href="http://bugs.mysql.com/7997" target="_top">Bug
          #7997</a>)
        </p></li><li><p>
          Fixed problems when selecting from a view that had an
          <code class="literal">EXISTS</code> or <code class="literal">NOT EXISTS</code>
          subquery. Selecting columns by name caused a server crash.
          With <code class="literal">SELECT *</code>, a crash did not occur, but
          columns in outer query were not resolved properly. (<a href="http://bugs.mysql.com/6394" target="_top">Bug #6394</a>)
        </p></li><li><p>
          DDL statements for views were not being written to the binary
          log (and thus not subject to replication). (<a href="http://bugs.mysql.com/4838" target="_top">Bug #4838</a>)
        </p></li><li><p>
          The <code class="literal">CHAR()</code> function was not ignoring
          <code class="literal">NULL</code> arguments, contrary to the
          documentation. (<a href="http://bugs.mysql.com/6317" target="_top">Bug #6317</a>)
        </p></li><li><p>
          Creating a table using a name containing a character that is
          illegal in <code class="literal">character_set_client</code> resulted in
          the character being stripped from the name and no error. The
          character now is considered an error. (<a href="http://bugs.mysql.com/8041" target="_top">Bug #8041</a>)
        </p></li><li><p>
          Fixed a problem with the Cyrillic letters I and SHORT I being
          treated the same by the <code class="literal">utf8_general_ci</code>
          collation. (<a href="http://bugs.mysql.com/8385" target="_top">Bug #8385</a>)
        </p></li><li><p>
          Some <code class="literal">INFORMATION_SCHEMA</code> columns that
          contained catalog identifiers were of type
          <code class="literal">LONGTEXT</code>. These were changed to
          <code class="literal">VARCHAR(<em class="replaceable"><code>N</code></em></code>, where
          <em class="replaceable"><code>N</code></em> is the appropriate maximum
          identifier length. (<a href="http://bugs.mysql.com/7215" target="_top">Bug #7215</a>)
        </p></li><li><p>
          Some <code class="literal">INFORMATION_SCHEMA</code> columns that
          contained timestamp values were of type
          <code class="literal">VARBINARY</code>. These were changed to
          <code class="literal">TIMESTAMP</code>. (<a href="http://bugs.mysql.com/7217" target="_top">Bug #7217</a>)
        </p></li><li><p>
          An expression that tested a case-insensitive character column
          against string constants that differed in lettercase could
          fail because the constants were treated as having a binary
          collation. (For example, <code class="literal">WHERE city='London' AND
          city='london'</code> could fail.) (<a href="http://bugs.mysql.com/7098" target="_top">Bug #7098</a>, <a href="http://bugs.mysql.com/8690" target="_top">Bug #8690</a>)
        </p></li><li><p>
          The output of the <code class="literal">STATUS</code>
          (<code class="literal">\s</code>) command in <span><strong class="command">mysql</strong></span>
          had the values for the server and client character sets
          reversed. (<a href="http://bugs.mysql.com/7571" target="_top">Bug #7571</a>)
        </p></li><li><p>
          If the slave was running with
          <code class="option">--replicate-*-table</code> options which excluded
          one temporary table and included another, and the two tables
          were used in a single <code class="literal">DROP TEMPORARY TABLE IF
          EXISTS</code> statement, as the ones the master
          automatically writes to its binary log upon client's
          disconnection when client has not explicitly dropped these,
          the slave could forget to delete the included replicated
          temporary table. Only the slave needs to be upgraded. (<a href="http://bugs.mysql.com/8055" target="_top">Bug
          #8055</a>)
        </p></li><li><p>
          When setting integer system variables to a negative value with
          <code class="literal">SET VARIABLES</code>, the value was treated as a
          positive value modulo 2<sup>32</sup>. (<a href="http://bugs.mysql.com/6958" target="_top">Bug
          #6958</a>)
        </p></li><li><p>
          Corrected a problem with references to <code class="literal">DUAL</code>
          where statements such as <code class="literal">SELECT 1 AS a FROM
          DUAL</code> would succeed but statements such as
          <code class="literal">SELECT 1 AS a FROM DUAL LIMIT 1</code> would fail.
          (<a href="http://bugs.mysql.com/8023" target="_top">Bug #8023</a>)
        </p></li><li><p>
          Fixed a server crash caused by <code class="literal">DELETE FROM
          <em class="replaceable"><code>tbl_name</code></em> ... WHERE ... ORDER BY
          <em class="replaceable"><code>tbl_name</code></em>.<em class="replaceable"><code>col_name</code></em></code>
          when the <code class="literal">ORDER BY</code> column was qualified with
          the table name. (<a href="http://bugs.mysql.com/8392" target="_top">Bug #8392</a>)
        </p></li><li><p>
          Fixed a bug in <code class="literal">MATCH ... AGAINST</code> in natural
          language mode that could cause a server crash if the
          <code class="literal">FULLTEXT</code> index was not used in a join
          (<code class="literal">EXPLAIN</code> did not show
          <code class="literal">fulltext</code> join mode) and the search query
          matched no rows in the table (<a href="http://bugs.mysql.com/8522" target="_top">Bug #8522</a>).
        </p></li><li><p>
          <code class="literal">InnoDB</code>: Honor the <code class="option">--tmpdir</code>
          startup option when creating temporary files. Previously,
          <code class="literal">InnoDB</code> temporary files were always created
          in the temporary directory of the operating system. On
          Netware, <code class="literal">InnoDB</code> will continue to ignore
          <code class="option">--tmpdir</code>. (<a href="http://bugs.mysql.com/5822" target="_top">Bug #5822</a>)
        </p></li><li><p>
          Platform and architecture information in version information
          produced for <code class="option">--version</code> option on Windows was
          always <code class="literal">Win95/Win98 (i32)</code>. More accurately
          determine platform as <code class="literal">Win32</code> or
          <code class="literal">Win64</code> for 32-bit or 64-bit Windows, and
          architecture as <code class="literal">ia32</code> for x86,
          <code class="literal">ia64</code> for Itanium, and
          <code class="literal">axp</code> for Alpha. (<a href="http://bugs.mysql.com/4445" target="_top">Bug #4445</a>)
        </p></li><li><p>
          If multiple semicolon-separated statements were received in a
          single packet, they were written to the binary log as a single
          event rather than as separate per-statement events. For a
          server serving as a replication master, this caused
          replication to fail when the event was sent to slave servers.
          (<a href="http://bugs.mysql.com/8436" target="_top">Bug #8436</a>)
        </p></li><li><p>
          Fixed <code class="literal">LOAD INDEX</code> statement to actually load
          index in memory. (<a href="http://bugs.mysql.com/8452" target="_top">Bug #8452</a>)
        </p></li><li><p>
          Fixed a failure of multiple-table updates to replicate
          properly on slave servers when
          <code class="option">--replicate-*-table</code> options had been
          specified. (<a href="http://bugs.mysql.com/7011" target="_top">Bug #7011</a>)
        </p></li><li><p>
          Fixed failure of <code class="literal">CREATE TABLE ... LIKE</code>
          Windows when the source or destination table was located in a
          symlinked database directory. (<a href="http://bugs.mysql.com/6607" target="_top">Bug #6607</a>)
        </p></li><li><p>
          With <code class="literal">lower_case_table_names</code> set to 1,
          <span><strong class="command">mysqldump</strong></span> on Windows could write the same
          table name in different lettercase for different SQL
          statements. Fixed so that consistent lettercase is used. (<a href="http://bugs.mysql.com/5185" target="_top">Bug
          #5185</a>)
        </p></li><li><p>
          <span><strong class="command">mysqld_safe</strong></span> now understands the
          <code class="option">--help</code> option. Previously, it ignored the
          option and attempted to start the server anyway. (<a href="http://bugs.mysql.com/7931" target="_top">Bug #7931</a>)
        </p></li><li><p>
          Fixed problem in <code class="literal">NO_BACKSLASH_ESCAPES</code> SQL
          mode for strings that contained both the string quoting
          character and backslash. (<a href="http://bugs.mysql.com/6368" target="_top">Bug #6368</a>)
        </p></li><li><p>
          Fixed some portability issues with overflow in floating point
          values.
        </p></li><li><p>
          Prepared statements now gives warnings on prepare.
        </p></li><li><p>
          Fixed bug in prepared statements with
          <code class="literal">SUM(DISTINCT...)</code>.
        </p></li><li><p>
          Fixed bug in prepared statements with <code class="literal">OUTER
          JOIN</code>.
        </p></li><li><p>
          Fixed a bug in <code class="literal">CONV()</code> function returning
          unsigned <code class="literal">BIGINT</code> number (third argument is
          positive, and return value does not fit in 32 bits). (<a href="http://bugs.mysql.com/7751" target="_top">Bug
          #7751</a>)
        </p></li><li><p>
          Fixed a failure of the <code class="literal">IN()</code> operator to
          return correct result if all values in the list were constants
          and some of them were using substring functions, for example,
          <code class="literal">LEFT()</code>, <code class="literal">RIGHT()</code>, or
          <code class="literal">MID()</code>. (<a href="http://bugs.mysql.com/7716" target="_top">Bug #7716</a>)
        </p></li><li><p>
          Fixed a crash in <code class="literal">CONVERT_TZ()</code> function when
          its second or third argument was from a
          <code class="literal">const</code> table (see
          <a href="optimization.html#explain" title="7.2.1. EXPLAIN Syntax (Get Information About a SELECT)">Section 7.2.1, “<code class="literal">EXPLAIN</code> Syntax (Get Information About a <code class="literal">SELECT</code>)”</a>). (<a href="http://bugs.mysql.com/7705" target="_top">Bug #7705</a>)
        </p></li><li><p>
          Fixed a problem with calculation of number of columns in row
          comparison against subquery. (<a href="http://bugs.mysql.com/8020" target="_top">Bug #8020</a>)
        </p></li><li><p>
          Fixed erroneous output resulting from <code class="literal">SELECT
          DISTINCT</code> combined with a subquery and <code class="literal">GROUP
          BY</code>. (<a href="http://bugs.mysql.com/7946" target="_top">Bug #7946</a>)
        </p></li><li><p>
          Fixed server crash in comparing a nested row expression (for
          example <code class="literal">row(1,(2,3))</code>) with a subquery. (<a href="http://bugs.mysql.com/8022" target="_top">Bug
          #8022</a>)
        </p></li><li><p>
          Fixed server crash resulting from certain correlated
          subqueries with forward references (references to an alias
          defined later in the outer query). (<a href="http://bugs.mysql.com/8025" target="_top">Bug #8025</a>)
        </p></li><li><p>
          Fixed server crash resulting from re-execution of prepared
          statements containing subqueries. (<a href="http://bugs.mysql.com/8125" target="_top">Bug #8125</a>)
        </p></li><li><p>
          Fixed a bug where <code class="literal">ALTER TABLE</code> improperly
          would accept an index on a <code class="literal">TIMESTAMP</code> column
          that <code class="literal">CREATE TABLE</code> would reject. (<a href="http://bugs.mysql.com/7884" target="_top">Bug #7884</a>)
        </p></li><li><p>
          <code class="literal">SHOW CREATE TABLE</code> now reports
          <code class="literal">ENGINE=MEMORY</code> rather than
          <code class="literal">ENGINE=HEAP</code> for a <code class="literal">MEMORY</code>
          table (unless the <code class="literal">MYSQL323</code> SQL mode is
          enabled). (<a href="http://bugs.mysql.com/6659" target="_top">Bug #6659</a>)
        </p></li><li><p>
          Fixed a bug where the use of <code class="literal">GROUP_CONCAT()</code>
          with <code class="literal">HAVING</code> caused a server crash. (<a href="http://bugs.mysql.com/7769" target="_top">Bug
          #7769</a>)
        </p></li><li><p>
          Fixed a bug where comparing the result of a subquery to a
          non-existent column caused a server crash on Windows. (<a href="http://bugs.mysql.com/7885" target="_top">Bug
          #7885</a>)
        </p></li><li><p>
          Fixed a bug in a combination of <code class="literal">-not</code> and
          <code class="literal">trunc*</code> operators of full-text search. Using
          more than one truncated negative search term, was causing
          empty result set.
        </p></li><li><p>
          InnoDB: Corrected the handling of trailing spaces in the
          <code class="literal">ucs2</code> character set. (<a href="http://bugs.mysql.com/7350" target="_top">Bug #7350</a>, <a href="http://bugs.mysql.com/8771" target="_top">Bug #8771</a>)
        </p></li><li><p>
          InnoDB: Use native <code class="literal">tmpfile()</code> function on
          Netware. All InnoDB temporary files are created under
          <code class="literal">sys:\tmp</code>. Previously, InnoDB temporary
          files were never deleted on Netware.
        </p></li><li><p>
          Fixed a bug in <code class="literal">max_heap_table_size</code>
          handling, that resulted in <code class="literal">Table is full</code>
          error when the table was still smaller than the limit. (<a href="http://bugs.mysql.com/7791" target="_top">Bug
          #7791</a>).
        </p></li><li><p>
          Fixed a symlink vulnerability in the
          <span><strong class="command">mysqlaccess</strong></span> script. Reported by Javier
          Fernandez-Sanguino Pena and
          <a href="http://www.debian.org/security/audit" target="_top">Debian
          Security Audit Team</a>.
          (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0004" target="_top">CAN-2005-0004</a>)
        </p></li><li><p>
          Fixed a bug that caused server crash if some error occured
          during filling of temporary table created for derived table or
          view handling. (<a href="http://bugs.mysql.com/7413" target="_top">Bug #7413</a>)
        </p></li><li><p>
          Fixed a bug which caused server crash if query containing
          <code class="literal">CONVERT_TZ()</code> function with constant
          arguments was prepared. (<a href="http://bugs.mysql.com/6849" target="_top">Bug #6849</a>)
        </p></li><li><p>
          Prevent adding <code class="literal">CREATE TABLE .. SELECT</code> query
          to the binary log when the insertion of new records partially
          failed. (<a href="http://bugs.mysql.com/6682" target="_top">Bug #6682</a>)
        </p></li><li><p>
          Fixed a bug which caused a crash when only the slave I/O
          thread was stopped and started. (<a href="http://bugs.mysql.com/6148" target="_top">Bug #6148</a>)
        </p></li><li><p>
          Giving <span><strong class="command">mysqld</strong></span> a <code class="literal">SIGHUP</code>
          caused it to crash.
        </p></li><li><p>
          Changed semantics of <code class="literal">CREATE/ALTER/DROP
          DATABASE</code> statements so that replication of
          <code class="literal">CREATE DATABASE</code> is possible when using
          <code class="option">--binlog-do-db</code> and
          <code class="option">--binlog-ignore-db</code>. (<a href="http://bugs.mysql.com/6391" target="_top">Bug #6391</a>)
        </p></li><li><p>
          A sequence of <code class="literal">BEGIN</code> (or <code class="literal">SET
          AUTOCOMMIT=0</code>), <code class="literal">FLUSH TABLES WITH READ
          LOCK</code>, transactional update,
          <code class="literal">COMMIT</code>, <code class="literal">FLUSH TABLES WITH READ
          LOCK</code> could hang the connection forever and possibly
          the MySQL server itself. This happened for example when
          running the <code class="literal">innobackup</code> script several
          times. (<a href="http://bugs.mysql.com/6732" target="_top">Bug #6732</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlbinlog</strong></span> did not print <code class="literal">SET
          PSEUDO_THREAD_ID</code> statements in front of
          <code class="literal">LOAD DATA INFILE</code> statements inserting into
          temporary tables, thus causing potential problems when rolling
          forward these statements after restoring a backup. (<a href="http://bugs.mysql.com/6671" target="_top">Bug #6671</a>)
        </p></li><li><p>
          InnoDB: Fixed a bug no error message for ALTER with InnoDB and
          AUTO_INCREMENT (<a href="http://bugs.mysql.com/7061" target="_top">Bug #7061</a>). <code class="literal">InnoDB</code> now
          supports <code class="literal">ALTER TABLE...AUTO_INCREMENT = x</code>
          query to set auto increment value for a table.
        </p></li><li><p>
          Made the MySQL server accept executing <code class="literal">SHOW CREATE
          DATABASE</code> even if the connection has an open
          transaction or locked tables; refusing it made
          <span><strong class="command">mysqldump --single-transaction</strong></span> sometimes
          fail to print a complete <code class="literal">CREATE DATABASE</code>
          statement for some dumped databases. (<a href="http://bugs.mysql.com/7358" target="_top">Bug #7358</a>)
        </p></li><li><p>
          Fixed that, when encountering a “<span class="quote">disk full</span>” or
          “<span class="quote">quota exceeded</span>” write error,
          <code class="literal">MyISAM</code> sometimes didn't sleep and retry the
          write, thus resulting in a corrupted table. (<a href="http://bugs.mysql.com/7714" target="_top">Bug #7714</a>)
        </p></li><li><p>
          Fixed that <code class="option">--expire-log-days</code> was not honored
          if using only transactions. (<a href="http://bugs.mysql.com/7236" target="_top">Bug #7236</a>)
        </p></li><li><p>
          Fixed that a slave could crash after replicating many
          <code class="literal">ANALYZE TABLE</code>, <code class="literal">OPTIMIZE
          TABLE</code>, or <code class="literal">REPAIR TABLE</code> statements
          from the master. (<a href="http://bugs.mysql.com/6461" target="_top">Bug #6461</a>, <a href="http://bugs.mysql.com/7658" target="_top">Bug #7658</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlbinlog</strong></span> forgot to add backquotes around
          the collation of user variables (causing later parsing
          problems as <code class="literal">BINARY</code> is a reserved word).
          (<a href="http://bugs.mysql.com/7793" target="_top">Bug #7793</a>)
        </p></li><li><p>
          Ensured that <span><strong class="command">mysqldump --single-transaction</strong></span>
          sets its transaction isolation level to <code class="literal">REPEATABLE
          READ</code> before proceeding (otherwise if the MySQL
          server was configured to run with a default isolation level
          lower than <code class="literal">REPEATABLE READ</code> it could give an
          inconsistent dump). (<a href="http://bugs.mysql.com/7850" target="_top">Bug #7850</a>)
        </p></li><li><p>
          Fixed that when using the <code class="literal">RPAD()</code> function
          (or any function adding spaces to the right) in a query that
          had to be resolved by using a temporary table, all resulting
          strings had rightmost spaces removed (i.e.
          <code class="literal">RPAD()</code> did not work) (<a href="http://bugs.mysql.com/4048" target="_top">Bug #4048</a>)
        </p></li><li><p>
          Fixed that a 5.0.3 slave can connect to a master &lt; 3.23.50
          without hanging (the reason for the hang is a bug in these
          quite old masters -- <code class="literal">SELECT @@unknown_var</code>
          hangs them -- which was fixed in MySQL 3.23.50). (<a href="http://bugs.mysql.com/7965" target="_top">Bug #7965</a>)
        </p></li><li><p>
          InnoDB: Fixed a deadlock without any locking, simple select
          and update (<a href="http://bugs.mysql.com/7975" target="_top">Bug #7975</a>). <code class="literal">InnoDB</code> now takes an
          exclusive lock when <code class="literal">INSERT ON DUPLICATE KEY
          UPDATE</code> is checking duplicate keys.
        </p></li><li><p>
          Fixed a bug where MySQL was allowing concurrent updates
          (inserts, deletes) to a table if binary logging is enabled.
          Changed to ensure that all updates are executed in a
          serialized fashion, because they are executed serialized when
          binlog is replayed. (<a href="http://bugs.mysql.com/7879" target="_top">Bug #7879</a>)
        </p></li><li><p>
          Fixed a rare race condition which could lead to <code class="literal">FLUSH
          TABLES WITH READ LOCK</code> hanging. (<a href="http://bugs.mysql.com/8682" target="_top">Bug #8682</a>)
        </p></li><li><p>
          Fixed a bug in replication that caused the master to stamp
          generated statements (such as <code class="literal">SET</code> commands)
          with an <code class="literal">error_code</code> intended only for
          another statement. This could happen, for example, when a
          statements generates a duplicate key error on the master but
          must be replicated. (<a href="http://bugs.mysql.com/8412" target="_top">Bug #8412</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-2"></a>D.1.15. Changes in release 5.0.2 (01 Dec 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Warning: Incompatible change!</strong></span>
          The precedence of <code class="literal">NOT</code> operator has changed
          so that expressions such as <code class="literal">NOT a BETWEEN b AND
          c</code> are parsed correctly as <code class="literal">NOT (a BETWEEN b
          AND c)</code> rather than as <code class="literal">(NOT a) BETWEEN b AND
          c</code>. The pre-5.0 higher-precedence behavior can be
          obtained by enabling the new
          <code class="literal">HIGH_NOT_PRECEDENCE</code> SQL mode.
        </p></li><li><p>
          <code class="literal">SHOW STATUS</code> now shows the thread specific
          status variables and <code class="literal">SHOW GLOBAL STATUS</code>
          shows the status variables for the whole server.
        </p></li><li><p>
          Added support for the <code class="literal">INFORMATION_SCHEMA</code>
          “<span class="quote">information database</span>” that provides database
          metadata. See <a href="information-schema.html" title="Chapter 20. The INFORMATION_SCHEMA Information Database">Chapter 20, <i>The <code class="literal">INFORMATION_SCHEMA</code> Information Database</i></a>.
        </p></li><li><p>
          A <code class="literal">HAVING</code> clause in a
          <code class="literal">SELECT</code> statement now can refer to columns
          in the <code class="literal">GROUP BY</code> clause, as required by
          standard SQL.
        </p></li><li><p>
          Added the <code class="literal">CREATE USER</code> and <code class="literal">RENAME
          USER</code> statements.
        </p></li><li><p>
          Modify <code class="literal">DROP USER</code> so that it drops the
          account, including all its privileges. Formerly, it removed
          the account record only for an account that had had all
          privileges revoked.
        </p></li><li><p>
          Added <code class="literal">IS [NOT]
          <em class="replaceable"><code>boolean_value</code></em></code> syntax,
          where <em class="replaceable"><code>boolean_value</code></em> is
          <code class="literal">TRUE</code>, <code class="literal">FALSE</code>, or
          <code class="literal">UNKNOWN</code>.
        </p></li><li><p>
          Added several <code class="literal">InnoDB</code> status variables. See
          <a href="database-administration.html#server-status-variables" title="5.3.4. Server Status Variables">Section 5.3.4, “Server Status Variables”</a>.
        </p></li><li><p>
          Implemented the <code class="literal">WITH CHECK OPTION</code> clause
          for <code class="literal">CREATE VIEW</code>.
        </p></li><li><p>
          <code class="literal">CHECK TABLE</code> now works for views.
        </p></li><li><p>
          The <code class="literal">SCHEMA</code> and <code class="literal">SCHEMAS</code>
          keywords are now accepted as synonyms for
          <code class="literal">DATABASE</code> and <code class="literal">DATABASES</code>.
        </p></li><li><p>
          Added initial support for rudimentary triggers (the
          <code class="literal">CREATE TRIGGER</code> and <code class="literal">DROP
          TRIGGER</code> statements).
        </p></li><li><p>
          Added basic support for read-only server side cursors.
        </p></li><li><p>
          <span><strong class="command">mysqldump --single-transaction
          --master-data</strong></span> is now able to take an online
          (non-blocking) dump of InnoDB and report the corresponding
          binary log coordinates, which makes a backup suitable for
          point-in-time recovery, roll-forward or replication slave
          creation. See <a href="client-side-scripts.html#mysqldump" title="8.8. mysqldump — A Database Backup Program">Section 8.8, “mysqldump — A Database Backup Program”</a>.
        </p></li><li><p>
          Added <code class="option">--start-datetime</code>,
          <code class="option">--stop-datetime</code>,
          <code class="option">--start-position</code>,
          <code class="option">--stop-position</code> options to
          <span><strong class="command">mysqlbinlog</strong></span> (makes point-in-time recovery
          easier).
        </p></li><li><p>
          Made the MySQL server not react to signals
          <code class="literal">SIGHUP</code> and <code class="literal">SIGQUIT</code> on
          Mac OS X 10.3. This is needed because under this OS, the MySQL
          server receives lots of these signals (reported as <a href="http://bugs.mysql.com/2030" target="_top">Bug #2030</a>).
        </p></li><li><p>
          New <code class="option">--auto-increment-increment</code> and
          <code class="option">--auto-increment-offset</code> startup options.
          These allow you to set up a server to generate auto-increment
          values that don't conflict with another server.
        </p></li><li><p>
          MySQL now by default checks dates and in strict mode allows
          only fully correct dates. If you want MySQL to behave as
          before, you should enable the new
          <code class="literal">ALLOW_INVALID_DATES</code> SQL mode.
        </p></li><li><p>
          Added <code class="literal">STRICT_TRANS_TABLES</code>,
          <code class="literal">STRICT_ALL_TABLES</code>,
          <code class="literal">NO_ZERO_IN_DATE</code>,
          <code class="literal">NO_ZERO_DATE</code>,
          <code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code>, and
          <code class="literal">TRADITIONAL</code> SQL modes. The
          <code class="literal">TRADITIONAL</code> mode is shorthand for all the
          preceding modes. When using mode
          <code class="literal">TRADITIONAL</code>, MySQL generates an error if
          you try to insert a wrong value in a column. It does not
          adjust the value to the closest possible legal value.
        </p></li><li><p>
          MySQL now remembers which columns were declared to have
          default values. In
          <code class="literal">STRICT_TRANS_TABLES</code>/<code class="literal">STRICT_ALL_TABLES</code>
          mode, you now get an error if you do an
          <code class="literal">INSERT</code> without specifying all columns that
          don't have a default value. A side effect of this is that when
          you do <code class="literal">SHOW CREATE</code> for a new table, you no
          longer see a <code class="literal">DEFAULT</code> value for a column for
          which you didn't specify a default value.
        </p></li><li><p>
          The compilation flag
          <code class="literal">DONT_USE_DEFAULT_FIELDS</code> was removed because
          you can get the same behavior by setting the
          <code class="literal">sql_mode</code> system variable to
          <code class="literal">STRICT_TRANS_TABLES</code>.
        </p></li><li><p>
          Added <code class="literal">NO_AUTO_CREATE_USER</code> SQL mode to
          prevent <code class="literal">GRANT</code> from automatically creating
          new users if it would otherwise do so, unless a password also
          is specified.
        </p></li><li><p>
          We now detect too-large floating point numbers during
          statement parsing and generate an error messages for them.
        </p></li><li><p>
          Renamed the <code class="literal">sql_updatable_view_key</code> system
          variable to <code class="literal">updatable_views_with_limit</code>.
          This variable now can have only two values:
        </p><div class="itemizedlist"><ul type="circle"><li><p>
              <code class="literal">1</code> or <code class="literal">YES</code>: Don't
              issue an error message (warning only) if a VIEW without
              presence of a key in the underlying table is used in
              queries with a <code class="literal">LIMIT</code> clause for
              updating. (This is the default value.)
            </p></li><li><p>
              <code class="literal">0</code> or <code class="literal">NO</code>: Prohibit
              update of a VIEW, which does not contain a key in the
              underlying table and the query uses a
              <code class="literal">LIMIT</code> clause (usually get from GUI
              tools).
            </p></li></ul></div></li><li><p>
          Reverted output format of <code class="literal">SHOW TABLES</code> to
          old pre-5.0.1 format that did not include a table type column.
          To get the additional column that lists the table type, use
          <code class="literal">SHOW FULL TABLES</code> now.
        </p></li><li><p>
          The <span><strong class="command">mysql_fix_privilege_tables</strong></span> script now
          initializes the global <code class="literal">CREATE VIEW</code> and
          <code class="literal">SHOW VIEW</code> privileges in the
          <code class="literal">user</code> table to the value of the
          <code class="literal">CREATE</code> privilege in that table.
        </p></li><li><p>
          If the server finds that the <code class="literal">user</code> table has
          not been upgraded to include the view-related privilege
          columns, it treats each account as having view privileges that
          are the same as its <code class="literal">CREATE</code> privilege.
        </p></li><li><p>
          InnoDB: If you specify the option
          <code class="literal">innodb_locks_unsafe_for_binlog</code> in
          <code class="filename">my.cnf</code>, InnoDB in an
          <code class="literal">UPDATE</code> or a <code class="literal">DELETE</code> only
          locks the rows that it updates or deletes. This greatly
          reduces the probability of deadlocks.
        </p></li><li><p>
          A connection doing a rollback now displays "Rolling back" in
          the <code class="literal">State</code> column of <code class="literal">SHOW
          PROCESSLIST</code>.
        </p></li><li><p>
          <span><strong class="command">mysqlbinlog</strong></span> now prints an informative
          commented line (thread id, timestamp, server id, etc) before
          each <code class="literal">LOAD DATA INFILE</code>, like it does for
          other queries; unless <code class="option">--short-form</code> is used.
        </p></li><li><p>
          Two new server system variables were introduced.
          <code class="literal">auto_increment_increment</code> and
          <code class="literal">auto_increment_offset</code> can be set locally or
          globally, and are intended for use in controlling the behavior
          of <code class="literal">AUTO_INCREMENT</code> columns in
          master-to-master replication. Note that these variables are
          not intended to take the place of sequences. See
          <a href="database-administration.html#server-system-variables" title="5.3.3. Server System Variables">Section 5.3.3, “Server System Variables”</a>.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Fixed that <span><strong class="command">mysqlbinlog
          --read-from-remote-server</strong></span> sometimes couldn't accept
          two binary log files on the command line. (<a href="http://bugs.mysql.com/4507" target="_top">Bug #4507</a>)
        </p></li><li><p>
          Fixed that <span><strong class="command">mysqlbinlog --position
          --read-from-remote-server</strong></span> had incorrect <code class="literal">#
          at</code> lines. (<a href="http://bugs.mysql.com/4506" target="_top">Bug #4506</a>)
        </p></li><li><p>
          Fixed that <code class="literal">CREATE TABLE ... TYPE=HEAP ... AS
          SELECT...</code> caused replication slave to stop. (<a href="http://bugs.mysql.com/4971" target="_top">Bug
          #4971</a>)
        </p></li><li><p>
          Fixed that
          <code class="literal">mysql_options(...,MYSQL_OPT_LOCAL_INFILE,...)</code>
          failed to disable <code class="literal">LOAD DATA LOCAL INFILE</code>.
          (<a href="http://bugs.mysql.com/5038" target="_top">Bug #5038</a>)
        </p></li><li><p>
          Fixed that <code class="literal">disable-local-infile</code> option had
          no effect if client read it from a configuration file using
          <code class="literal">mysql_options(...,MYSQL_READ_DEFAULT,...)</code>.
          (<a href="http://bugs.mysql.com/5073" target="_top">Bug #5073</a>)
        </p></li><li><p>
          Fixed that <code class="literal">SET GLOBAL SYNC_BINLOG</code> did not
          work on some platforms (Mac OS X). (<a href="http://bugs.mysql.com/5064" target="_top">Bug #5064</a>)
        </p></li><li><p>
          Fixed that <span><strong class="command">mysql-test-run</strong></span> failed on the
          <code class="literal">rpl_trunc_binlog</code> test if running test from
          the installed (the target of 'make install') directory. (<a href="http://bugs.mysql.com/5050" target="_top">Bug
          #5050</a>)
        </p></li><li><p>
          Fixed that <span><strong class="command">mysql-test-run</strong></span> failed on the
          <code class="literal">grant_cache</code> test when run as Unix user
          'root'. (<a href="http://bugs.mysql.com/4678" target="_top">Bug #4678</a>)
        </p></li><li><p>
          Fixed an unlikely deadlock which could happen when using
          <code class="literal">KILL</code>. (<a href="http://bugs.mysql.com/4810" target="_top">Bug #4810</a>)
        </p></li><li><p>
          Fixed a crash when one connection got
          <code class="literal">KILL</code>ed while it was doing <code class="literal">START
          SLAVE</code>. (<a href="http://bugs.mysql.com/4827" target="_top">Bug #4827</a>)
        </p></li><li><p>
          Made <code class="literal">FLUSH TABLES WITH READ LOCK</code> block
          <code class="literal">COMMIT</code> if server is running with binary
          logging; this ensures that the binary log position can be
          trusted when doing a full backup of tables and the binary log.
          (<a href="http://bugs.mysql.com/4953" target="_top">Bug #4953</a>)
        </p></li><li><p>
          Fixed that the counter of an <code class="literal">auto_increment</code>
          column was not reset by <code class="literal">TRUNCATE TABLE</code> is
          the table was a temporary one. (<a href="http://bugs.mysql.com/5033" target="_top">Bug #5033</a>)
        </p></li><li><p>
          Fixed slave SQL thread so that the <code class="literal">SET
          COLLATION_SERVER...</code> statements it replicates don't
          advance its position (so that if it gets interrupted before
          the actual update query, it later redoes the
          <code class="literal">SET</code>). (<a href="http://bugs.mysql.com/5705" target="_top">Bug #5705</a>)
        </p></li><li><p>
          Fixed that if the slave SQL thread found a syntax error in a
          query (which should be rare, as the master parsed it
          successfully), it stops. (<a href="http://bugs.mysql.com/5711" target="_top">Bug #5711</a>)
        </p></li><li><p>
          Fixed that if a write to a MyISAM table fails because of a
          full disk or an exceeded disk quota, it prints a message to
          the error log every 10 minutes, and waits until disk becomes
          free. (<a href="http://bugs.mysql.com/3248" target="_top">Bug #3248</a>)
        </p></li><li><p>
          Fixed problem introduced in 4.0.21 where a connection starting
          a transaction, doing updates, then <code class="literal">FLUSH TABLES WITH
          READ LOCK</code>, then <code class="literal">COMMIT</code>, would
          cause replication slaves to stop (complaining about error
          1223). Bug surfaced when using the InnoDB
          <code class="literal">innobackup</code> script. (<a href="http://bugs.mysql.com/5949" target="_top">Bug #5949</a>)
        </p></li><li><p>
          <code class="literal">OPTIMIZE TABLE</code>, <code class="literal">REPAIR
          TABLE</code>, and <code class="literal">ANALYZE TABLE</code> are now
          replicated without any error code in the binary log. (<a href="http://bugs.mysql.com/5551" target="_top">Bug
          #5551</a>)
        </p></li><li><p>
          If a connection had an open transaction but had done no
          updates to transactional tables (for example if had just done
          a <code class="literal">SELECT FOR UPDATE</code> then executed a
          non-transactional update, that update automatically committed
          the transaction (thus releasing InnoDB's row-level locks etc).
          (<a href="http://bugs.mysql.com/5714" target="_top">Bug #5714</a>)
        </p></li><li><p>
          If a connection was interrupted by a network error and did a
          rollback, the network error code got stored into the
          <code class="literal">BEGIN</code> and <code class="literal">ROLLBACK</code>
          binary log events; that caused superfluous slave stops. (<a href="http://bugs.mysql.com/6522" target="_top">Bug
          #6522</a>)
        </p></li><li><p>
          Fixed a bug which prevented <span><strong class="command">mysqlbinlog</strong></span>
          from being able to read from <code class="literal">stdin</code>, for
          example, when piping the output from <span><strong class="command">zcat</strong></span>
          to <span><strong class="command">mysqlbinlog</strong></span>. (<a href="http://bugs.mysql.com/7853" target="_top">Bug #7853</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-1"></a>D.1.16. Changes in release 5.0.1 (27 Jul 2004)</h3></div></div></div><p>
      <span class="bold"><strong>Note</strong></span>: This build passes our test
      suite and fixes a lot of reported bugs found in the previous 5.0.0
      release. However, please be aware that this is not a
      “<span class="quote">standard MySQL build</span>” in the sense that there are
      still some open critical bugs in our bugs database at
      <a href="http://bugs.mysql.com/" target="_top">http://bugs.mysql.com/</a> that affect this release as
      well. We are actively fixing these and will make a new release
      where these are fixed as soon as possible. However, this binary
      should be a good candidate for testing new MySQL 5.0 features for
      future products.
    </p><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Warning: Incompatible change!</strong></span>
          C API change: <code class="literal">mysql_shutdown()</code> now requires
          a second argument. This is a source-level incompatibility that
          affects how you compile client programs; it does not affect
          the ability of compiled clients to communicate with older
          servers. See <a href="apis.html#mysql-shutdown" title="22.2.3.62. mysql_shutdown()">Section 22.2.3.62, “<code class="literal">mysql_shutdown()</code>”</a>.
        </p></li><li><p>
          When installing a MySQL server as a Windows service, the
          installation command can include a
          <code class="option">--local-service</code> option following the service
          name to cause the server to run using the
          <code class="literal">LocalService</code> Windows account that has
          limited privileges. This is in addition to the
          <code class="option">--defaults-file</code> option that also can be given
          following the service name.
        </p></li><li><p>
          Added support for read-only and updatable views based on a
          single table or other updatable views. View use requires that
          you upgrade your grant tables to add the view-related
          privileges. See <a href="installing.html#upgrading-grant-tables" title="2.10.3. Upgrading the Grant Tables">Section 2.10.3, “Upgrading the Grant Tables”</a>.
        </p></li><li><p>
          Implemented a new “<span class="quote">greedy search</span>” optimizer that
          can significantly reduce the time spent on query optimization
          for some many-table joins. (You are affected if not only some
          particular <code class="literal">SELECT</code> is slow, but even using
          <code class="literal">EXPLAIN</code> for it takes a noticeable amount of
          time.) Two new system variables,
          <code class="literal">optimizer_search_depth</code> and
          <code class="literal">optimizer_prune_level</code>, can be used to
          fine-tune optimizer behavior.
        </p></li><li><p>
          A stored procedure is no longer “<span class="quote">global.</span>” That
          is, it now belongs to a specific database:
        </p><div class="itemizedlist"><ul type="circle"><li><p>
              When a database is dropped, all routines belonging to that
              database are also dropped.
            </p></li><li><p>
              Procedure names may be qualified, for example,
              <code class="literal">db.p()</code>
            </p></li><li><p>
              When executed from another database, an implicit
              <code class="literal">USE <em class="replaceable"><code>db_name</code></em></code>
              is in effect.
            </p></li><li><p>
              Explicit <code class="literal">USE
              <em class="replaceable"><code>db_name</code></em></code> statements no
              longer are allowed in a stored procedure.
            </p></li></ul></div><p>
          See <a href="stored-procedures.html" title="Chapter 17. Stored Procedures and Functions">Chapter 17, <i>Stored Procedures and Functions</i></a>.
        </p></li><li><p>
          Fixed <code class="literal">SHOW TABLES</code> output field name and
          values according to standard. Field name changed from
          <code class="literal">Type</code> to <code class="literal">table_type</code>,
          values are <code class="literal">BASE TABLE</code>,
          <code class="literal">VIEW</code> and <code class="literal">ERROR</code>. (<a href="http://bugs.mysql.com/4603" target="_top">Bug
          #4603</a>)
        </p></li><li><p>
          Added the <code class="literal">sql_updatable_view_key</code> system
          variable.
        </p></li><li><p>
          Added the <code class="option">--replicate-same-server-id</code> server
          option.
        </p></li><li><p>
          Added <code class="literal">Last_query_cost</code> status variable that
          reports optimizer cost for last compiled query.
        </p></li><li><p>
          Added the <code class="option">--to-last-log</code> option to
          <span><strong class="command">mysqlbinlog</strong></span>, for use in conjunction with
          <code class="option">--read-from-remote-server</code>.
        </p></li><li><p>
          Added the <code class="option">--innodb-safe-binlog</code> server option,
          which adds consistency guarantees between the content of
          <code class="literal">InnoDB</code> tables and the binary log. See
          <a href="database-administration.html#binary-log" title="5.11.3. The Binary Log">Section 5.11.3, “The Binary Log”</a>.
        </p></li><li><p>
          <code class="literal">OPTIMIZE TABLE</code> for
          <code class="literal">InnoDB</code> tables is now mapped to
          <code class="literal">ALTER TABLE</code> instead of <code class="literal">ANALYZE
          TABLE</code>. This rebuilds the table, which updates index
          statistics and frees space in the clustered index.
        </p></li><li><p>
          <code class="literal">sync_frm</code> is now a settable global variable
          (not only a startup option).
        </p></li><li><p>
          For replication of <code class="literal">MEMORY</code>
          (<code class="literal">HEAP</code>) tables: Made the master
          automatically write a <code class="literal">DELETE FROM</code> statement
          to its binary log when a <code class="literal">MEMORY</code> table is
          opened for the first time since master's startup. This is for
          the case where the slave has replicated a non-empty
          <code class="literal">MEMORY</code> table, then the master is shut down
          and restarted: the table is now empty on master; the
          <code class="literal">DELETE FROM</code> empties it on slave too. Note
          that even with this fix, between the master's restart and the
          first use of the table on master, the slave still has
          out-of-date data in the table. But if you use the
          <code class="option">--init-file</code> option to populate the
          <code class="literal">MEMORY</code> table on the master at startup, it
          ensures that the failing time interval is zero. (<a href="http://bugs.mysql.com/2477" target="_top">Bug #2477</a>)
        </p></li><li><p>
          When a session having open temporary tables terminates, the
          statement automatically written to the binary log is now
          <code class="literal">DROP TEMPORARY TABLE IF EXISTS</code> instead of
          <code class="literal">DROP TEMPORARY TABLE</code>, for more robustness.
        </p></li><li><p>
          The MySQL server now returns an error if <code class="literal">SET
          SQL_LOG_BIN</code> is issued by a user without the
          <code class="literal">SUPER</code> privilege (in previous versions it
          just silently ignored the statement in this case).
        </p></li><li><p>
          Changed that when the MySQL server has binary logging disabled
          (that is, no <code class="option">--log-bin</code> option was used), then
          no transaction binary log cache is allocated for connections.
          This should save <code class="literal">binlog_cache_size</code> bytes of
          memory (32KB by default) for every connection.
        </p></li><li><p>
          Added the <code class="literal">sync_binlog=N</code> global variable and
          startup option, which makes the MySQL server synchronize its
          binary log to disk (<code class="literal">fdatasync()</code>) after
          every Nth write to the binary log.
        </p></li><li><p>
          Changed the slave SQL thread to print less useless error
          messages (no more message duplication; no more messages when
          an error is skipped because of
          <code class="literal">slave-skip-errors</code>).
        </p></li><li><p>
          <code class="literal">DROP DATABASE IF EXISTS</code>, <code class="literal">DROP
          TABLE IF EXISTS</code>, single-table
          <code class="literal">DELETE</code>, and single-table
          <code class="literal">UPDATE</code> now are written to the binary log
          even if they changed nothing on the master (for example, even
          if a <code class="literal">DELETE</code> matched no rows). The old
          behavior sometimes caused bad surprises in replication setups.
        </p></li><li><p>
          Replication and <span><strong class="command">mysqlbinlog</strong></span> now have better
          support for the case that the session character set and
          collation variables are changed within a given session. See
          <a href="replication.html#replication-features" title="6.7. Replication Features and Known Problems">Section 6.7, “Replication Features and Known Problems”</a>.
        </p></li><li><p>
          Killing a <code class="literal">CHECK TABLE</code> statement does not
          result in the table being marked as “<span class="quote">corrupted</span>”
          any more; the table remains as if <code class="literal">CHECK
          TABLE</code> had not even started. See
          <a href="sql-syntax.html#kill" title="13.5.5.3. KILL Syntax">Section 13.5.5.3, “<code class="literal">KILL</code> Syntax”</a>.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Strange results with index (x, y) ... <code class="literal">WHERE
          x=<em class="replaceable"><code>val_1</code></em> AND
          y&gt;=<em class="replaceable"><code>val_2</code></em> ORDER BY
          <em class="replaceable"><code>pk</code></em>;</code> (<a href="http://bugs.mysql.com/3155" target="_top">Bug #3155</a>)
        </p></li><li><p>
          Subquery and order by (<a href="http://bugs.mysql.com/3118" target="_top">Bug #3118</a>)
        </p></li><li><p>
          <code class="literal">ALTER DATABASE</code> caused the client to hang if
          the database did not exist. (<a href="http://bugs.mysql.com/2333" target="_top">Bug #2333</a>)
        </p></li><li><p>
          <code class="literal">SLAVE START</code> (which is a deprecated syntax,
          <code class="literal">START SLAVE</code> should be used instead) could
          crash the slave. (<a href="http://bugs.mysql.com/2516" target="_top">Bug #2516</a>)
        </p></li><li><p>
          Multiple-table <code class="literal">DELETE</code> statements were never
          replicated by the slave if there were any
          <code class="option">--replicate-*-table</code> options. (<a href="http://bugs.mysql.com/2527" target="_top">Bug #2527</a>)
        </p></li><li><p>
          The MySQL server did not report any error if a statement
          (submitted through <code class="literal">mysql_real_query()</code> or
          <code class="literal">mysql_stmt_prepare()</code>) was terminated by
          garbage characters. This can happen if you pass a wrong
          <code class="literal">length</code> parameter to these functions. The
          result was that the garbage characters were written into the
          binary log. (<a href="http://bugs.mysql.com/2703" target="_top">Bug #2703</a>)
        </p></li><li><p>
          Replication: If a client connects to a slave server and issues
          an administrative statement for a table (for example,
          <code class="literal">OPTIMIZE TABLE</code> or <code class="literal">REPAIR
          TABLE</code>), this could sometimes stop the slave SQL
          thread. This does not lead to any corruption, but you must use
          <code class="literal">START SLAVE</code> to get replication going again.
          (<a href="http://bugs.mysql.com/1858" target="_top">Bug #1858</a>)
        </p></li><li><p>
          Made clearer the error message that one gets when an update is
          refused because of the <code class="option">--read-only</code> option.
          (<a href="http://bugs.mysql.com/2757" target="_top">Bug #2757</a>)
        </p></li><li><p>
          Fixed that <code class="option">--replicate-wild-*-table</code> rules
          apply to <code class="literal">ALTER DATABASE</code> when the table
          pattern is <code class="literal">%</code>, as is the case for
          <code class="literal">CREATE DATABASE</code> and <code class="literal">DROP
          DATABASE</code>. (<a href="http://bugs.mysql.com/3000" target="_top">Bug #3000</a>)
        </p></li><li><p>
          Fixed that when a <code class="literal">Rotate</code> event is found by
          the slave SQL thread in the middle of a transaction, the value
          of <code class="literal">Relay_Log_Pos</code> in <code class="literal">SHOW SLAVE
          STATUS</code> remains correct. (<a href="http://bugs.mysql.com/3017" target="_top">Bug #3017</a>)
        </p></li><li><p>
          Corrected the master's binary log position that
          <code class="literal">InnoDB</code> reports when it is doing a crash
          recovery on a slave server. (<a href="http://bugs.mysql.com/3015" target="_top">Bug #3015</a>)
        </p></li><li><p>
          Changed the column <code class="literal">Seconds_Behind_Master</code> in
          <code class="literal">SHOW SLAVE STATUS</code> to never show a value of
          -1. (<a href="http://bugs.mysql.com/2826" target="_top">Bug #2826</a>)
        </p></li><li><p>
          Changed that when a <code class="literal">DROP TEMPORARY TABLE</code>
          statement is automatically written to the binary log when a
          session ends, the statement is recorded with an error code of
          value zero (this ensures that killing a
          <code class="literal">SELECT</code> on the master does not result in a
          superfluous error on the slave). (<a href="http://bugs.mysql.com/3063" target="_top">Bug #3063</a>)
        </p></li><li><p>
          Changed that when a thread handling <code class="literal">INSERT
          DELAYED</code> (also known as a
          <code class="literal">delayed_insert</code> thread) is killed, its
          statements are recorded with an error code of value zero
          (killing such a thread does not endanger replication, so we
          thus avoid a superfluous error on the slave). (<a href="http://bugs.mysql.com/3081" target="_top">Bug #3081</a>)
        </p></li><li><p>
          Fixed deadlock when two <code class="literal">START SLAVE</code>
          commands were run at the same time. (<a href="http://bugs.mysql.com/2921" target="_top">Bug #2921</a>)
        </p></li><li><p>
          Fixed that a statement never triggers a superfluous error on
          the slave, if it must be excluded given the
          <code class="option">--replicate-*</code> options. The bug was that if
          the statement had been killed on the master, the slave would
          stop. (<a href="http://bugs.mysql.com/2983" target="_top">Bug #2983</a>)
        </p></li><li><p>
          The <code class="option">--local-load</code> option of
          <span><strong class="command">mysqlbinlog</strong></span> now requires an argument.
        </p></li><li><p>
          Fixed a segmentation fault when running <code class="literal">LOAD DATA
          FROM MASTER</code> after <code class="literal">RESET SLAVE</code>.
          (<a href="http://bugs.mysql.com/2922" target="_top">Bug #2922</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlbinlog --read-from-remote-server</strong></span> read
          all binary logs following the one that was requested. It now
          stops at the end of the requested file, the same as it does
          when reading a local binary log. There is an option
          <code class="option">--to-last-log</code> to get the old behavior. (<a href="http://bugs.mysql.com/3204" target="_top">Bug
          #3204</a>)
        </p></li><li><p>
          Fixed <span><strong class="command">mysqlbinlog --read-from-remote-server</strong></span>
          to print the exact positions of events in the "at #" lines.
          (<a href="http://bugs.mysql.com/3214" target="_top">Bug #3214</a>)
        </p></li><li><p>
          Fixed a rare error condition that caused the slave SQL thread
          spuriously to print the message <code class="literal">Binlog has bad magic
          number</code> and stop when it was not necessary to do so.
          (<a href="http://bugs.mysql.com/3401" target="_top">Bug #3401</a>)
        </p></li><li><p>
          Fixed <span><strong class="command">mysqlbinlog</strong></span> not to forget to print a
          <code class="literal">USE</code> statement under rare circumstances
          where the binary log contained a <code class="literal">LOAD DATA
          INFILE</code> statement. (<a href="http://bugs.mysql.com/3415" target="_top">Bug #3415</a>)
        </p></li><li><p>
          Fixed a memory corruption when replicating a <code class="literal">LOAD
          DATA INFILE</code> when the master had version 3.23. (<a href="http://bugs.mysql.com/3422" target="_top">Bug
          #3422</a>)
        </p></li><li><p>
          Multiple-table <code class="literal">DELETE</code> statements were
          always replicated by the slave if there were some
          <code class="option">--replicate-*-ignore-table</code> options and no
          <code class="option">--replicate-*-do-table</code> options. (<a href="http://bugs.mysql.com/3461" target="_top">Bug #3461</a>)
        </p></li><li><p>
          Fixed a crash of the MySQL slave server when it was built with
          <code class="option">--with-debug</code> and replicating itself. (<a href="http://bugs.mysql.com/3568" target="_top">Bug
          #3568</a>)
        </p></li><li><p>
          Fixed that in some replication error messages, a very long
          query caused the rest of the message to be invisible
          (truncated), by putting the query last in the message. (<a href="http://bugs.mysql.com/3357" target="_top">Bug
          #3357</a>)
        </p></li><li><p>
          If <code class="literal">server-id</code> was not set using startup
          options but with <code class="literal">SET GLOBAL</code>, the
          replication slave still complained that it was not set. (<a href="http://bugs.mysql.com/3829" target="_top">Bug
          #3829</a>)
        </p></li><li><p>
          <span><strong class="command">mysql_fix_privilege_tables</strong></span> didn't correctly
          handle the argument of its
          <code class="option">--password=<em class="replaceable"><code>password_val</code></em></code>
          option. (<a href="http://bugs.mysql.com/4240" target="_top">Bug #4240</a>)
        </p></li><li><p>
          Fixed potential memory overrun in
          <code class="literal">mysql_real_connect()</code> (which required a
          compromised DNS server and certain operating systems). (<a href="http://bugs.mysql.com/4017" target="_top">Bug
          #4017</a>,
          <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0836" target="_top">CAN-2004-0836</a>)
        </p></li><li><p>
          During the installation process of the server RPM on Linux,
          <span><strong class="command">mysqld</strong></span> was run as the
          <code class="literal">root</code> system user, and if you had
          <code class="option">--log-bin=<em class="replaceable"><code>somewhere_out_of_var_lib_mysql</code></em></code>
          it created binary log files owned by <code class="literal">root</code>
          in this directory, which remained owned by
          <code class="literal">root</code> after the installation. This is now
          fixed by starting <span><strong class="command">mysqld</strong></span> as the
          <code class="literal">mysql</code> system user instead. (<a href="http://bugs.mysql.com/4038" target="_top">Bug #4038</a>)
        </p></li><li><p>
          Made <code class="literal">DROP DATABASE</code> honor the value of
          <code class="literal">lower_case_table_names</code>. (<a href="http://bugs.mysql.com/4066" target="_top">Bug #4066</a>)
        </p></li><li><p>
          The slave SQL thread refused to replicate <code class="literal">INSERT ...
          SELECT</code> if it examined more than 4 billion rows. (<a href="http://bugs.mysql.com/3871" target="_top">Bug
          #3871</a>)
        </p></li><li><p>
          <span><strong class="command">mysqlbinlog</strong></span> didn't escape the string
          content of user variables, and did not deal well when these
          variables were in non-ASCII character sets; this is now fixed
          by always printing the string content of user variables in
          hexadecimal. The character set and collation of the string is
          now also printed. (<a href="http://bugs.mysql.com/3875" target="_top">Bug #3875</a>)
        </p></li><li><p>
          Fixed incorrect destruction of expression that led to a server
          crash on complex <code class="literal">AND</code>/<code class="literal">OR</code>
          expressions if query was ignored (either by a replication
          server because of <code class="option">--replicate-*-table</code> rules,
          or by any MySQL server because of a syntax error). (<a href="http://bugs.mysql.com/3969" target="_top">Bug #3969</a>,
          <a href="http://bugs.mysql.com/4494" target="_top">Bug #4494</a>)
        </p></li><li><p>
          If <code class="literal">CREATE TEMPORARY TABLE t SELECT</code> failed
          while loading the data, the temporary table was not dropped.
          (<a href="http://bugs.mysql.com/4551" target="_top">Bug #4551</a>)
        </p></li><li><p>
          Fixed that when a multiple-table <code class="literal">DROP TABLE</code>
          failed to drop a table on the master server, the error code
          was not written to the binary log. (<a href="http://bugs.mysql.com/4553" target="_top">Bug #4553</a>)
        </p></li><li><p>
          When the slave SQL thread was replicating a <code class="literal">LOAD DATA
          INFILE</code> statement, it didn't show the statement in
          the output of <code class="literal">SHOW PROCESSLIST</code>. (<a href="http://bugs.mysql.com/4326" target="_top">Bug #4326</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="news-5-0-0"></a>D.1.17. Changes in release 5.0.0 (22 Dec 2003: Alpha)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <span class="bold"><strong>Important note:</strong></span> If you
          upgrade to MySQL 4.1.1 or higher, it is difficult to downgrade
          back to 4.0 or 4.1.0! That is because, for earlier versions,
          <code class="literal">InnoDB</code> is not aware of multiple
          tablespaces.
        </p></li><li><p>
          Added support for <code class="literal">SUM(DISTINCT)</code>,
          <code class="literal">MIN(DISTINCT)</code>, and
          <code class="literal">MAX(DISTINCT)</code>.
        </p></li><li><p>
          The <code class="literal">KILL</code> statement now takes
          <code class="literal">CONNECTION</code> and <code class="literal">QUERY</code>
          modifiers. The first is the same as <code class="literal">KILL</code>
          with no modifier (it kills a given connection thread). The
          second kills only the statement currently being executed by
          the connection.
        </p></li><li><p>
          Added <code class="literal">TIMESTAMPADD()</code> and
          <code class="literal">TIMESTAMPDIFF()</code> functions.
        </p></li><li><p>
          Added <code class="literal">WEEK</code> and <code class="literal">QUARTER</code>
          values as <code class="literal">INTERVAL</code> arguments for the
          <code class="literal">DATE_ADD()</code> and
          <code class="literal">DATE_SUB()</code> functions.
        </p></li><li><p>
          New binary log format that enables replication of these
          session variables: <code class="literal">sql_mode</code>,
          <code class="literal">SQL_AUTO_IS_NULL</code>,
          <code class="literal">FOREIGN_KEY_CHECKS</code> (which was replicated
          since 4.0.14, but here it's done more efficiently and takes
          less space in the binary logs),
          <code class="literal">UNIQUE_CHECKS</code>. Other variables (like
          character sets, <code class="literal">SQL_SELECT_LIMIT</code>, ...) will
          be replicated in upcoming 5.0.x releases.
        </p></li><li><p>
          Implemented Index Merge optimization for <code class="literal">OR</code>
          clauses. See <a href="optimization.html#index-merge-optimization" title="7.2.6. Index Merge Optimization">Section 7.2.6, “Index Merge Optimization”</a>.
        </p></li><li><p>
          Basic support for stored procedures (SQL:2003 style). See
          <a href="stored-procedures.html" title="Chapter 17. Stored Procedures and Functions">Chapter 17, <i>Stored Procedures and Functions</i></a>.
        </p></li><li><p>
          Added <code class="literal">SELECT INTO
          <em class="replaceable"><code>list_of_vars</code></em></code>, which can
          be of mixed (that is, global and local) types. See
          <a href="stored-procedures.html#select-into-statement" title="17.2.9.3. SELECT ... INTO Statement">Section 17.2.9.3, “<code class="literal">SELECT ... INTO</code> Statement”</a>.
        </p></li><li><p>
          Easier replication upgrade (5.0.0 masters can read older
          binary logs and 5.0.0 slaves can read older relay logs). See
          <a href="replication.html#replication-compatibility" title="6.5. Replication Compatibility Between MySQL Versions">Section 6.5, “Replication Compatibility Between MySQL Versions”</a> for more details).
          The format of the binary log and relay log is changed compared
          to that of MySQL 4.1 and older.
        </p></li></ul></div><p>
      Bugs fixed:
    </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="mysql-cluster-change-history"></a>D.2. <code class="literal">MySQL Cluster</code> Change History</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-7">D.2.1. MySQL Cluster-5.0.7 (Not yet released)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-6">D.2.2. MySQL Cluster-5.0.6 (26 May 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-5">D.2.3. MySQL Cluster-5.0.5 (Not released)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-4">D.2.4. MySQL Cluster-5.0.4 (16 Apr 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-3">D.2.5. MySQL Cluster-5.0.3 (23 Mar 2005: Beta)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-5-0-1">D.2.6. MySQL Cluster-5.0.1 (27 Jul 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-13">D.2.7. MySQL Cluster-4.1.13 (15 Jul 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-12">D.2.8. MySQL Cluster-4.1.12 (13 May 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-11">D.2.9. MySQL Cluster-4.1.11 (01 Apr 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-10">D.2.10. MySQL Cluster-4.1.10 (12 Feb 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-9">D.2.11. MySQL Cluster-4.1.9 (13 Jan 2005)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-8">D.2.12. MySQL Cluster-4.1.8 (14 Dec 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-7">D.2.13. MySQL Cluster-4.1.7 (23 Oct 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-6">D.2.14. MySQL Cluster-4.1.6 (10 Oct 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-5">D.2.15. MySQL Cluster-4.1.5 (16 Sep 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-4">D.2.16. MySQL Cluster-4.1.4 (31 Aug 2004)</a></span></dt><dt><span class="section"><a href="news.html#mysql-cluster-news-4-1-3">D.2.17. MySQL Cluster-4.1.3 (28 Jun 2004)</a></span></dt></dl></div><a class="indexterm" name="id3181094"></a><p>
    <span class="bold"><strong>Starting from 4.1.13 and 5.0.7, all Cluster
    changes are included in the MySQL Change History, and this manual
    section is no longer separately maintained.</strong></span>
  </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-5-0-7"></a>D.2.1. MySQL Cluster-5.0.7 (Not yet released)</h3></div></div></div><p>
      <span class="bold"><strong>Note</strong></span>: Starting with version
      5.0.8, changes for MySQL Cluster can be found in the combined
      MySQL Change History.
    </p><p>
      Functionality added or changed:
    </p><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/11019" target="_top">Bug #11019</a>) mgmapi start backup in some cases returns wrong
          backupid
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10190" target="_top">Bug #10190</a>) Backup from cluster wih NoOfReplica=1 is corrupt
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9246" target="_top">Bug #9246</a>) Condition pushdown and left join, wrong result
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10956" target="_top">Bug #10956</a>) More than 7 node restarts with
          <code class="option">--initial</code> caused cluster to fail.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9945" target="_top">Bug #9945</a>) <code class="literal">ALTER TABLE</code> caused server
          crash. (Linux/390)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9826" target="_top">Bug #9826</a>) (<a href="http://bugs.mysql.com/10948" target="_top">Bug #10948</a>) Schema change (<code class="literal">DROP
          TABLE</code>, <code class="literal">ALTER TABLE</code>) crashed HPUX
          and PPC32.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10711" target="_top">Bug #10711</a>) (<a href="http://bugs.mysql.com/9363" target="_top">Bug #9363</a>) (<a href="http://bugs.mysql.com/8918" target="_top">Bug #8918</a>) (<a href="http://bugs.mysql.com/10058" target="_top">Bug #10058</a>) (<a href="http://bugs.mysql.com/9025" target="_top">Bug #9025</a>)
          Cluster would time out and crash after first query; setting
          DataMemory to more than 2GB prevented cluster from starting;
          calling <code class="literal">ndb_select_count()</code> crashed the
          cluster. (64-bit Unix OSes)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-5-0-6"></a>D.2.2. MySQL Cluster-5.0.6 (26 May 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Limit on number of metadata objects (number of tables, indexes
          and BLOBs) now increased to 20,320
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          The server would hang on successive calls to an
          <code class="literal">INSERT ... ON DUPLICATE KEY UPDATE</code> query.
          (<a href="http://bugs.mysql.com/9725" target="_top">Bug #9725</a>)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10193" target="_top">Bug #10193</a>) Invalid DataDir in config causes ndbd
          segmentation fault
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10813" target="_top">Bug #10813</a>) Build with SCI Transporter fails
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10831" target="_top">Bug #10831</a>) ndb mgmd LogDestination maxfiles does not rotate
          logs properly
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-5-0-5"></a>D.2.3. MySQL Cluster-5.0.5 (Not released)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Decreased IndexMemory Usage
        </p></li><li><p>
          Parallel key lookup (read-multi-range) for queries like
          <code class="literal">SELECT * FROM t1 WHERE primary_key IN
          (1,2,3,4,5,6,7,8,9,10);</code>
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><p>
        Patches merged from versions 4.1.11 and 4.1.12
      </p><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/8315" target="_top">Bug #8315</a>) NdbScanFilter cmp method only works for strings of
          exact word boundry length
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8103" target="_top">Bug #8103</a>) Configuration handling error
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8035" target="_top">Bug #8035</a>) mysqld signal 10 when ndbd is shutdown
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7631" target="_top">Bug #7631</a>) NDB$EVENT contains unreadable event and table
          names
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7628" target="_top">Bug #7628</a>) Filtered event types are ignored
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7627" target="_top">Bug #7627</a>) Drop Event operation fails
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7424" target="_top">Bug #7424</a>) create index on datetime fails
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-5-0-4"></a>D.2.4. MySQL Cluster-5.0.4 (16 Apr 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Condition pushdown to storage engine now works for update and
          delete as well
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/9675" target="_top">Bug #9675</a>) Auto-increment not working with INSERT..SELECT and
          NDB storage
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9517" target="_top">Bug #9517</a>) Condition pushdown to storage engine does not work
          for update/delete
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9282" target="_top">Bug #9282</a>) API Node Crashes/Reloads on 'DELETE FROM'
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9280" target="_top">Bug #9280</a>) Memory leak in cluster when dependent sub-queries
          are used
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8585" target="_top">Bug #8585</a>) ndb_cache2 fails on aix52
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-5-0-3"></a>D.2.5. MySQL Cluster-5.0.3 (23 Mar 2005: Beta)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Condition pushdown to storage engine
        </p></li><li><p>
          Query cache enabled for cluster
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Patches merged from version 4.1.10
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-5-0-1"></a>D.2.6. MySQL Cluster-5.0.1 (27 Jul 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          This was the first MySQL Cluster release in the 5.0 series. As
          nearly all attention was still focused on getting 4.1 stable,
          it is not recommended to use MySQL 5.0.1 for MySQL Cluster.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          N/A
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-13"></a>D.2.7. MySQL Cluster-4.1.13 (15 Jul 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/11132" target="_top">Bug #11132</a>) Connections between data nodes and management
          nodes were not being closed following shutdown of
          <code class="literal">ndb_mgmd</code>.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/11050" target="_top">Bug #11050</a>) <code class="literal">ndb_mgm&gt; show</code> printed
          incorrectly after master data node failure.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10956" target="_top">Bug #10956</a>) More than 7 node restarts with
          <code class="option">--initial</code> caused cluster to fail.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9826" target="_top">Bug #9826</a>) (<a href="http://bugs.mysql.com/10948" target="_top">Bug #10948</a>) Schema change (<code class="literal">DROP
          TABLE</code>, <code class="literal">ALTER TABLE</code>) crashed HPUX
          and PPC32.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9025" target="_top">Bug #9025</a>) Data nodes failed to restart on 64-bit Solaris.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/11166" target="_top">Bug #11166</a>) Insert records were incorrectly applied by
          <code class="literal">ndb_restore</code>, thus making restoration from
          backup inconsistent if the binlog contained inserts.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8918" target="_top">Bug #8918</a>) (<a href="http://bugs.mysql.com/9363" target="_top">Bug #9363</a>) (<a href="http://bugs.mysql.com/10711" target="_top">Bug #10711</a>) (<a href="http://bugs.mysql.com/10058" target="_top">Bug #10058</a>) (<a href="http://bugs.mysql.com/9025" target="_top">Bug #9025</a>)
          Cluster would time out and crash after first query; setting
          DataMemory to more than 2GB prevented cluster from starting;
          calling <code class="literal">ndb_select_count()</code> crashed the
          cluster. (64-bit Unix OSes)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10190" target="_top">Bug #10190</a>) When making a backup of a cluster where
          <code class="literal">NumberOfReplicas</code> was equal to 1, the
          backup's metadata was corrupted. (Linux)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9945" target="_top">Bug #9945</a>) <code class="literal">ALTER TABLE</code> caused server
          crash. (Linux/390)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/11133" target="_top">Bug #11133</a>) A delete operation performed as part of a
          transaction caused an erroneous result.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10294" target="_top">Bug #10294</a>) Not allowing sufficient parallelism in cluster
          configuration (e.g. <code class="literal">NoOfTransactions</code> too
          small) caused <code class="literal">ndb_restore</code> to fail without
          generating any error messages.
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/11290" target="_top">Bug #11290</a>) Setting TransactionInactiveTimeout= 0 did not
          result in an infinite timeout.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-12"></a>D.2.8. MySQL Cluster-4.1.12 (13 May 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/10471" target="_top">Bug #10471</a>) Backup can become inconsisten wi/ certain
          combinations of multi updates
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10287" target="_top">Bug #10287</a>) ndb_select_all "delimiter" option non functional
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10142" target="_top">Bug #10142</a>) Unhandled resource shortage in UNIQUE index code
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10029" target="_top">Bug #10029</a>) crash in ordered index scan after db full
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/10001" target="_top">Bug #10001</a>) 2 NDB nodes get signal 6 (abort) in DBTC
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9969" target="_top">Bug #9969</a>) 4012 - has misleading error message
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9960" target="_top">Bug #9960</a>) START BACKUP reports failure albeit succeding
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9924" target="_top">Bug #9924</a>) ABORT BACKUP 1 crashes 4 node cluster
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9892" target="_top">Bug #9892</a>) Index activation file during node recovery
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9891" target="_top">Bug #9891</a>) Crash in DBACC (line 7004) during commit
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9865" target="_top">Bug #9865</a>) SELECT does not function properly
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9839" target="_top">Bug #9839</a>) Column with AUTOINC contains -1 Value on node stop
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9757" target="_top">Bug #9757</a>) Uncompleted node failure after gracefully stopping
          node
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9749" target="_top">Bug #9749</a>) Transactions causes deadlock in ACC
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9724" target="_top">Bug #9724</a>) Node fails to start: Message: File has already
          been opened
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9691" target="_top">Bug #9691</a>) UPDATE fails on attempt to update primary key
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9675" target="_top">Bug #9675</a>) Auto-increment not working with INSERT..SELECT and
          NDB storage
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9318" target="_top">Bug #9318</a>) drop database does not drop ndb tables
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9280" target="_top">Bug #9280</a>) Memory leak in cluster when dependent sub-queries
          are used
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8928" target="_top">Bug #8928</a>) create table with keys will shutdown the cluster
        </p></li><li><p>
          Creating a table did not work for a cluster with 6 nodes. (<a href="http://bugs.mysql.com/8928" target="_top">Bug
          #8928</a>) Databases with 1, 2, 4, 8, ...
          (2<sup><em class="replaceable"><code>n</code></em></sup>
          nodes) did not have the problem. After a rolling upgrade,
          restart each node manually by restarting it with the
          <code class="option">--initial</code> option. Otherwise, use dump and
          restore after an upgrade.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-11"></a>D.2.9. MySQL Cluster-4.1.11 (01 Apr 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/9916" target="_top">Bug #9916</a>) DbaccMain.cpp / DBACC (Line: 4876) / Pointer too
          large
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9435" target="_top">Bug #9435</a>) TIMESTAMP columns don't update
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/9052" target="_top">Bug #9052</a>) Uninitialized data during unique index build,
          potential cluster crash
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8876" target="_top">Bug #8876</a>) Timeout when committing aborted transaction after
          node failure
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8786" target="_top">Bug #8786</a>) ndb_autodiscover, drop index can fail, wait 2
          minutes timeout
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8853" target="_top">Bug #8853</a>) Transaction aborted after long time during node
          failure (4012)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8753" target="_top">Bug #8753</a>) Invalid schema object version after dropping index
          (crash fixed, currently retry required)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8645" target="_top">Bug #8645</a>) Assertion failure with multiple management servers
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8557" target="_top">Bug #8557</a>) ndbd does not get same nodeid on restart
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8556" target="_top">Bug #8556</a>) corrupt ndb_mgm show printout for certain
          configurations
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8167" target="_top">Bug #8167</a>) cluster shared memory and mysqld signal usage
          clash
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-10"></a>D.2.10. MySQL Cluster-4.1.10 (12 Feb 2005)</h3></div></div></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/8284" target="_top">Bug #8284</a>) Out of fragment memory in DBACC
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8262" target="_top">Bug #8262</a>) Node crash due to bug in DBLQH
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8208" target="_top">Bug #8208</a>) node restart fails on Aix 5.2
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8167" target="_top">Bug #8167</a>) cluster shared memory and mysqld signal usage
          clash
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8101" target="_top">Bug #8101</a>) unique index and error 4209 while selecting
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8070" target="_top">Bug #8070</a>) (<a href="http://bugs.mysql.com/7937" target="_top">Bug #7937</a>) (<a href="http://bugs.mysql.com/6716" target="_top">Bug #6716</a>) various ndb_restore core
          dumps on HP-UX
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/8010" target="_top">Bug #8010</a>) 4006 forces MySQL Node Restart
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7928" target="_top">Bug #7928</a>) out of connection objects
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7898" target="_top">Bug #7898</a>) mysqld crash with ndb (solaris)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7864" target="_top">Bug #7864</a>) Not possible to have more than 4.5G data memory
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-9"></a>D.2.11. MySQL Cluster-4.1.9 (13 Jan 2005)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          New implementation of shared memory transporter.
        </p></li><li><p>
          Cluster automatically configures shared memory transporter if
          possible.
        </p></li><li><p>
          Cluster prioritizes usage of transporters with shared memory
          and localhost TCP
        </p></li><li><p>
          Added switches to control the above functions,
          <code class="literal">ndb-shm</code> and
          <code class="literal">ndb-optimized-node-selection</code>.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/7805" target="_top">Bug #7805</a>) config.ini parsing error
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7798" target="_top">Bug #7798</a>) Running range scan after alter table in different
          thread causes node failure
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7761" target="_top">Bug #7761</a>) Alter table does not autocommit
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7725" target="_top">Bug #7725</a>) Indexed DATETIME Columns Return Random Results
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7660" target="_top">Bug #7660</a>) START BACKUP does not increment BACKUP-ID (Big
          Endian machines)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7593" target="_top">Bug #7593</a>) Cannot Create A Large NDB Data Warehouse
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7480" target="_top">Bug #7480</a>) Mysqld crash in ha_ndbcluster using Query Browser
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7470" target="_top">Bug #7470</a>) shared memory transporter does not connect
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7396" target="_top">Bug #7396</a>) Primary Key not working in NDB Mysql Clustered
          table (solaris)
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7379" target="_top">Bug #7379</a>) ndb restore fails to handle blobs and multiple
          databases
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7346" target="_top">Bug #7346</a>) ndb_restore enters infinite loop
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7340" target="_top">Bug #7340</a>) Problem for inserting data into the Text field on
          utf8
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7124" target="_top">Bug #7124</a>) ndb_mgmd is aborted on startup when using SHM
          connection
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-8"></a>D.2.12. MySQL Cluster-4.1.8 (14 Dec 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Default port for <span><strong class="command">ndb_mgmd</strong></span> was changed to
          1186 (from 2200) as this port number was officially assigned
          to MySQL Cluster by IANA.
        </p></li><li><p>
          New command in <span><strong class="command">ndb_mgm</strong></span>, PURGE STALE
          SESSIONS, as a workaround for cases where nodes fail to
          allocate a node id even if it is free to use.
        </p></li><li><p>
          New command in <span><strong class="command">ndb_mgm</strong></span>, CONNECT.
        </p></li><li><p>
          The ndb executables have been changed to make use of the
          regular MySQL command line option parsing features. See
          <a href="ndbcluster.html#mysql-cluster-command-options" title="15.5.5. Command Options for MySQL Cluster Processes">Section 15.5.5, “Command Options for MySQL Cluster Processes”</a> for notes on
          changes.
        </p></li><li><p>
          As bonus of the above you can now specify all command line
          options in <code class="filename">my.cnf</code> using the executable
          names as sections, i.e. <code class="literal">[ndbd]</code>,
          <code class="literal">[ndb_mgmd]</code>, <code class="literal">[ndb_mgm]</code>,
          <code class="literal">[ndb_restore]</code> etc.
        </p><pre class="programlisting">      [ndbd]
      ndb-connectstring=myhost.domain.com:1234
      [ndb_mgm]
      ndb-connectstring=myhost.domain.com:1234
</pre></li><li><p>
          Added use of section <code class="literal">[mysql_cluster]</code> in
          <code class="filename">my.cnf</code>. All cluster executables,
          including mysqld, parse this section. Convenient place to put
          e.g. <code class="literal">ndb-connectstring</code> so that it only
          needs to be specified once.
        </p></li><li><p>
          Added cluster log info events on allocation and deallocation
          of nodeid's.
        </p></li><li><p>
          Added cluster log info events on connection refuse as a result
          of version mismatch.
        </p></li><li><p>
          Extended connectstring syntax to allow for leaving the port
          number out. E.g.
          <code class="literal">ndb-connectstring|connect-string=myhost1,myhost2,myhost3</code>
          is a valid connectstring and connect occurs on default port
          1186.
        </p></li><li><p>
          Clear text ndb error messages provided also for error codes
          that are mapped to corresponding mysql error codes, by
          executing <code class="literal">SHOW WARNINGS</code> after an error has
          occured which relates to the ndb storage engine.
        </p></li><li><p>
          Significant performance improvements done for read
          performance, especially for blobs.
        </p></li><li><p>
          Added some variables for performance tuning,
          <code class="literal">ndb_force_send</code> and
          <code class="literal">ndb_use_exact_count</code>. Do <code class="literal">show
          variables like 'ndb%';</code> in mysql client for listing.
          Use <code class="literal">set</code> command to alter variables.
        </p></li><li><p>
          Added variables to set some options,
          <code class="literal">ndb_use_transactions</code> and
          <code class="literal">ndb_autoincrement_prefetch_sz</code>.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          (<a href="http://bugs.mysql.com/7303" target="_top">Bug #7303</a>) ndb_mgm: Trying to set CLUSTERLOG for a specific
          node id core dumps
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7193" target="_top">Bug #7193</a>) start backup gives false error printout
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7153" target="_top">Bug #7153</a>) Cluster nodes don't report error on endianness
          mismatch
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7152" target="_top">Bug #7152</a>) ndb_mgmd segmentation fault on incorrect HostName
          in configuration
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/7104" target="_top">Bug #7104</a>) clusterlog filtering and level setting broken
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6995" target="_top">Bug #6995</a>) ndb_recover on varchar fields results in changing
          case of data
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6919" target="_top">Bug #6919</a>) all status only shows 2 nodes on a 8-node cluster
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6871" target="_top">Bug #6871</a>) DBD execute failed: Got error 897 'Unknown error
          code' from ndbcluster
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6794" target="_top">Bug #6794</a>) Wrong outcome of update operation of ndb table
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6791" target="_top">Bug #6791</a>) Segmentation fault when config.ini is not
          correctly set
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6775" target="_top">Bug #6775</a>) failure in acc when running many mysql clients
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6696" target="_top">Bug #6696</a>) ndb_mgm command line options inconsistent with
          behavior
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6684" target="_top">Bug #6684</a>) ndb_restore doesn't give error messages if
          inproper command given
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6677" target="_top">Bug #6677</a>) ndb_mgm can crash on "ALL CLUSTERLOG"
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6538" target="_top">Bug #6538</a>) Error code returned when select max() on empty
          table with index
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6451" target="_top">Bug #6451</a>) failing create table givers "ghost" tables which
          are impossible to remove
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6435" target="_top">Bug #6435</a>) strange behavior of left join
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6426" target="_top">Bug #6426</a>) update with long pk fails
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6398" target="_top">Bug #6398</a>) update of primary key fails
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6354" target="_top">Bug #6354</a>) mysql does not complain about --ndbcluster option
          when NDB is not compiled in
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6331" target="_top">Bug #6331</a>) INSERT IGNORE .. SELECT breaks subsequent inserts
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6288" target="_top">Bug #6288</a>) cluster nodes crash on data import
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6031" target="_top">Bug #6031</a>) To drop database you have to execute DROP DATABASE
          command twice
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6020" target="_top">Bug #6020</a>) LOCK TABLE + delete returns error 208
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6018" target="_top">Bug #6018</a>) REPLACE does not work for BLOBs + NDB
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/6016" target="_top">Bug #6016</a>) Strange crash with blobs + different DATABASES
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5973" target="_top">Bug #5973</a>) ndb table belonging to different database shows up
          in show tables
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5872" target="_top">Bug #5872</a>) ALTER TABLE with blob from ndb table to myisam
          fails
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5844" target="_top">Bug #5844</a>) Failing mysql-test-run leaves stray NDB processes
          behind
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5824" target="_top">Bug #5824</a>) HELP text messed up in ndb_mgm
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5786" target="_top">Bug #5786</a>) Duplicate key error after restore
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5785" target="_top">Bug #5785</a>) lock timeout during concurrent update
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5782" target="_top">Bug #5782</a>) Unknown error when using LIMIT with ndb table
        </p></li><li><p>
          (<a href="http://bugs.mysql.com/5756" target="_top">Bug #5756</a>) RESTART node from ndb_mgm fails
        </p></li><li><p>
          A few more not reported bugs fixed
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-7"></a>D.2.13. MySQL Cluster-4.1.7 (23 Oct 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Optimization 1: Improved performance on index scans. Measured
          30% performance increase on query which do large amounts of
          index scans.
        </p></li><li><p>
          Optimization 2: Improved performance on primary key lookups.
          Around double performance for autocommitted primary key
          lookups.
        </p></li><li><p>
          Optimization 3: Improved performance when using blobs by
          avoiding usage of exclusive locks for blobs.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          A few bugs fixed.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-6"></a>D.2.14. MySQL Cluster-4.1.6 (10 Oct 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Limited character set support for storage engine NDBCLUSTER:
        </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><tbody><tr><td>Char set</td><td>Collation</td></tr><tr><td>big5</td><td>big5_chinese_ci</td></tr><tr><td> </td><td>big5_bin</td></tr><tr><td>binary</td><td>binary</td></tr><tr><td>euckr</td><td>euckr_korean_ci</td></tr><tr><td> </td><td>euckr_bin</td></tr><tr><td>gb2312</td><td>gb2312_chinese_ci</td></tr><tr><td> </td><td>gb2312_bin</td></tr><tr><td>gbk</td><td>gbk_chinese_ci</td></tr><tr><td> </td><td>gbk_bin</td></tr><tr><td>latin1</td><td>latin1_swedish_ci</td></tr><tr><td> </td><td>latin1_bin</td></tr><tr><td>sjis</td><td>sjis_japanese_ci</td></tr><tr><td> </td><td>sjis_bin</td></tr><tr><td>tis620</td><td>tis620_bin</td></tr><tr><td>ucs2</td><td>ucs2_general_ci</td></tr><tr><td> </td><td>ucs2_bin</td></tr><tr><td>ujis</td><td>ujis_japanese_ci</td></tr><tr><td> </td><td>ujis_bin</td></tr><tr><td>utf8</td><td>utf8_general_ci</td></tr><tr><td> </td><td>utf8_bin</td></tr></tbody></table></div></li><li><p>
          The SCI Transporter has been brought up-to-date with all
          changes and now works and has been documented as well.
        </p></li><li><p>
          Optimizations when several clients to a MySQL Server access
          ndb tables.
        </p></li><li><p>
          Added more checks and warnings for erroneous and unappropriate
          cluster configurations.
        </p></li><li><p>
          <code class="literal">SHOW TABLES</code> now directly shows ndb tables
          created on a different mysql server, i.e. without a prior
          table access.
        </p></li><li><p>
          Enhanced support for starting MySQL Server independently of
          ndbd and ndb_mgmd.
        </p></li><li><p>
          Clear text ndb error messages provided by executing
          <code class="literal">SHOW WARNINGS</code> after an error has occured
          which relates to the ndb storage engine.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Quite a few bugs fixed.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-5"></a>D.2.15. MySQL Cluster-4.1.5 (16 Sep 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Many queries in MySQL Cluster are executed as range scans or
          full table scans. All queries that don't use a unique hash
          index or the primary hash index use this access method. In a
          distributed system it is crucial that batching is properly
          performed.
        </p><p>
          In previous versions, the batch size was fixed to 16 per data
          node. In this version it is configurable per MySQL Server. So
          for queries using lots of large scans it is appropriate to set
          this parameter rather large and for queries using many small
          scans only fetching a small amount of records it is
          appropriate to set it low.
        </p><p>
          The performance of queries can easily change as much as 40%
          based on how this variable is set.
        </p><p>
          In future versions more logic will be implemented for
          assessing the batch size on a per-query basis. Thus, the
          semantics of the new configuration variable
          <code class="literal">ScanBatchSize</code> are likely to change.
        </p></li><li><p>
          The fixed size overhead of the ndbd process has been greatly
          decreased. This is also true for the overhead per operation
          record as well as overhead per table and index.
        </p><p>
          A number of new configuration variables have been introduced
          to enable configuration of system buffers. Configuration
          variables for specifying the numbers of tables, unique hash
          indexes, and ordered indexes have also been introduced.
        </p><p>
          New configuration variables:
          <code class="literal">MaxNoOfOrderedIndexes</code>,
          <code class="literal">MaxNoOfUniqueHashIndexes</code>
        </p><p>
          Configuration variables no longer used:
          <code class="literal">MaxNoOfIndexes</code> (split into the two above).
        </p></li><li><p>
          In previous versions <code class="literal">ALTER TABLE</code>,
          <code class="literal">TRUNCATE TABLE</code>, and <code class="literal">LOAD
          DATA</code> were performed as one big transaction. In this
          version, all of these statements are automatically separated
          into several distinct transactions.
        </p><p>
          This removes the limitation that one could not change very
          large tables due to the
          <code class="literal">MaxNoOfConcurrentOperations</code> parameter.
        </p></li><li><p>
          MySQL CLuster's online backup feature now backs up indexes so
          that both data and indexes are restored.
        </p></li><li><p>
          In previous versions it was not possible to use
          <code class="literal">NULL</code> in indexes. This is now possible for
          all supported index types.
        </p></li><li><p>
          Much work has been put onto making
          <code class="literal">AUTO_INCREMENT</code> features work as for other
          table handlers. Autoincrements as a partial key is still only
          supported by <code class="literal">MyISAM</code>.
        </p></li><li><p>
          In earlier versions, <span><strong class="command">mysqld</strong></span> would crash if
          the cluster wasn't started with the
          <code class="option">--ndbcluster</code> option. Now
          <span><strong class="command">mysqld</strong></span> handles cluster crashes and starts
          without crashing.
        </p></li><li><p>
          The <code class="literal">-i</code> option for initial startup of
          <span><strong class="command">ndbd</strong></span> has been removed. Initial startup
          still can be specified by using the <code class="option">--initial</code>
          option. The reason for this is to ensure that it is clear what
          takes place when using <code class="option">--initial</code>: this option
          completely removes all data from the disk and should only be
          used at initial start, in certain software upgrade cases, and
          in some cases as a workaround when nodes cannot be restarted
          successfully.
        </p></li><li><p>
          The management client (<span><strong class="command">ndb_mgm</strong></span>) now has
          additional commands and more information is printed for some
          commands such as <code class="literal">show</code>.
        </p></li><li><p>
          In previous versions, the files were called
          <code class="filename">ndb_0..</code> when it wasn't possible to
          allocate a node ID when starting the node. To ensure that
          files are not so easily overwritten, these files are now named
          <code class="filename">ndb_pid..</code>, where pid is the process ID
          assigned by the OS.
        </p></li><li><p>
          The default parameters have changed for
          <span><strong class="command">ndb_mgmd</strong></span> and <span><strong class="command">ndbd</strong></span>. In
          particular, they are now started as daemons by default. The
          <code class="literal">-n</code> option has been removed since it could
          cause confusion as to its meaning (nostart or nodaemon).
        </p></li><li><p>
          In the configuration file, you can now use
          <code class="literal">[NDBD]</code> as an alias for
          <code class="literal">[DB]</code>, <code class="literal">[MYSQLD]</code> as an
          alias for <code class="literal">[API]</code>, and
          <code class="literal">[NDB_MGMD]</code> as an alias for
          <code class="literal">[MGM]</code>.
          <span class="bold"><strong>Note</strong></span>: In fact,
          <code class="literal">[NDBD]</code>, <code class="literal">[MYSQLD]</code>, and
          <code class="literal">[NDB_MGMD]</code> are now the preferred
          designations, although the older ones will continue to be
          supported for some time to come in order to maintain backwards
          compatibility.
        </p></li><li><p>
          Many more checks for consistency in configuration have been
          introduced to in order to provide quicker feedback on
          configuration errors.
        </p></li><li><p>
          In the connect string, it is now possible to use both
          ‘<code class="literal">;</code>’ and
          ‘<code class="literal">,</code>’ as the separator between
          entries. Thus, "nodeid=2,host=localhost:2200" is equivalent to
          "nodeid=2;host=localhost:2200".
        </p><p>
          In the configuration file, it is also possible to use
          ‘<code class="literal">:</code>’ or
          ‘<code class="literal">=</code>’ for assignment values. For
          example, <code class="literal">MaxNoOfOrderedIndexes : 128</code> and
          <code class="literal">MaxNoOfOrderedIndexes = 128</code> are equivalent
          expressions.
        </p></li><li><p>
          The configuration variable names are now case insensitive, so
          <code class="literal">MaxNoOfOrderedIndexes: 128</code> is equivalent to
          <code class="literal">MAXNOOFORDEREDINDEXES = 128</code>.
        </p></li><li><p>
          It is possible now to set the backup directory separately from
          the <code class="literal">FileSystemPath</code> by using the
          <code class="literal">BackupDir</code> configuration variable.
        </p><p>
          Log files and trace files can now be placed in any directory
          by setting the <code class="literal">DataDir</code> configuration
          variable.
        </p><p>
          <code class="literal">FileSystemPath</code> is no longer mandatory and
          defaults to <code class="literal">DataDir</code>.
        </p></li><li><p>
          Queries involving tables from different databases are now
          supported.
        </p></li><li><p>
          It is now possible to update the primary key.
        </p></li><li><p>
          The performance of ordered indexes has been greatly improved,
          particularly the maintenance of indexes on updates, inserts
          and deletes.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Quite a few bugs fixed.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-4"></a>D.2.16. MySQL Cluster-4.1.4 (31 Aug 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          The names of the log files and trace files created by the
          <span><strong class="command">ndbd</strong></span> and <span><strong class="command">ndb_mgmd</strong></span>
          processes have changed.
        </p></li><li><p>
          Support for the many <code class="literal">BLOB</code> data types was
          introduced in this version.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Quite a few bugs were fixed in the 4.1.4 release.
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mysql-cluster-news-4-1-3"></a>D.2.17. MySQL Cluster-4.1.3 (28 Jun 2004)</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          This was the first MySQL Cluster release so all functionality
          was new.
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          Various bugs fixed in the development process leading up to
          4.1.3.
        </p></li></ul></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="myodbc-news"></a>D.3. Changes in MyODBC</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="news.html#myodbc-news-3-51-12">D.3.1. Changes in MyODBC 3.51.12</a></span></dt><dt><span class="section"><a href="news.html#myodbc-news-3-51-11">D.3.2. Changes in MyODBC 3.51.11</a></span></dt></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="myodbc-news-3-51-12"></a>D.3.1. Changes in MyODBC 3.51.12</h3></div></div></div><p>
      Functionality added or changed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          N/A
        </p></li></ul></div><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">SQLColumns()</code> returned no information for
          tables that had a column named using a reserved word. (<a href="http://bugs.mysql.com/9539" target="_top">Bug
          #9539</a>)
        </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="myodbc-news-3-51-11"></a>D.3.2. Changes in MyODBC 3.51.11</h3></div></div></div><p>
      Functionality added or changed: No changes.
    </p><p>
      Bugs fixed:
    </p><div class="itemizedlist"><ul type="disc"><li><p>
          <code class="literal">mysql_list_dbcolumns()</code> and
          <code class="literal">insert_fields()</code> were retrieving all rows
          from a table. Fixed the queries generated by these functions
          to return no rows. (<a href="http://bugs.mysql.com/8198" target="_top">Bug #8198</a>)
        </p></li><li><p>
          <code class="literal">SQLGetTypoInfo()</code> returned
          <code class="literal">tinyblob</code> for
          <code class="literal">SQL_VARBINARY</code> and nothing for
          <code class="literal">SQL_BINARY</code>. Fixed to return
          <code class="literal">varbinary</code> for
          <code class="literal">SQL_VARBINARY</code>, <code class="literal">binary</code>
          for <code class="literal">SQL_BINARY</code>, and
          <code class="literal">longblob</code> for
          <code class="literal">SQL_LONGVARBINARY</code>. (<a href="http://bugs.mysql.com/8138" target="_top">Bug #8138</a>)
        </p></li></ul></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="credits.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="porting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix C. Credits </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix E. Porting to Other Systems</td></tr></table></div></body></html>