This was an internal release only, and no binaries were published.
MySQL 5.1.10 includes the patches for recently reported security
vulnerabilities in the MySQL client/server protocol. We would like
to thank Stefano Di Paola
for finding and reporting these to us.
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.
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 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.1, ndbd searched only
the default path for character sets.)
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.
MySQL Cluster: It is now possible to restore a MySQL Cluster backup between big-endian and little-endian machines. (Bug #19255)
shared compatibility RPMs no longer contain libraries for MySQL
5.0. 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.1.
Binary distributions that include SSL support now are built using yaSSL when possible.
You must now have the
privilege to drop table partitions.
--debug option to
system variable that indicates whether the server supports
dynamic loading of plugins.
On Windows, some names such as
aux could not be
used as file names because they are reserved as device names.
These are now permissible names in MySQL. They are encoded by
@@@ to the name when the server
creates the corresponding file or directory. This occurs on all
platforms for portability of the corresponding database object
INFORMATION_SCHEMA. It provides
information about foreign keys.
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.
The mysql_upgrade command has been converted from a shell script to a C program, so it is available on non-Unix systems such as Windows. This program should be run for each MySQL upgrade. See mysql_upgrade — Check and Upgrade MySQL Tables.
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.)
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug #17737)
mode now also applies to the
That is, columns not named in the
clause cannot be used in the
HAVING clause if
not used in an aggregate function.
KEY_BLOCK_SIZE table option and
index option. This can be used in
ALTER TABLE, and
CREATE INDEX statements to
provide a hint to the storage engine about the size to use for
index key blocks. The engine is permitted to change the value if
NUL byte within a comment in a statement
string caused the rest of the string not to be written to the
query log, permitting logging to be bypassed.
(Bug #17667, CVE-2006-0903)
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.
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.
MySQL Cluster; Replication: (Replication): Delete and update of rows in a table without a primary key failed on the slave. (Bug #17400)
Repeated use of the
ALL STATUS commands in the
ndb_mgm client could cause the
mgmd process to crash.
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)
DROP TABLE and
table update operation utilising a table scan could trigger a
MySQL Cluster: A 5.1.6 or newer server did not read local checkpoints recorded by any other 5.1 version, thus preventing a system restart following an upgrade. (Bug #19333)
MySQL Cluster: Uninitialized internal variables could lead to unexpected results. (Bug #11033, Bug #11034)
mysqldump included in its output data from
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.
MySQL Cluster: The Cluster binlog mysqld accepted updates even though the binary log was not set up, which could lead to updates missing from the binary log. (Bug #18932)
ORDER BY failed against a
Cluster table having a multi-column primary key, where
pkN represents one of the columns
making up the primary key.
MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug #18550)
operations on the same
from different mysqld processes in the same
cluster led to schema versioning errors when trying to access
the table again following the restart of one of the
(Disk Data): Omitting the required
clause from a
TABLESPACE statement caused the server to crash. An
appropriate error message is now returned instead.
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.
MySQL Cluster: Stopping multiple nodes could cause node failure handling not to be completed. (Bug #19039)
NDB even for test cases that did
not need it.
MySQL Cluster: ndb_restore failed to restore a backup made from a 5.0 cluster to a 5.1 cluster. (Bug #18210)
Some queries having a
WHERE clause of the
c1=val1 OR c2 LIKE 'val2' were not
MySQL Cluster: mysqld could crash when attempting an update if the cluster had failed previously. (Bug #18798)
MySQL Cluster: Fragment IDs were not logged correctly, causing ndb_restore_log to fail. (Bug #18594)
Backups could fail for large clusters with many tables, where
the number of tables approached
An issue with ndb_mgmd prevented more than 27
mysqld processes from connecting to a single
cluster at one time.
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: 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)
MySQL Cluster: Adding an index to an unsigned integer column did not work correctly. (Bug #18133)
Partitioning; Cluster Replication: Attempting to create an index using multiple columns on an explicitly partitioned table in a replicated Cluster database could cause the master mysqld process to crash. (Bug #18284)
Replication; Cluster Replication: An issue with replication caused a mysqld connected to a replicated cluster to crash when entering single user mode. (Bug #18535)
Updating a field value when also requesting a lock with
GET_LOCK() would cause slave
servers in a replication environment to terminate.
The binary log would create an incorrect
query when creating temporary tables during replication.
Disk Data: Concurrent table schema operations and operations on log file groups, tablespaces, data files, or undo files could lead to data node failures. (Bug #18575)
Trying to restore the
apply_status table from
a 5.0 cluster backup failed on a 5.1 server.
When taking part in Cluster replication of tables containing
mysqld falsely reported a large memory leak
in the replication buffers when there was none.
Passing a nonexistent index name to
caused a segmentation fault.
Running myisampack followed by
myisamchk with the
--unpack option would corrupt
A view definition that referred to an alias in the
HAVING clause could be saved in the
.frm file with the alias replaced by the
expression that it referred to, causing failure of subsequent
SELECT * FROM statements.
failed with a syntax error when the XPath expression used
special characters such as
Delimited identifiers for partitions were not being treated the same as delimited identifiers for other database objects (such as tables and columns) with regard to permitted characters. (Bug #18750)
Conversion of a number to a
string returned an invalid result.
Instance Manager now finds the version numbers, so that it works properly when the executable name isn't the same as what the Instance Manager launched (such as when wrapping a libtool-wrapped executable from the source tree). (Bug #19059)
ALTER TABLE on a
partitioned table simultaneously experiencing a high number of
concurrent DML statements could crash the server.
Inserts failed with duplicate key errors on a table partitioned
AUTO_INCREMENT column for the
(Bug #18753, Bug #18552)
mysqltest incorrectly interpreted some
ER_ error names
given in the
An issue with file handling in the partitioning code could cause mysqld to crash when started and then stopped within a very short period of time. (Bug #19313)
If the server were built without partition support, it was
possible to run partitioning-related statements with no errors
or warnings, even though these statements would have no effect.
Now such statements are not permitted unless the server has been
compiled using the
LOAD DATA FROM MASTER would fail when trying
to load the
INFORMATION_SCHEMA database from
the master, because the
system database would already exist on the slave.
InnoDB failure to release an adaptive hash
index latch could cause a server crash if the query cache was
ALTER TABLE operations
(requiring no temporary table) did not work for all tables.
FLUSH STATUS, the
max_used_connections variable did not
increment for existing connections and connections which use the
The parser leaked memory when its stack needed to be extended. (Bug #18930)
constructs of the form (SELECT ... ORDER BY
n]) ORDER BY
BY lists were concatenated and the
LIMIT clause was ignored.
An outer join of two views that was written using
... } syntax could cause a server crash.
CONVERT_TZ() in a view
definition could result in spurious syntax or access errors.
CONVERT_TZ() in a stored
function or trigger (or in a stored procedure called from a
stored function or trigger) caused an error.
Eliminated some memory corruption problems that resultsd in
double free or corruption errors and a server
Logging to the
mysql.slow_log tables did not work for
Windows builds because the
CSV storage engine
was unavailable. The
CSV engine now is
enabled in Windows builds.
InnoDB did not use a consistent read for
CREATE ... SELECT when
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
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)
Some outer joins were incorrectly converted to inner joins. (Bug #19816)
References: This bug was introduced by Bug #17146.
Index corruption could occur in cases when
key_cache_block_size was not a
multiple of the
value (for example, with
InnoDB could read a delete mark from its
system tables incorrectly.
no effect. Now it correctly causes
commands in test case files to sleep for 0 seconds.
It was possible to use trailing spaces in the names of partitions and subpartitions. Attempting to do so now raises the error Incorrect partition name. (Bug #17973)
string-length() function was not
implemented for use with
A compatibility issue with NPTL (Native POSIX Thread Library) on
Linux could result in a deadlock with
FLUSH TABLES WITH READ
LOCK under some conditions.
Prevent recursive views caused by using
RENAME TABLE on a view after
MyISAM table deadlock was possible if one
thread issued a
request for write locks and then an administrative statement
OPTIMIZE TABLE, if
between the two statements another client meanwhile issued a
SELECT for some of
the locked tables.
statement could cause 100% CPU usage.
TABLE to add or drop a foreign key for an
InnoDB table had no effect.
LAST_INSERT_ID() in a stored
function or trigger returned zero. .
DISTINCT queries sometimes returned only the last row.
The server attempted to flush uninitialized log tables during
SIGHUP processing, causing a crash.
Event-creation statements enclosed in multi-line comments using
/*! syntax were not parsed correctly.
A query on a table partitioned or subpartitioned by
HASH did not display all results when using a
WHERE condition involving a column used in
the hashing expression.
(Bug #18329, Bug #18423)
ALTER TABLE ... REBUILD PARTITION returned an
inaccurate error message.
WHERE condition of a query contained
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.
MySQL would not compile on Linux distributions that use the
Avoid trying to include
<asm/atomic.h> when it doesn't work
in C++ code.
DROP DATABASE did not drop stored
routines associated with the database if the database name was
longer than 21 characters.
SELECT on a large table
that had been compressed within myisampack
could cause a crash.
Updates to a
MEMORY table caused the size of
BTREE indexes for the table to increase.
A range access optimizer heuristic was invalid, causing some queries to be much slower in MySQL 5.0 than in 4.0. (Bug #17379, Bug #18940)
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.
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.
ExtractValue() function did
not return character data within
<![CDATA]> as expected.
strings that are empty or contain only spaces.
It was possible to create a
table with a partition defined using the clause
LESS THAN (NULL), even though such a partition could
never contain any values whatsoever.
ALTER TABLE operation
could fail to clean up a temporary
myisam_ftdump should permit either table
.MYI file names as arguments, but
permitted only table names.
resulted in an error with the server reporting that
InnoDB was an unknown table type.
LIKE searches failed on a
CHAR column used as the
partitioning column of a table partitioned by
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.
Within a trigger,
did not return the connection ID of the thread that caused the
trigger to be activated.
Some queries were slower in 5.0 than in 4.1 because some 4.1 cost-evaluation code had not been merged into 5.0. (Bug #14292)
ALTER TABLE ... DROP PARTITION
statements on the same subpartitioned table could eventually
cause the server to crash.
incorrectly depended on
glibc 2.3 and could
not be installed on a
glibc 2.2 system.
Selecting from a view that used
GROUP BY on a
nonconstant temporal interval (such as
could cause a server crash.
col) + INTERVAL
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost.
version_* system variables could not be
(Bug #15684, Bug #12792)