<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>< 512</td><td><code class="literal">VARCHAR(<em class="replaceable"><code>max_length</code></em>)</code></td></tr><tr><td>>= 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> > '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 (<constants>)</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">/*></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 >= 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' <= 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"><<a href="mailto:stefano.dipaola@wisec.it">stefano.dipaola@wisec.it</a>></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"><<a href="mailto:stefano.dipaola@wisec.it">stefano.dipaola@wisec.it</a>></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"><<em class="replaceable"><code>col_name</code></em>><em class="replaceable"><code>col_value</code></em></<em class="replaceable"><code>col_name</code></em>></code> to <code class="literal"><field name="<em class="replaceable"><code>col_name</code></em>"><em class="replaceable"><code>col_value</code></em></field></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 < 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>=<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> 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>