This is a bugfix release for the current production release family.
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 personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details, please see (http://www.mysql.com/products/enterprise).
This MySQL 5.0.21 release includes the patches for recently
reported security vulnerabilites in the MySQL client/server
protocol. We would like to thank Stefano Di Paola
<firstname.lastname@example.org> for finding and
reporting these to us.
Functionality Added or Changed
Added the global
variable to limit the total number of prepared statements in the
server. This limits the potential for denial-of-service attacks
based on running the server out of memory by preparing huge
numbers of statements. The current number of prepared statements
is available through the
It is now possible to perform a partial start of a cluster. That
is, it is now possible to bring up the cluster without first
all configured data nodes.
It is now possible to install MySQL with Cluster support to a
nondefault location and change the search path for font
description files using either the
(Previously in MySQL 5.0, ndbd searched only
the default path for character sets.)
--nowait-nodes startup option for
ndbd, making it possible to skip specified
nodes without waiting for them to start when starting the
cluster. See ndbd — The MySQL Cluster Data Node Daemon.
shared compatibility RPMs no longer contain libraries for MySQL
5.1. This avoids a conflict because the 5.0 and 5.1 libraries
share the same soname number. They now contain libraries for
MySQL 3.23, 4.0, 4.1, and 5.0 only.
The default for the
system variable was changed to
Server and clients ignored the
option that was passed to configure. The
directory specified by this option, if set, now is used as one
of the standard locations in which to look for option files.
In result set metadata, the
MYSQL_FIELD.length value for
BIT columns now is reported in
number of bits. For example, the value for a
BIT(9) column is 9. (Formerly, the value was
related to number of bytes.)
Invalid arguments to
DATE_FORMAT() caused a server
crash. Thanks to Jean-David Maillefer for discovering and
reporting this problem to the Debian project and to Christian
Hammers from the Debian Team for notifying us of it.
(Bug #20729, CVE-2006-3469)
A malicious client, using specially crafted invalid
COM_TABLE_DUMP packets was able to trigger an
exploitable buffer overflow on the server. Thanks to Stefano Di
<email@example.com> for finding and
reporting this bug.
A malicious client, using specially crafted invalid login or
COM_TABLE_DUMP packets was able to read
uninitialized memory, which potentially, though unlikely in
MySQL, could have led to an information disclosure. (, ) Thanks
to Stefano Di Paola
finding and reporting this bug.
DROP TABLE and
table update operation utilising a table scan could trigger a
MySQL Cluster: When multiple node restarts were attempted without permitting each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug #18349)
In a 2-node cluster with a node failure, restarting the node
with a low value for
could cause the cluster to come up partitioned
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug #16447, Bug #18612)
MySQL Cluster: On systems with multiple network interfaces, data nodes would get “stuck” in startup phase 2 if the interface connecting them to the management server was working on node startup while the interface interconnecting the data nodes experienced a temporary outage. (Bug #15695)
On slow networks or CPUs, the management client
SHOW command could sometimes
erroneously show all data nodes as being master nodes belonging
to nodegroup 0.
TRUNCATE TABLE did not reset the
AUTO_INCREMENT counter for
MyISAM tables when issued inside a stored
This bug did not affect
References: See also Bug #18864.
Unused open handlers for tables in which the metadata had
changed were not properly closed. This could result in stale
NDB tables following
ALTER TABLE statement.
MySQL Cluster: Uninitialized internal variables could lead to unexpected results. (Bug #11033, Bug #11034)
When attempting to create an index on a
BLOB column, Error
743: Unsupported character set in table or index was
returned instead of Error 906: Unsupported attribute
type in index.
Updating a field value when also requesting a lock with
GET_LOCK() would cause slave
servers in a replication environment to terminate.
InnoDB could read a delete mark from its
system tables incorrectly.
Corrected a syntax error in mysql-test-run.sh. (Bug #19190)
Index corruption could occur in cases when
key_cache_block_size was not a
multiple of the
value (for example, with
The optimizer could cause a server crash or use a nonoptimal
subset of indexes when evaluating whether to use
Merge/Intersection variant of
DBUG_RETURN() caused the server
to emit a spurious error message:
or DBUG_VOID_RETURN macro in function "open_table".
Creating a table in an
InnoDB database with a
column name that matched the name of an internal
InnoDB column (including
would cause a crash. MySQL now returns Error 1005
Cannot create table with
errno set to -1.
MySQL would not compile on Linux distributions that use the
mysql_reconnect() sent a
NAMES statement to the server, even for pre-4.1
servers that do not understand the statement.
For a reference to a nonexistent stored function in a stored
routine that had a
CONTINUE handler, the
server continued as though a useful result had been returned,
possibly resulting in a server crash.
constructs of the form (SELECT ... ORDER BY
n]) ORDER BY
BY lists were concatenated and the
LIMIT clause was ignored.
Conversion of a number to a
string returned an invalid result.
The yaSSL library returned a cipher list in a manner incompatible with OpenSSL. (Bug #18399)
InnoDB did not use a consistent read for
CREATE ... SELECT when
DROP DATABASE did not drop stored
routines associated with the database if the database name was
longer than 21 characters.
The euro sign (
€) was not stored
correctly in columns using the
A recent change caused the mysql client not
NULL values correctly and to
display numeric columns left-justified rather than
right-justified. The problems have been corrected.
COUNT(*) on a
MyISAM table could return different results
for the base table and a view on the base table.
SELECT on a large table
that had been compressed within myisampack
could cause a crash.
mysql-test-run could not be run as
Queries of the form
did not return
all matching rows.
IA-64 RPM packages for Red Hat and SuSE Linux that were built with the icc compiler incorrectly depended on icc runtime libraries. (Bug #16662)
incorrectly depended on
glibc 2.3 and could
not be installed on a
glibc 2.2 system.
The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug #16504)
Within a trigger,
did not return the connection ID of the thread that caused the
trigger to be activated.
For tables created in a MySQL 4.1 installation upgraded to MySQL 5.0 and up, multiple-table updates could update only the first matching row. (Bug #16281)
A query using WHERE (
value_2)[, (..., ...), ...]) would
return incorrect results.
For mysql.server, if the
basedir option was specified after
datadir in an option file, the setting for
datadir was ignored and assumed to be located
If the first argument to
TIME column of a view and the
other arguments were constants,
BETWEEN did not perform conversion
of the constants to the appropriate temporary type, resulting in
FLUSH STATUS, the
max_used_connections variable did not
increment for existing connections and connections which use the
Lettercase in database name qualifiers was not consistently
handled properly in queries when
lower_case_table_names was set
InnoDB failure to release an adaptive hash
index latch could cause a server crash if the query cache was
LAST_INSERT_ID() in a stored
function or trigger returned zero. .
When running a query that contained a
), the result was
NULL except in
ROLLUP part of the result, if there was
CONVERT_TZ() in a view
definition could result in spurious syntax or access errors.
CAST( for large
double values outside the signed
integer range truncated the result to be within range, but the
result sometimes had the wrong sign, and no warning was
InnoDB tables, an expression of the form
when used in a join
returned incorrect results.
col_name2 - INTERVAL
x DAY AND
col_name2 + INTERVAL
Prevent recursive views caused by using
RENAME TABLE on a view after
INSERT DELAYED into a view caused
an infinite loop.
Avoid trying to include
<asm/atomic.h> when it doesn't work
in C++ code.
Within stored routines, user names were parsed incorrectly if they were enclosed within quotation marks. (Bug #13310)
The server was always built as though
had been specified.