List:Announcements« Previous MessageNext Message »
From:Joerg Bruehe Date:April 22 2006 8:46am
Subject:MySQL 5.0.20a has been released
View as plain text  

MySQL 5.0.20a, a new version of the popular Open Source Database
Management System, has been released. The Community Edition is now
available in source and binary form for a number of platforms from our
download pages at and mirror sites.

Note that not all mirror sites may be up to date at this point in time -
if you can't find this version on some mirror, please try again later or
choose another download site.

This is a bugfix release for the current production release family.
It replaces 5.0.20, published last week.
For the benefit of all those who did not download and install, I repeat
the 5.0.20 news in this announcement, while mentioning the differences
between 5.0.20 and 5.0.20a in a separate paragraph.

Please refer to our bug database at for more
details about the individual bugs fixed in this version.

This section documents all changes and bug fixes that have been applied
since the last official MySQL release. If you would like to receive
more fine-grained and personalised update alerts about fixes that are
relevant to the version and features you use, please consider
subscribing to MySQL Network (a commercial MySQL offering). For more
details please see

We welcome and appreciate your feedback!

Changes from 5.0.20 to 5.0.20a:
   * The fix for "Command line options are ignored for mysql client"
     (Bug #16855 ( has been revoked,
     because it had introduced an incompatible change in the way the
     command line client ("mysql") selects the server to connect to.
     In the worst case, this might have led to a client issuing commands
     to a server for which they were not intended, and this must not
     To help all users in understanding this subject, the manual now
     includes additional explanations in the section
     "4.2. Invoking MySQL Programs"
   * The code of the "yaSSL" library has been improved to avoid the
     dependency on a C++ runtime library, so a link with pure C
     applications is now possible on further (but not all) platforms.
     We are trying to fix the remaining issues.

Additional information about SSL support:
   * With version 5.0.20a, SSL support is contained in all binaries for
     all Unix (including Linux) and Windows platforms except AIX, HP-UX,
     OpenServer 6, and the RPMs specific for RHAS3/RHAS4/SLES9 on Itanium
     CPUs ("ia64"); it is also not contained in those for Novell Netware.
     We are trying to add these platforms in future versions.
   * Please note that the original 5.0.20 announcement included inexact
     wording, I am sorry for that and hope it did not cause too many
     SSL support is "included" in both server and client, but by default
     not "enabled" - this can be done by passing the SSL-related options
     ("--ssl --ssl-key=... --ssl-cert=... --ssl-ca=...")
     when starting the server and the client or by setting these options
     in the config file.
     More information is in section "5.9.7. Using Secure Connections"
     of the manual.

Functionality added or changed in 5.0.20, but missing in previous
   * Added the --sysdate-is-now option to mysqld to enable SYSDATE() to
     be treated as an alias for NOW(). See Section 12.5, "Date and Time
     Functions." (Bug#15101 (
   * Large file support added to build for QNX platform.
     (Bug#17336 (
   * Large file support was re-enabled for the MySQL server binary for
     the AIX 5.2 platform. (Bug#13571 (, also
     listed as fixed Bug#10776 (

Bugs fixed in 5.0.20, but missing in previous announcement:
   * If the WHERE condition of a query contained an OR-ed FALSE term,
     the set of tables whose rows cannot serve for null-complements in
     outer joins was determined incorrectly. This resulted in blocking
     possible conversions of outer joins into joins by the optimizer for
     such queries. (Bug#17164 (
   * mysql_config returned incorrect libraries on x86_64 systems.
     (Bug#13158 (
   * Stored routine names longer than 64 characters were silently
     truncated. Now the limit is properly enforced and an error occurs.
     (Bug#17015 (
   * During conversion from one character set to ucs2, multi-byte
     characters with no ucs2 equivalent were converted to multiple
     characters, rather than to 0x003F QUESTION MARK.
     (Bug#15375 (
   * The mysql_close() C API function leaked handles for shared-memory
     connections on Windows. (Bug#15846 (
   * If InnoDB ran out of buffer space for row locks and adaptive hashes,
     the server would crash. Now InnoDB rolls back the transaction.
     (Bug#18238 (
   * InnoDB tables with an adaptive hash blocked other queries during
     CHECK TABLE statements while the entire hash was checked. This could
     be a long time for a large hash.
     (Bug#17126 (
   * For InnoDB tables created in MySQL 4.1 or earlier, or created in 5.0
     or later with compact format, updating a row so that a long column
     is updated or the length of some column changes, InnoDB later would
     fail to reclaim the BLOB storage space if the row was deleted.
     (Bug#18252 (
   * InnoDB had a memory leak for duplicate-key errors with tables having
     90 columns or more. (Bug#18384 (

Functionality added or changed in 5.0.20:
   * InnoDB: The InnoDB storage engine now provides a descriptive error
     message if ibdata file information is omitted from my.cnf.
     (Bug #16827 (
   * The NDBCluster storage engine now supports INSERT IGNORE and REPLACE
     statements. Previously, these statements failed with an error.
     (Bug #17431 (
   * Builds for Windows, Linux, and Unix (except AIX) platforms now have
     SSL support enabled, in the server as well as in the client
     libraries. Because part of the SSL code is written in C++, this does
     introduce dependencies on the system's C++ runtime libraries in
     several cases, depending on compiler specifics.
     (Bug #18195 (
   * The syntax for CREATE PROCEDURE and CREATE FUNCTION statements now
     includes a DEFINER clause. The DEFINER value specifies the security
     context to be used when checking access privileges at routine
     invocation time if the routine has the SQL SECURITY DEFINER
     characteristic. See Section 17.2.1, "CREATE PROCEDURE and CREATE
     FUNCTION Syntax," for more information.
     When mysqldump is invoked with the --routines option, it now dumps
     the DEFINER value for stored routines.

Functionality added already in 5.0.19 (and documented),
repeated here just as a reminder:
   * Added the mysql_upgrade program that checks all tables for
     incompatibilities with the current version of MySQL Server and
     repairs them if necessary. This program should be run for each MySQL
     upgrade (rather than mysql_fix_privilege_tables). See Section 5.6.2,
     "mysql_upgrade --- Check Tables for MySQL Upgrade."

Bugs fixed in 5.0.20:
   * Security Fix: Checks for permissions on database operations could
     be performed in a case-insensitive manner (a user with permissions
     on database MYDATABASE could by accident get permissions on database
     myDataBase), if the privilege data were still cached from a previous
     check. (Bug #17279 (
   * InnoDB: The LATEST FOREIGN KEY ERROR section in the output of SHOW
     INNODB STATUS was sometimes formatted incorrectly, causing problems
     with scripts that parsed the output of this statement.
     (Bug #16814 (
   * When using ORDER BY with a non-string column inside GROUP_CONCAT()
     the result's character set was converted to binary.
     (Bug #18281 (
     See also Bug #14169 (
   * SELECT ... WHERE column LIKE 'A%' when column had a key and used the
     latin2_czech_cs collation.
     (Bug #17374 (
   * Complex queries with nested joins could cause a server crash.
     (Bug #18279 (
   * The server could deadlock under heavy load while writing to the
     binary log. (Bug #18116 (
   * A SELECT ... ORDER BY ... from a view defined using a function could
     crash the server. An example of such a view might be CREATE VIEW AS
     SELECT SQRT(c1) FROM t1. (Bug #18386 (
   * A DELETE using a subquery could crash the server.
     (Bug #18306 (
     transactional tables (or on tables of any type on Windows)
     could corrupt triggers associated with those tables.
     (Bug #18153 (
   * MyISAM: Performing a bulk insert on a table referenced by a trigger
     would crash the table. (Bug #17764 (
     Several bugs were marked as duplicates:
     Bug #16021, Bug #16074, and BUG #17704.
   * MyISAM: Keys for which the first part of the key was a CHAR or
     VARCHAR column using the UTF-8 character set and longer than 254
     bytes could become corrupted.
     (Bug #17705 (
   * Using ORDER BY intvar within a stored procedure (where intvar is an
     integer variable or expression) would crash the server.
     (Bug #16474 (
     Note: The use of an integer i in an ORDER BY i clause for sorting
     the result by the i^th column is deprecated (and non-standard). It
     should not be used in new applications. See Section 13.2.7, "SELECT
   * Triggers created in MySQL 5.0.16 and earlier could not be dropped
     after upgrading the server to 5.0.17 or later.
     (Bug #15921 (
   * A SELECT using a function against a nested view would crash the
     server. (Bug #15683 (
   * NDB Cluster: Certain queries using ORDER BY ... ASC in the WHERE
     clause could return incorrect results.
     (Bug #17729 (
   * NDB Cluster: A timeout in the handling of an ABORT condition with
     more that 32 operations could yield a node failure.
     (Bug #18414 (
   * NDB Cluster: A node restart immediately following a CREATE TABLE
     would fail. Important: This fix supports 2-node Clusters only.
     (Bug #18385 (
   * NDB Cluster: In event of a node failure during a rollback, a "false"
     lock could be established on the backup for that node, which lock
     could not be removed without restarting the node.
     (Bug #18352 (
   * NDB Cluster: The cluster created a crashed replica of a table having
     an ordered index --- or when logging was not enabled, of a table
     having a table or unique index --- leading to a crash of the cluster
     following 8 successibe restarts.
     (Bug #18298 (
   * NDB Cluster: When replacing a failed master node, the replacement
     node could cause the cluster to crash from a buffer overflow if it
     had an excessively large amount of data to write to the cluster log.
     (Bug #18118 (
   * NDB Cluster: If a mysql or other client could not parse the result
     set returned from a mysqld process acting as an SQL node in a
     cluster, the client would crash instead of returning the appropriate
     error. For example, this could happen when the client attempted to
     use a character set was not available to the mysqld.
     (Bug #17380 (
   * NDB Cluster: Restarting nodes were allowed to start and join the
     cluster too early. (Bug #16772 (
   * If a row was inserted inside a stored procedure using the parameters
     passed to the procedure in the INSERT statement, the resulting
     binlog entry was not escaped properly.
     (Bug #18293 (
   * If InnoDB encountered a HA_ERR_LOCK_TABLE_FULL error and rolled-back
     a transaction, the transaction was still written to the binary log.
     (Bug #18283 (
   * Stored procedures that call UDFs and pass local string variables
     caused server crashes. (Bug #17261 (
   * Connecting to a server with a UCS2 default character set with a
     client using a non-UCS2 character set crashed the server.
     (Bug #18004 (
   * Loading of UDFs in a statically linked MySQL caused a server crash.
     UDF loading is now blocked if the MySQL server is statically linked.
     (Bug #11835 (
   * Views that incorporate tables from the INFORMATION_SCHEMA resulted
     in a server crash when queried.
     (Bug #18224 (
   * A SELECT * query on an INFORMATION_SCHEMA table by a user with
     limited privileges resulted in a server crash.
     (Bug #18113 (
   * Attempting to access an InnoDB table after starting the server with
     --skip-innodb caused a server crash.
     (Bug #14575 (
   * InnoDB used table locks (not row locks) within stored functions.
     (Bug #18077 (
   * Replication slaves could not replicate triggers from older servers
     that included no DEFINER clause in the trigger definition. Now the
     trigger executes with the privileges of the invoker (which on the
     slave is the slave SQL thread).
     (Bug #16266 (
   * Character set conversion of string constants for UNION of constant
     and table column was not done when it was safe to do so.
     (Bug #15949 (
   * The DEFINER value for stored routines was not replicated.
     (Bug #15963 (
   * Use of stored functions with DISTINCT or GROUP BY can produce
     incorrect results when ORDER BY is also used.
     (Bug #13575 (
   * Use of TRUNCATE TABLE for a TEMPORARY table on a master server was
     propagated to slaves properly, but slaves did not decrement the
     Slave_open_temp_tables counter properly.
     (Bug #17137 (
   * SELECT COUNT(*) for a MyISAM table could return different results
     depending on whether an index was used.
     (Bug #14980 (
   * A LEFT JOIN with a UNION that selects literal values could crash the
     server. (Bug #17366 (
   * Large file support did not work in AIX server binaries.
     (Bug #10776 (
   * Updating a view that filters certain rows to set a filtered out row
     to be included in the table caused infinite loop. For example, if
     the view has a WHERE clause of salary > 100 then issuing an UPDATE
     statement of SET salary = 200 WHERE id = 10, caused an infinite
     loop. (Bug #17726 (
   * Certain combinations of joins with mixed ON and USING clauses caused
     unknown column errors. (Bug #15229 (
   * NDB Cluster: Inserting and deleting BLOB column values while a
     backup was in process could cause the loss of an ndbd node.
     (Bug #14028 (
   * If the server was started with the --skip-grant-tables option, it
     was impossible to create a trigger or a view without explicitly
     specifying a DEFINER clause.
     (Bug #16777 (
   * COUNT(DISTINCT col1, col2) and COUNT(DISTINCT CONCAT(col1, col2))
     operations produced different results if one of the columns was an
     indexed DECIMAL column. (Bug #15745 (
   * The server displayed garbage in the error message warning about bad
     assignments to DECIMAL columns or routine variables.
     (Bug #15480 (
   * The server would execute stored routines that had a non-existent
     definer. (Bug #13198 (
   * For FEDERATED tables, a SELECT statement with an ORDER BY clause did
     not return rows in the proper order.
     (Bug #17377 (
   * The FORMAT() function returned an incorrect result when the client's
     character_set_connection value was utf8.
     (Bug #16678 (
   * NDB Cluster: Some query cache statistics were not always correctly
     reported for Cluster tables.
     (Bug #16795 (
   * Updating the value of a Unicode VARCHAR column with the result
     returned by a stored function would cause the insertion of ASCII
     characters into the column instead of Unicode, even where the
     function's return type was also declared as Unicode.
     (Bug #17615 (



Joerg Bruehe, Senior Production Engineer

MySQL 5.0.20a has been releasedJoerg Bruehe22 Apr