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 <stefano.dipaola@wisec.it>
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
Security Enhancement:
Added the global
max_prepared_stmt_count system
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
prepared_stmt_count system
variable.
(Bug #16365)
MySQL Cluster:
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
--basedir or
--character-sets-dir options.
(Previously in MySQL 5.1, ndbd searched only
the default path for character sets.)
MySQL Cluster:
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
running ndbd --initial on
all configured data nodes.
(Bug #18606)
MySQL Cluster: It is now possible to restore a MySQL Cluster backup between big-endian and little-endian machines. (Bug #19255)
Packaging:
The
MySQL-shared-compat-5.1.
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 X-.i386.rpmsoname number. They now
contain libraries for MySQL 3.23, 4.0, 4.1, and 5.1.
(Bug #19288)
Binary distributions that include SSL support now are built using yaSSL when possible.
You must now have the DROP
privilege to drop table partitions.
(Bug #17139)
Added --debug option to
Instance Manager.
Added the have_dynamic_loading
system variable that indicates whether the server supports
dynamic loading of plugins.
On Windows, some names such as nul,
prn, and 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
appending @@@ to the name when the server
creates the corresponding file or directory. This occurs on all
platforms for portability of the corresponding database object
between platforms.
(Bug #17870)
XPath expressions passed to the
ExtractValue() and
UpdateXML() functions can now
include the colon character
(“:”). This enables use of these
functions with XML which employs namespaces.
(Bug #18170)
Added the REFERENTIAL_CONSTRAINTS
table to INFORMATION_SCHEMA. It provides
information about foreign keys.
Server and clients ignored the --sysconfdir
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.
(Bug #15069)
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.
Added the sql_big_selects
system variable to the output of SHOW
VARIABLES.
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.)
(Bug #13601)
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug #17737)
The ONLY_FULL_GROUP_BY SQL
mode now also applies to the HAVING clause.
That is, columns not named in the GROUP BY
clause cannot be used in the HAVING clause if
not used in an aggregate function.
(Bug #18739)
Added the KEY_BLOCK_SIZE table option and
index option. This can be used in CREATE
TABLE, 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
necessary.
SQL syntax for prepared statements now supports
ANALYZE TABLE,
OPTIMIZE TABLE, and
REPAIR TABLE.
(Bug #19308)
The following statements now cause an implicit commit:
ANALYZE TABLE,
CHECK TABLE,
OPTIMIZE TABLE, and
REPAIR TABLE.
Bugs Fixed
Security Fix:
A 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)
Security Fix:
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 <stefano.dipaola@wisec.it> for
finding and reporting this bug.
(CVE-2006-1516, CVE-2006-1517)
Security Fix:
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
Paola <stefano.dipaola@wisec.it> for finding and
reporting this bug.
(CVE-2006-1518)
MySQL Cluster; Replication: (Replication): Delete and update of rows in a table without a primary key failed on the slave. (Bug #17400)
MySQL Cluster:
Repeated use of the SHOW and
ALL STATUS commands in the
ndb_mgm client could cause the
mgmd process to crash.
(Bug #18591)
MySQL Cluster:
In a 2-node cluster with a node failure, restarting the node
with a low value for
StartPartialTimeout
could cause the cluster to come up partitioned
(“split-brain” issue).
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:
(Disk Data): CREATE LOGFILE GROUP
accepted values other than NDB or
NDBCLUSTER in the
ENGINE clause.
(Bug #18604)
MySQL Cluster:
A simultaneous DROP TABLE and
table update operation utilising a table scan could trigger a
node failure.
(Bug #18597)
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)
MySQL Cluster:
(Disk Data): Running an INSERT
and a DELETE on a Disk Data table
in the same transaction could cause a deadlock.
(Bug #19244)
MySQL Cluster:
mysqldump included in its output data from
the internal cluster database.
(Bug #17840)
MySQL Cluster:
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.
(Bug #15530)
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:
Queries using ORDER BY failed against a pkN
LIST-partitioned
Cluster table having a multi-column primary key, where
pkN represents one of the columns
making up the primary key.
(Bug #18598)
MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug #18550)
MySQL Cluster:
Performing multiple ALTER TABLE
operations on the same NDB table
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
mysqld processes.
(Bug #16445)
MySQL Cluster:
(Disk Data): Omitting the required ENGINE
clause from a CREATE LOGFILE
GROUP or CREATE
TABLESPACE statement caused the server to crash. An
appropriate error message is now returned instead.
(Bug #18603)
MySQL Cluster:
When attempting to create an index on a
BIT or
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)
MySQL Cluster:
mysql-test-run.pl started
NDB even for test cases that did
not need it.
(Bug #19083)
MySQL Cluster:
Starting mysqld without
--log-bin caused DDL statements
on NDB tables to time out.
(Bug #19214)
MySQL Cluster:
An INSERT or
UPDATE of more than 128 bytes of
data in a 4-replica cluster could cause data nodes to crash.
(Bug #18622)
MySQL Cluster: ndb_restore failed to restore a backup made from a 5.0 cluster to a 5.1 cluster. (Bug #18210)
MySQL Cluster:
Some queries having a WHERE clause of the
form c1=val1 OR c2 LIKE 'val2' were not
evaluated correctly.
(Bug #17421)
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)
MySQL Cluster:
Backups could fail for large clusters with many tables, where
the number of tables approached
MaxNoOfTables.
(Bug #17607)
MySQL Cluster:
An issue with ndb_mgmd prevented more than 27
mysqld processes from connecting to a single
cluster at one time.
(Bug #17150)
MySQL Cluster:
Unused open handlers for tables in which the metadata had
changed were not properly closed. This could result in stale
results from NDB tables following
an ALTER TABLE statement.
(Bug #13228)
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:
Concurrent INSERT and
ROLLBACK
statements from different connections could cause node failures.
(Bug #19245)
MySQL Cluster:
A SELECT from an
NDB table with ORDER BY
and a
indexed_column LIMIT clause would fail following
ALTER TABLE.
(Bug #18094)
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)
Replication:
CREATE VIEW statements would not
be replicated to the slave if the
--replicate-wild-ignore-table
rule was enabled.
(Bug #18715)
Replication:
Updating a field value when also requesting a lock with
GET_LOCK() would cause slave
servers in a replication environment to terminate.
(Bug #17284)
Replication:
The binary log would create an incorrect DROP
query when creating temporary tables during replication.
(Bug #17263)
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)
Disk Data:
Issuing a CREATE LOGFILE GROUP
statement during the drop of an NDB
table would cause database corruption.
(Bug #19141)
Cluster Replication:
Trying to restore the apply_status table from
a 5.0 cluster backup failed on a 5.1 server.
(Bug #18935)
Cluster Replication:
Using the --binlog-do-db option
caused problems with CREATE TABLE
on the cluster acting as the replication master.
(Bug #19492)
Cluster Replication:
When taking part in Cluster replication of tables containing
BLOB columns,
mysqld falsely reported a large memory leak
in the replication buffers when there was none.
(Bug #19247)
Cluster API:
Passing a nonexistent index name to
NdbIndexScanOperation::setBound()
caused a segmentation fault.
(Bug #19088)
Running myisampack followed by
myisamchk with the
--unpack option would corrupt
the AUTO_INCREMENT key.
(Bug #12633)
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.
(Bug #19573)view_name
The ExtractValue() function
failed with a syntax error when the XPath expression used
special characters such as Ñ
(“N-tilde”).
(Bug #16233)
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)
The sql_big_selects system
variable was not displayed by SHOW
VARIABLES.
(Bug #17849)
Conversion of a number to a CHAR UNICODE
string returned an invalid result.
(Bug #18691)
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)
Running an ALTER TABLE on a
partitioned table simultaneously experiencing a high number of
concurrent DML statements could crash the server.
(Bug #18572)
Inserts failed with duplicate key errors on a table partitioned
using an AUTO_INCREMENT column for the
partitioning key.
(Bug #18753, Bug #18552)
mysqltest incorrectly interpreted some
ER_ error names
given in the xxxerror command.
(Bug #18495)
If the second or third argument to
BETWEEN was a constant expression
such as '2005-09-01 - INTERVAL 6 MONTH and
the other two arguments were columns,
BETWEEN was evaluated incorrectly.
(Bug #18618)
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 --with-partition
option.
(Bug #15561)
LOAD DATA FROM MASTER would fail when trying
to load the INFORMATION_SCHEMA database from
the master, because the INFORMATION_SCHEMA
system database would already exist on the slave.
(Bug #18607)
InnoDB failure to release an adaptive hash
index latch could cause a server crash if the query cache was
enabled.
(Bug #15758)
Some fast ALTER TABLE operations
(requiring no temporary table) did not work for all tables.
(Bug #19011)
After calling FLUSH STATUS, the
max_used_connections variable did not
increment for existing connections and connections which use the
thread cache.
(Bug #15933)
The parser leaked memory when its stack needed to be extended. (Bug #18930)
A LOCK TABLES statement that
failed could cause MyISAM not to update table
statistics properly, causing a subsequent
CHECK TABLE to report table
corruption.
(Bug #18544)
For single-SELECT union
constructs of the form (SELECT ... ORDER BY
order_list1 [LIMIT
n]) ORDER BY
order_list2, the ORDER
BY lists were concatenated and the
LIMIT clause was ignored.
(Bug #18767)
An outer join of two views that was written using { OJ
... } syntax could cause a server crash.
(Bug #19396)
InnoDB: A
DELETE followed by an
INSERT and then by an
UPDATE on a partitioned
InnoDB table caused subsequent queries to
return incorrect results.
(Bug #17992)
Use of CONVERT_TZ() in a view
definition could result in spurious syntax or access errors.
(Bug #15153)
Use of CONVERT_TZ() in a stored
function or trigger (or in a stored procedure called from a
stored function or trigger) caused an error.
(Bug #11081)
Eliminated some memory corruption problems that resultsd in
double free or corruption errors and a server
crash.
(Bug #19154)
Logging to the mysql.general_log and
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.
(Bug #17368)
InnoDB did not use a consistent read for
CREATE ... SELECT when
innodb_locks_unsafe_for_binlog
was set.
(Bug #18350)
If the first argument to BETWEEN
was a DATE or
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
incorrect evaluation.
(Bug #16069)
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 myisam-block-size
value (for example, with
--key_cache_block_size=1536 and
--myisam-block-size=1024).
(Bug #19079)
InnoDB could read a delete mark from its
system tables incorrectly.
(Bug #19217)
In mysqltest, --sleep=0 had
no effect. Now it correctly causes sleep
commands in test case files to sleep for 0 seconds.
(Bug #18312)
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)
The XPath string-length() function was not
implemented for use with
ExtractValue().
(Bug #16319)
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.
(Bug #20048)
Prevent recursive views caused by using
RENAME TABLE on a view after
creating it.
(Bug #14308)
MyISAM table deadlock was possible if one
thread issued a LOCK TABLES
request for write locks and then an administrative statement
such as OPTIMIZE TABLE, if
between the two statements another client meanwhile issued a
multiple-table SELECT for some of
the locked tables.
(Bug #16986)
Executing a CREATE EVENT
statement could cause 100% CPU usage.
(Bug #19170)
Casting a string to DECIMAL
worked, but casting a trimmed string (using
LTRIM() or
RTRIM()) resulted in loss of
decimal digits.
(Bug #17043)
InnoDB: ALTER
TABLE to add or drop a foreign key for an
InnoDB table had no effect.
(Bug #18477)
LAST_INSERT_ID() in a stored
function or trigger returned zero. .
(Bug #15728)
SELECT
DISTINCT queries sometimes returned only the last row.
(Bug #18068)
The server attempted to flush uninitialized log tables during
SIGHUP processing, causing a crash.
(Bug #18848)
Attempting to set the default value of an
ENUM or
SET column to
NULL caused a server crash.
(Bug #19145)
Event-creation statements enclosed in multi-line comments using
/*! syntax were not parsed correctly.
(Bug #18078)version_number ...
*/
The sql_notes and
sql_warnings system variables
were not always displayed correctly by SHOW
VARIABLES (for example, they were displayed as
ON after being set to
OFF).
(Bug #16195)
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.
(Bug #16819)
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 would not compile on Linux distributions that use the
tinfo library.
(Bug #18912)
Avoid trying to include
<asm/atomic.h> when it doesn't work
in C++ code.
(Bug #13621)
DROP DATABASE did not drop stored
routines associated with the database if the database name was
longer than 21 characters.
(Bug #18344)
Executing SELECT on a large table
that had been compressed within myisampack
could cause a crash.
(Bug #17917)
Updates to a MEMORY table caused the size of
BTREE indexes for the table to increase.
(Bug #18160)
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.
(Bug #18787)
A recent change caused the mysql client not
to display NULL values correctly and to
display numeric columns left-justified rather than
right-justified. The problems have been corrected.
(Bug #18265)
The ExtractValue() function did
not return character data within
<![CDATA[]]> as expected.
(Bug #18285)
mysql displayed NULL for
strings that are empty or contain only spaces.
(Bug #19564)
DELETE and
UPDATE statements that used large
NOT IN
( clauses could
use large amounts of memory.
(Bug #15872)value_list)
It was possible to create a RANGE-partitioned
table with a partition defined using the clause VALUES
LESS THAN (NULL), even though such a partition could
never contain any values whatsoever.
(Bug #18752)
A failed ALTER TABLE operation
could fail to clean up a temporary .frm
file.
(Bug #18129)
myisamchk and
myisam_ftdump should permit either table
names or .MYI file names as arguments, but
permitted only table names.
(Bug #19220)
Use of
--default-storage-engine=innodb
resulted in an error with the server reporting that
InnoDB was an unknown table type.
(Bug #16691)
LIKE searches failed on a
CHAR column used as the
partitioning column of a table partitioned by
KEY.
(Bug #17946)
Creating a table in an InnoDB database with a
column name that matched the name of an internal
InnoDB column (including
DB_ROW_ID, DB_TRX_ID,
DB_ROLL_PTR and DB_MIX_ID)
would cause a crash. MySQL now returns Error 1005
Cannot create table with
errno set to -1.
(Bug #18934)
Within a trigger, CONNECTION_ID()
did not return the connection ID of the thread that caused the
trigger to be activated.
(Bug #16461)
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)
REPAIR TABLE did not restore the
length for packed keys in tables created under MySQL 4.x, which
caused them to appear corrupt to CHECK
TABLE but not to REPAIR
TABLE.
(Bug #17810)
Successive ALTER TABLE ... DROP PARTITION
statements on the same subpartitioned table could eventually
cause the server to crash.
(Bug #18962)
MySQL-shared-compat-5.1.9-0.i386.rpm
incorrectly depended on glibc 2.3 and could
not be installed on a glibc 2.2 system.
(Bug #16539)
Selecting from a view that used GROUP BY on a
nonconstant temporal interval (such as
DATE(
could cause a server crash.
(Bug #19490)col) + INTERVAL
TIME_TO_SEC(col) SECOND
When myisamchk needed to rebuild a table,
AUTO_INCREMENT information was lost.
(Bug #10405)
The system_time_zone and
version_* system variables could not be
accessed using SELECT
@@ syntax.
(Bug #15684, Bug #12792)var_name
