This MySQL 5.0.21 release 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 is a bugfix release for the current production release family.
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 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:
Added the --nowait-nodes
startup option for
ndbd, making it possible to skip specified
nodes without waiting for them to start when starting the
cluster. See Section 17.4.2, “ndbd — The MySQL Cluster Data Node Daemon”.
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.0, ndbd searched only
the default path for character sets.)
Packaging:
The
MySQL-shared-compat-5.0.
shared compatibility RPMs no longer contain libraries for MySQL
5.1. 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.0 only.
(Bug#19288)X
-.i386.rpm
The default for the
innodb_thread_concurrency
system variable was changed to 8
.
(Bug#15868)
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)
Bugs fixed:
Security Fix:
Invalid arguments to
DATE_FORMAT()
caused a server
crash. Thanks to Jean-David Maillefer for discovering and
reporting this problem to the Debian project and to Christian
Hammers from the Debian Team for notifying us of it.
(Bug#20729, CVE-2006-3469)
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:
A simultaneous DROP TABLE
and
table update operation utilising a table scan could trigger a
node failure.
(Bug#18597)
MySQL Cluster: When multiple node restarts were attempted without allowing each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug#18349)
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: 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:
TRUNCATE TABLE
did not reset the
AUTO_INCREMENT
counter for
MyISAM
tables when issued inside a stored
procedure.
This bug did not affect InnoDB
tables.
In addition, TRUNCATE TABLE
does not reset the AUTO_INCREMENT
counter
for NDB
tables regardless of when
it is called.
See also Bug#18864.
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.
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)
InnoDB
could read a delete mark from its
system tables incorrectly.
(Bug#19217)
Corrected a syntax error in mysql-test-run.sh. (Bug#19190)
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)
The optimizer could cause a server crash or use a nonoptimal
subset of indexes when evaluating whether to use Index
Merge/Intersection
variant of
index_merge
optimization.
(Bug#19021)
A missing DBUG_RETURN()
caused the server
to emit a spurious error message: missing DBUG_RETURN
or DBUG_VOID_RETURN macro in function "open_table"
.
(Bug#18964)
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)
MySQL would not compile on Linux distributions that use the
tinfo
library.
(Bug#18912)
mysql_reconnect()
sent a SET
NAMES
statement to the server, even for pre-4.1
servers that do not understand the statement.
(Bug#18830)
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)
Conversion of a number to a CHAR UNICODE
string returned an invalid result.
(Bug#18691)
UNCOMPRESS(NULL)
could cause
subsequent UNCOMPRESS()
calls to
return NULL
for legal
non-NULL
arguments.
(Bug#18643)
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)
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)
The yaSSL library returned a cipher list in a manner incompatible with OpenSSL. (Bug#18399)
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)
The euro sign (€
) was not stored
correctly in columns using the
latin1_german1_ci
or
latin1_general_ci
collation.
(Bug#18321)
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)
COUNT(*)
on a
MyISAM
table could return different results
for the base table and a view on the base table.
(Bug#18237)
EXTRACT(QUARTER FROM
returned unexpected
results.
(Bug#18100)date
)
Executing SELECT
on a large table
that had been compressed within myisampack
could cause a crash.
(Bug#17917)
Casting a string to DECIMAL
worked, but casting a trimmed string (using
LTRIM()
or
RTRIM()
) resulted in loss of
decimal digits.
(Bug#17043)
mysql-test-run could not be run as
root
.
(Bug#17002)
Queries of the form SELECT DISTINCT
did not return
all matching rows.
(Bug#16710)timestamp_column
WHERE
date_function
(timestamp_col
)
= constant
IA-64 RPM packages for Red Hat and SuSE Linux that were built with the icc compiler incorrectly depended on icc runtime libraries. (Bug#16662)
MySQL-shared-compat-5.0.13-0.i386.rpm
,
MySQL-shared-compat-5.0.15-0.i386.rpm
,
MySQL-shared-compat-5.0.18-0.i386.rpm
,
MySQL-shared-compat-5.0.19-0.i386.rpm
,
MySQL-shared-compat-5.0.20-0.i386.rpm
, and
MySQL-shared-compat-5.0.20a-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)
For tables created in a MySQL 4.1 installation upgraded to MySQL 5.0 and up, multiple-table updates could update only the first matching row. (Bug#16281)
A query using WHERE (column_1
,
column_2
) IN
((value_1
,
value_2
)[, (..., ...), ...]) would
return incorrect results.
(Bug#16248)
For mysql.server, if the
basedir
option was specified after
datadir
in an option file, the setting for
datadir
was ignored and assumed to be located
under basedir
.
(Bug#16240)
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)
Lettercase in database name qualifiers was not consistently
handled properly in queries when
lower_case_table_names
was set
to 1.
(Bug#15917)
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)
DELETE
with LEFT
JOIN
for InnoDB
tables could crash
the server if
innodb_locks_unsafe_for_binlog
was enabled.
(Bug#15650)
When running a query that contained a
GROUP_CONCAT(SELECT GROUP_CONCAT(...)
)
, the result was NULL
except in
the ROLLUP
part of the result, if there was
one.
(Bug#15560)
Use of CONVERT_TZ()
in a view
definition could result in spurious syntax or access errors.
(Bug#15153)
CAST(
for large
double
AS
SIGNED INT)double
values outside the signed
integer range truncated the result to be within range, but the
result sometimes had the wrong sign, and no warning was
generated.
(Bug#15098)
For InnoDB
tables, an expression of the form
when used in a join
returned incorrect results.
(Bug#14360)col_name
BETWEEN
col_name2
- INTERVAL
x
DAY AND
col_name2
+ INTERVAL
x
DAY
Prevent recursive views caused by using
RENAME TABLE
on a view after
creating it.
(Bug#14308)
INSERT DELAYED
into a view caused
an infinite loop.
(Bug#13683)
Avoid trying to include
<asm/atomic.h>
when it doesn't work
in C++ code.
(Bug#13621)
Within stored routines, user names were parsed incorrectly if they were enclosed within quotes. (Bug#13310)
The server was always built as though
--with-extra-charsets=complex
had been specified.
(Bug#12076)
User Comments
Add your own comment.