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
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 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
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug #17737)
You must now have the
privilege to drop table partitions.
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.)
system variable that indicates whether the server supports
dynamic loading of plugins.
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.
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
INFORMATION_SCHEMA. It provides
information about foreign keys.
Binary distributions that include SSL support now are built using yaSSL when possible.
--debug option to
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
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.
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)
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)
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)
MySQL Cluster: mysqld could crash when attempting an update if the cluster had failed previously. (Bug #18798)
(Disk Data): Omitting the required
clause from a
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.
DROP TABLE and
table update operation utilising a table scan could trigger a
MySQL Cluster: Fragment IDs were not logged correctly, causing ndb_restore_log to fail. (Bug #18594)
Repeated use of the
ALL STATUS commands in the
ndb_mgm client could cause the
mgmd process to crash.
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)
mysqldump included in its output data from
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
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug #16447, Bug #18612)
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)
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.
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.
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)
When taking part in Cluster replication of tables containing
mysqld falsely reported a large memory leak
in the replication buffers when there was none.
Trying to restore the
apply_status table from
a 5.0 cluster backup failed on a 5.1 server.
Passing a nonexistent index name to
caused a segmentation fault.
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.
Some outer joins were incorrectly converted to inner joins. (Bug #19816)
References: This bug 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.
strings that are empty or contain only spaces.
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.
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)
myisam_ftdump should permit either table
.MYI file names as arguments, but
permitted only table names.
InnoDB could read a delete mark from its
system tables incorrectly.
statement could cause 100% CPU usage.
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 operations
(requiring no temporary table) did not work for all tables.
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.
constructs of the form (SELECT ... ORDER BY
n]) ORDER BY
BY lists were concatenated and the
LIMIT clause was ignored.
Inserts failed with duplicate key errors on a table partitioned
AUTO_INCREMENT column for the
(Bug #18753, Bug #18552)
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 permitted characters. (Bug #18750)
Conversion of a number to a
string returned an invalid result.
LOAD DATA FROM MASTER failed when trying to
INFORMATION_SCHEMA database from the
master, because the
database would already exist on the slave.
ALTER TABLE on a
partitioned table simultaneously experiencing a high number of
concurrent DML statements could crash the server.
mysqltest incorrectly interpreted some
ER_ error names
given in the
TABLE to add or drop a foreign key for an
InnoDB table had no effect.
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.
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)
no effect. Now it correctly causes
commands in test case files to sleep for 0 seconds.
ExtractValue() function did
not return character data within
<![CDATA]> as expected.
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.
Updates to a
MEMORY table caused the size of
BTREE indexes for the table to increase.
ALTER TABLE operation
could fail to clean up a temporary
Event-creation statements enclosed in multi-line comments using
/*! syntax were not parsed correctly.
DISTINCT queries sometimes returned only the last row.
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)
LIKE searches failed on a
CHAR column used as the
partitioning column of a table partitioned by
SELECT on a large table
that had been compressed within myisampack
could cause a crash.
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)
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.
resulted in an error with the server reporting that
InnoDB was an unknown table type.
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.
string-length() function was not
implemented for use with
failed with a syntax error when the XPath expression used
special characters such as
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
LAST_INSERT_ID() in a stored
function or trigger returned zero. .
version_* system variables could not be
(Bug #15684, Bug #12792)
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
CONVERT_TZ() in a view
definition could result in spurious syntax or access errors.
Prevent recursive views caused by using
RENAME TABLE on a view after
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.
Running myisampack followed by
myisamchk with the
--unpack option would corrupt
CONVERT_TZ() in a stored
function or trigger (or in a stored procedure called from a
stored function or trigger) caused an error.
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost.