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 xxxerror 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.