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 <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 restore a MySQL Cluster backup between big-endian and little-endian machines. (Bug#19255)
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 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.)
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)
SQL syntax for prepared statements now supports
ANALYZE TABLE
,
OPTIMIZE TABLE
, and
REPAIR TABLE
.
(Bug#19308)
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)
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)
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 allowable 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)
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 DROP
privilege to drop table partitions.
(Bug#17139)
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)
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 following statements now cause an implicit commit:
ANALYZE TABLE
,
CHECK TABLE
,
OPTIMIZE TABLE
, and
REPAIR TABLE
.
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 allowed to change the value if
necessary.
Added the sql_big_selects
system variable to the output of SHOW
VARIABLES
.
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”.
Added the REFERENTIAL_CONSTRAINTS
table to INFORMATION_SCHEMA
. It provides
information about foreign keys.
Added the have_dynamic_loading
system variable that indicates whether the server supports
dynamic loading of plugins.
Added --debug
option to
Instance Manager.
Binary distributions that include SSL support now are built using yaSSL when possible.
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, allowing logging to be bypassed.
(Bug#17667, CVE-2006-0903)
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)
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)
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)
MySQL Cluster:
Concurrent INSERT
and
ROLLBACK
statements from different connections could cause node failures.
(Bug#19245)
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:
Starting mysqld without
--log-bin
caused DDL statements
on NDB
tables to time out.
(Bug#19214)
MySQL Cluster:
(NDBAPI): Passing a nonexistent index name to
NdbIndexScanOperation::setBound()
caused a
segmentation fault.
(Bug#19088)
MySQL Cluster:
mysql-test-run.pl started
NDB
even for test cases that did
not need it.
(Bug#19083)
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)
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:
(Disk Data): CREATE LOGFILE GROUP
accepted
values other than NDB
or
NDBCLUSTER
in the
ENGINE
clause.
(Bug#18604)
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:
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:
A simultaneous DROP TABLE
and
table update operation utilising a table scan could trigger a
node failure.
(Bug#18597)
MySQL Cluster: Fragment IDs were not logged correctly, causing ndb_restore_log to fail. (Bug#18594)
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: 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)
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:
mysqldump included in its output data from
the internal cluster
database.
(Bug#17840)
MySQL Cluster:
Backups could fail for large clusters with many tables, where
the number of tables approached
MaxNoOfTables
.
(Bug#17607)
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:
An issue with ndb_mgmd prevented more than 27
mysqld
processes from connecting to a single
cluster at one time.
(Bug#17150)
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:
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: 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:
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:
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: Uninitialized internal variables could lead to unexpected results. (Bug#11033, Bug#11034)
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.
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)
Cluster Replication: 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:
Issuing a CREATE LOGFILE GROUP
statement
during the drop of an NDB
table
would cause database corruption.
(Bug#19141)
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)
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 Replication:
Trying to restore the apply_status
table from
a 5.0 cluster backup failed on a 5.1 server.
(Bug#18935)
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)
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.
(Bug#19573)view_name
mysql displayed NULL
for
strings that are empty or contain only spaces.
(Bug#19564)
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
An outer join of two views that was written using { OJ
... }
syntax could cause a server crash.
(Bug#19396)
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)
myisamchk and
myisam_ftdump should allow either table names
or .MYI
file names as arguments, but
allowed only table names.
(Bug#19220)
InnoDB
could read a delete mark from its
system tables incorrectly.
(Bug#19217)
Executing a CREATE EVENT
statement could cause 100% CPU usage.
(Bug#19170)
Eliminated some memory corruption problems that resultsd in
double free or corruption
errors and a server
crash.
(Bug#19154)
Attempting to set the default value of an
ENUM
or SET
column to NULL
caused a server crash.
(Bug#19145)
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)
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)
Some fast ALTER TABLE
operations
(requiring no temporary table) did not work for all tables.
(Bug#19011)
Successive ALTER TABLE ... DROP PARTITION
statements on the same subpartitioned table could eventually
cause the server to crash.
(Bug#18962)
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)
The parser leaked memory when its stack needed to be extended. (Bug#18930)
MySQL would not compile on Linux distributions that use the
tinfo
library.
(Bug#18912)
The server attempted to flush uninitialized log tables during
SIGHUP
processing, causing a crash.
(Bug#18848)
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)
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)
Inserts failed with duplicate key errors on a table partitioned
using an AUTO_INCREMENT
column for the
partitioning key.
(Bug#18753, Bug#18552)
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)
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 CHAR UNICODE
string returned an invalid result.
(Bug#18691)
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)
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)
Running an ALTER TABLE
on a
partitioned table simultaneously experiencing a high number of
concurrent DML statements could crash the server.
(Bug#18572)
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)
mysqltest incorrectly interpreted some
ER_
error names
given in the xxx
error
command.
(Bug#18495)
InnoDB
: ALTER
TABLE
to add or drop a foreign key for an
InnoDB
table had no effect.
(Bug#18477)
InnoDB
did not use a consistent read for
CREATE ... SELECT
when
innodb_locks_unsafe_for_binlog
was set.
(Bug#18350)
DROP DATABASE
did not drop stored
routines associated with the database if the database name was
longer than 21 characters.
(Bug#18344)
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)
In mysqltest, --sleep=0
had
no effect. Now it correctly causes sleep
commands in test case files to sleep for 0 seconds.
(Bug#18312)
The ExtractValue()
function did
not return character data within
<![CDATA[]]>
as expected.
(Bug#18285)
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)
Updates to a MEMORY
table caused the size of
BTREE
indexes for the table to increase.
(Bug#18160)
A failed ALTER TABLE
operation
could fail to clean up a temporary .frm
file.
(Bug#18129)
Event-creation statements enclosed in multi-line comments using
/*!
syntax were not parsed correctly.
(Bug#18078)version_number
...
*/
SELECT
DISTINCT
queries sometimes returned only the last row.
(Bug#18068)
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)
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
KEY
.
(Bug#17946)
Executing SELECT
on a large table
that had been compressed within myisampack
could cause a crash.
(Bug#17917)
The sql_big_selects
system
variable was not displayed by SHOW
VARIABLES
.
(Bug#17849)
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)
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.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)
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)
Casting a string to DECIMAL
worked, but casting a trimmed string (using
LTRIM()
or
RTRIM()
) resulted in loss of
decimal digits.
(Bug#17043)
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)
ALTER TABLE ... REBUILD PARTITION
returned an
inaccurate error message.
(Bug#16819)
Use of
--default-storage-engine=innodb
resulted in an error with the server reporting that
InnoDB
was an unknown table type.
(Bug#16691)
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)
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, CONNECTION_ID()
did not return the connection ID of the thread that caused the
trigger to be activated.
(Bug#16461)
The XPath string-length()
function was not
implemented for use with
ExtractValue()
.
(Bug#16319)
The ExtractValue()
function
failed with a syntax error when the XPath expression used
special characters such as Ñ
(“N-tilde”).
(Bug#16233)
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)
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)
After calling FLUSH STATUS
, the
max_used_connections
variable did not
increment for existing connections and connections which use the
thread cache.
(Bug#15933)
DELETE
and
UPDATE
statements that used large
NOT IN
(
clauses could
use large amounts of memory.
(Bug#15872)value_list
)
InnoDB
failure to release an adaptive hash
index latch could cause a server crash if the query cache was
enabled.
(Bug#15758)
LAST_INSERT_ID()
in a stored
function or trigger returned zero. .
(Bug#15728)
The system_time_zone
and
version_*
system variables could not be
accessed via SELECT
@@
syntax.
(Bug#15684, Bug#12792)var_name
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 --with-partition
option.
(Bug#15561)
Use of CONVERT_TZ()
in a view
definition could result in spurious syntax or access errors.
(Bug#15153)
Prevent recursive views caused by using
RENAME TABLE
on a view after
creating it.
(Bug#14308)
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.
(Bug#13621)
Running myisampack followed by
myisamchk with the
--unpack
option would corrupt
the AUTO_INCREMENT
key.
(Bug#12633)
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)
When myisamchk needed to rebuild a table,
AUTO_INCREMENT
information was lost.
(Bug#10405)
User Comments
Add your own comment.