This was an internal release only, and no binaries were published.
MySQL 5.1.10 includes the patches for recently reported security
vulnerabilites 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
MySQL Cluster: It is now possible to restore a MySQL Cluster backup between big-endian and little-endian machines. (Bug#19255)
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.1, ndbd searched only
the default path for character sets.)
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.
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.
On Windows, some names such as
aux could not be
used as file names because they are reserved as device names.
These are now allowable 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
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug#17737)
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.)
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 allowed to change the value if
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 Section 4.4.8, “mysql_upgrade — Check Tables for MySQL Upgrade”.
INFORMATION_SCHEMA. It provides
information about foreign keys.
system variable that indicates whether the server supports
dynamic loading of plugins.
--debug option to
Binary distributions that include SSL support now are built using yaSSL when possible.
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
<firstname.lastname@example.org> 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.
MySQL Cluster: Replication: (Replication): Delete and update of rows in a table without a primary key failed on the slave. (Bug#17400)
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)
(NDBAPI): Passing a nonexistent index name to
NdbIndexScanOperation::setBound() caused a
NDB even for test cases that did
not need it.
MySQL Cluster: Stopping multiple nodes could cause node failure handling not to be completed. (Bug#19039)
CREATE LOGFILE GROUP accepted
values other than
NDBCLUSTER in the
(Disk Data): Omitting the required
clause from a
CREATE LOGFILE GROUP or
CREATE TABLESPACE statement caused the server
to crash. An appropriate error message is now returned instead.
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: Fragment IDs were not logged correctly, causing ndb_restore_log to fail. (Bug#18594)
MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug#18550)
MySQL Cluster: ndb_restore failed to restore a backup made from a 5.0 cluster to a 5.1 cluster. (Bug#18210)
MySQL Cluster: Adding an index to an unsigned integer column did not work correctly. (Bug#18133)
Backups could fail for large clusters with many tables, where
the number of tables approached
Some queries having a
WHERE clause of the
c1=val1 OR c2 LIKE 'val2' were not
An issue with ndb_mgmd prevented more than 27
mysqld processes from connecting to a single
cluster at one time.
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
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
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)
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.
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.
Cluster Replication: Partitioning: 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)
The binary log would create an incorrect
query when creating temporary tables during replication.
CREATE LOGFILE GROUP statement
during the drop of an
would cause database corruption.
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.
Some outer joins were incorrectly converted to inner joins. (Bug#19816)
This regression was introduced by Bug#17146.
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.
Selecting from a view that used
GROUP BY on a
nonconstant temporal interval (such as
could cause a server crash.
col) + INTERVAL
An outer join of two views that was written using
... } syntax could cause a server crash.
InnoDB could read a delete mark from its
system tables incorrectly.
Eliminated some memory corruption problems that resultsd in
double free or corruption errors and a server
Index corruption could occur in cases when
key_cache_block_size was not a
multiple of the
value (for example, with
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 ... DROP PARTITION
statements on the same subpartitioned table could eventually
cause the server to crash.
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.
The parser leaked memory when its stack needed to be extended. (Bug#18930)
MySQL would not compile on Linux distributions that use the
The server attempted to flush uninitialized log tables during
SIGHUP processing, causing a crash.
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.
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.
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 allowed characters. (Bug#18750)
Conversion of a number to a
string returned an invalid result.
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.
mysqltest incorrectly interpreted some
ER_ error names
given in the
no effect. Now it correctly causes
commands in test case files to sleep for 0 seconds.
Updates to a
MEMORY table caused the size of
BTREE indexes for the table to increase.
Event-creation statements enclosed in multi-line comments using
/*! syntax were not parsed correctly.
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)
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.
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.
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.
ALTER TABLE ... REBUILD PARTITION returned an
inaccurate error message.
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)
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
InnoDB failure to release an adaptive hash
index latch could cause a server crash if the query cache was
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 disallowed unless the server has been
compiled using the
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)
Avoid trying to include
<asm/atomic.h> when it doesn't work
in C++ code.