This is a bugfix release for the current MySQL Community Server production release family. It replaces MySQL 5.0.33.
Functionality Added or Changed
Incompatible Change; MySQL Cluster:
configuration parameter has changed its type and possible
false are no longer accepted for this
parameter. If you were using this parameter and had it set to
false in a previous release, you must
change it to
0. If you had this parameter
true, you should instead use
1 to obtain the same behavior as
2 to take advantage of new
functionality introduced with this release, as described in
the section cited above.
function returned a binary string. Now it returns a string with
a character set and collation given by
collation_connection so that it
can return month and weekday names containing non-ASCII
When using a
MERGE table, the definition of
the table and the underlying
are checked each time the tables are opened for access
INSERT statement). Each table is
compared for column order, types, sizes, and associated indexes.
If there is a difference in any one of the tables, the statement
to configure. If configure
is run with this option, the
--init-file options for
mysqld are disabled and cannot be used. For
Windows, the configure.js script recognizes
DISABLE_GRANT_OPTIONS flag, which has the
status variable, which indicates the number of seconds since the
FLUSH STATUS statement.
(Community contribution by Jeremy Cole)
localhost anonymous user account created
during MySQL installation on Windows now has no global
privileges. Formerly this account had all global privileges. For
operations that require global privileges, the
root account can be used instead.
The bundled yaSSL library was upgraded to version 1.5.8.
This is the last version for which MySQL-Max RPM distributions are available. (This change was already made for non-RPM binary distributions in 5.0.27.)
now is enabled by default for binary Mac OS X distributions. Use
of thread priorities degrades performance on Mac OS X.
SHOW PROFILES and
SHOW PROFILE statements to
display statement profile data, and the accompanying
Profiling is controlled using the
variables. see SHOW PROFILES Syntax, and
The INFORMATION_SCHEMA PROFILING Table. (Community contribution by
The profiling feature is enabled using the
to configure. These options are enabled by
default; to disable them, use
INFORMATION_SCHEMA table with
ORDER BY in a subquery could cause a server
We would like to thank Oren Isacson of Flowgate Security Consulting and Stefan Streichsbier of SEC Consult for informing us of this problem. (Bug #24630, Bug #26556, CVE-2007-1420)
ENUM columns that had
enumeration values containing commas, the commas were mapped to
0xff internally. However, this rendered the
commas indistinguishable from true
characters in the values. This no longer occurs. However, the
fix requires that you dump and reload any tables that have
ENUM columns containing any true
0xff values. Dump the tables using
mysqldump with the current server before
upgrading from a version of MySQL 5.0 older than 5.0.36 to
version 5.0.36 or newer.
MySQL Cluster; Partitioning:
A query with an
IN clause against an
NDB table employing explicit
user-defined partitioning did not always return all matching
ndb_size.tmpl file (necessary for using
ndb_size.pl script) was missing from
MySQL Cluster: The management server did not handle logging of node shutdown events correctly in certain cases. (Bug #22013)
MySQL Cluster: In some circumstances, shutting down the cluster could cause connected mysqld processes to crash. (Bug #25668)
When a data node was shut down using the management client
STOP command, a connection event
NDB_LE_Connected) was logged instead of a
disconnection event (
MySQL Cluster: A node shutdown occurred if the master failed during a commit. (Bug #25364)
Memory allocations for
columns were calculated incorrectly, resulting in space being
wasted and other issues.
Creating a nonunique index with the
HASH clause silently created an ordered index instead
of issuing a warning.
MySQL Cluster: Hosts in clusters with large numbers of nodes could experience excessive CPU usage while obtaining configuration data. (Bug #25711)
MySQL Cluster: The failure of a master node during a node restart could lead to a resource leak, causing later node failures. (Bug #25554)
SELECT statements with a
TEXT column in the selected
column list and a
WHERE condition including a
primary key lookup on a
primary key produced empty result sets.
Replication: A stored procedure, executed from a connection using a binary character set, and which wrote multibyte data, would write incorrectly escaped entries to the binary log. This caused syntax errors, and caused replication to fail. (Bug #23619, Bug #24492)
Changes to the
system variable were not replicated.
SET PASSWORD was written to
the binary log, double quotation marks were included in the
statement. If the slave was running in with the server SQL mode
ANSI_QUOTES, then the
event failed, which halted the replication process.
Replication: If a slave server closed its relay log (for example, due to an error during log rotation), the I/O thread did not recognize this and still tried to write to the log, causing a server crash. (Bug #10798)
Cluster API: A unique index lookup on a nonexistent tuple could lead to a data node timeout (error 4012). (Bug #25059)
method using execution type
Commit and abort
AO_IgnoreError could lead to a crash
of the transaction coordinator (
libndbclient.so was not versioned.
Deletion of an
took a very long time.
ON DUPLICATE KEY UPDATE defeated the
usual restriction against inserting into a join-based view
unless only one of the underlying tables is used.
When opening a corrupted
.frm file during a
query, the server crashes.
readline detection did not work correctly on
SSL connections could hang at connection shutdown. (Bug #21781, Bug #24148)
A return value of
-1 from user-defined
handlers was not handled well and could result in conflicts with
Dropping a user-defined function sometimes did not remove the
UDF entry from the
QUICK could sometimes cause one of the affected tables
to become corrupted.
SET lc_time_names = permitted only exact literal values, not expression
If there was insufficient memory to store or update a blob
record in a
MyISAM table then the table will
marked as crashed.
A query with
ORDER BY and
BY clauses where the
clause had more elements than the
clause caused a memory overrun leading to a crash of the server.
The BUILD/check-cpu script did not recognize Celeron processors. (Bug #20061)
Accessing a fixed record format table with a crashed key definition results in server/myisamchk segmentation fault. (Bug #24855)
View definitions that used the
were treated as containing the
which has a different precedence and can produce different
The row count for
MyISAM tables was not
updated properly, causing
STATUS to report incorrect values.
GROUP BY and
NULL values for columns that have a
UNIQUE index. .
readline library wrote to uninitialized
memory, causing mysql to crash.
CASE statements inside
stored routines could lead to excessive resource usage or a
crash of the server.
(Bug #19194, Bug #24854)
WITH CHECK OPTION clause for views was
ignored for updates of multiple-table views when the updates
could not be performed on fly and the rows to update had to be
put into temporary tables first.
An assertion failed incorrectly for prepared statements that
contained a single-row uncorrelated subquery that was used as an
argument of the
IS NULL predicate.
If a prepared statement accessed a view, access to the tables listed in the query after that view was checked in the security context of the view. (Bug #24404)
UNIQUE index containing many
NULL values, the optimizer would prefer the
conditions over other more selective indexes. .
When updating a table that used a
JOIN of the
table itself (for example, when building trees) and the table
was modified on one side of the expression, the table would
either be reported as crashed or the wrong rows in the table
would be updated.
A yaSSL program named test was installed, causing conflicts with the test system utility. It is no longer installed. (Bug #25417)
Referencing an ambiguous column alias in an expression in the
ORDER BY clause of a query caused the server
DISTINCT queries that were executed using a
loose scan for an
InnoDB table that had been
emptied caused a server crash.
STDDEV() function returned a
positive value for data sets consisting of a single value.
No warning was issued for use of the
INDEX DIRECTORY table
options on a platform that does not support them.
Some queries against
used subqueries failed. .
ORDER BY or
could yield different results when selecting from a view and
selecting from the underlying table.
A view was not handled correctly if the
SELECT part contained
SELECT ... FOR
... LOCK IN SHARE MODE,
UPDATE statements executed using
a full table scan were not releasing locks on rows that did not
mysqldump --order-by-primary failed if the primary key name was an identifier that required quoting. (Bug #13926)
The internal functions for table preparation, creation, and
alteration were not re-execution friendly, causing problems in
code that: repeatedly altered a table; repeatedly created and
dropped a table; opened and closed a cursor on a table, altered
the table, and then reopened the cursor; used
ALTER TABLE to change a table's
AUTO_INCREMENT value; created indexes
CREATE TABLE, and
ALTER TABLE statements in stored
routines or as prepared statements also caused incorrect results
(Bug #4968, Bug #6895, Bug #19182, Bug #19733, Bug #22060, Bug #24879)
SHOW COLUMNS reported some
NOT NULL columns as
The presence of
ORDER BY in a view definition
MERGE algorithm from being used
to resolve the view even if nothing else in the definition
UPDATE statements were
slower than in previous versions when the search key could not
be converted to a valid value for the type of the search column.
Inserting a row into a table without specifying a value for a
column caused the column to be set to spaces, not zeros.
N) NOT NULL
ORDER BY or
list included a constant expression being optimized away and, at
the same time, containing single-row subselects that returned
more that one row, no error was reported. If a query required
sorting by expressions containing single-row subselects that
returned more than one row, execution of the query could cause a
Type conversion errors during formation of index search conditions were not correctly checked, leading to incorrect query results. (Bug #22344)
FEDERATED storage engine did not support
utf8 character set.
mysql_stmt_fetch() did an
invalid memory deallocation when used with the embedded server.
Some joins in which one of the joined tables was a view could return erroneous results or crash the server. (Bug #24345)
DEFAULT into a column with no
default value could result in garbage in the column. Now the
same result occurs as when inserting
NOT NULL column.
INFILE did not work with pipes.
ALTER TABLE ... ENABLE KEYS acquired a global
lock, preventing concurrent execution of other statements that
use tables. .
A query using
cause the server to crash.
unsigned_column NOT IN
Using a view in combination with a
clause caused column aliases to be ignored.
When a prepared statement failed during the prepare operation, the error code was not cleared when it was reused, even if the subsequent use was successful. (Bug #15518)
When reading from the standard input on Windows, mysqlbinlog opened the input in text mode rather than binary mode and consequently misinterpreted some characters such as Control+Z. (Bug #23735)
AFTER UPDATE trigger on an
InnoDB table with a composite primary key
caused the server to crash.
FETCH statement using a cursor
on a table which was not in the table cache could sometimes
cause the server to crash.
LEFT JOIN comparisons could be
evaluated incorrectly, leading to improper query results.
A crash of the MySQL Server could occur when unpacking a
BLOB column from a row in a
corrupted MyISAM table. This could happen when trying to repair
a table using either
or myisamchk; it could also happen when
trying to access such a “broken” row using
SELECT if the
table was not marked as crashed.
Queries that evaluate
NULL IN (SELECT ... UNION SELECT
...) could produce an incorrect result
FALSE instead of
mysqlaccess looked for option files in
/etc even if the
--sysconfdir option for
configure had been given to specify a
MyISAM table that became
corrupted could crash myisamchk and possibly
the MySQL Server.
An error in the name resolution of nested
USING constructs was corrected.
mysql_upgrade failed when called with a
--basedir path name
NULL value to a user-defined
function from within a stored procedure crashes the server.
mysqltest incorrectly tried to retrieve result sets for some queries where no result set was available. (Bug #19410)
If there was insufficient memory available to mysqld, this could sometimes cause the server to hang during startup. (Bug #24751)
If a duplicate key value was present in the table,
ON DUPLICATE KEY UPDATE reported a row count
indicating that a record was updated, even when no record
actually changed due to the old and new values being the same.
Now it reports a row count of zero.
References: See also Bug #27006, Bug #27033, Bug #27210.
yaSSL was sensitive to the presence of whitespace at the ends of lines in PEM-encoded certificates, causing a server crash. (Bug #25189)
On Windows, if the server was installed as a service, it did not auto-detect the location of the data directory. (Bug #20376)
mysqld_error.h was not installed when only
the client libraries were built.
Attempts to access a
MyISAM table with a
corrupt column definition caused a server crash.
InnoDB parser sometimes did not account
for null bytes, causing spurious failure of some queries.
To enable installation of MySQL RPMs on Linux systems running RHEL 4 (which includes SE-Linux) additional information was provided to specify some actions that are permitted to the MySQL binaries. (Bug #12676)
The optimizer removes expressions from
DISTINCT clauses if they
happen to participate in
WHERE clause, the idea being that, if the
expression is equal to a constant, then it cannot take on
multiple values. However, for predicates where the expression
and the constant item are of different result types (for
example, when a string column is compared to 0), this is not
valid, and can lead to invalid results in such cases. The
optimizer now performs an additional check of the result types
of the expression and the constant; if their types differ, then
the expression is not removed from the
Optimizations that are legal only for subqueries without tables
WHERE conditions were applied for any
subquery without tables.
mysqltest crashed with a stack overflow. (Bug #24498)
Instance Manager could crash during shutdown. (Bug #19044)
mysql_kill() caused a server
crash when used on an SSL connection.
Within a stored routine, accessing a declared routine variable
PROCEDURE ANALYSE() caused a server
On Windows, the
could sleep too long, especially after a change to the system
(Bug #14094, Bug #24686, Bug #17635)
Use of already freed memory caused SSL connections to hang forever. (Bug #19209)
A stored routine containing semicolon in its body could not be reloaded from a dump of a binary log. (Bug #20396)
Storing values specified as hexadecimal values 64 or more bits
UNSIGNED columns did not raise any warning or error if
the value was out of range.
Within stored routines or prepared statements, inconsistent
results occurred with multiple use of
INSERT ... SELECT
... ON DUPLICATE KEY UPDATE when the
DUPLICATE KEY UPDATE clause erroneously tried to
assign a value to a column mentioned only in its
Expressions of the form
(a, b) IN (SELECT c, d
...) could produce incorrect results if
b, or both were
The number of
setsockopt() calls performed
for reads and writes to the network socket was reduced to
decrease system call overhead.
Changing the value of
myisam.h and recompiling MySQL resulted in
a myisamchk that saw existing
MyISAM tables as corrupt.
ALTER TABLE, using
could cause a
server crash. Now the
ORDER BY clause permits
only column names to be specified as sort criteria (which was
the only documented syntax, anyway).
Hebrew-to-Unicode conversion failed for some characters. Definitions for the following Hebrew characters (as specified by the ISO/IEC 8859-8:1999) were added: LEFT-TO-RIGHT MARK (LRM), RIGHT-TO-LEFT MARK (RLM) (Bug #24037)
User-defined variables could consume excess memory, leading to a
crash caused by the exhaustion of resources available to the
MEMORY storage engine, due to the fact that
this engine is used by MySQL for variable storage and
intermediate results of
GROUP BY queries.
been used, such a condition could instead give rise to the
misleading error message You may only use constant
expressions with SET, rather than Out of
memory (Needed NNNNNN bytes).
mysql.server stop timed out too quickly (35 seconds) waiting for the server to exit. Now it waits up to 15 minutes, to ensure that the server exits. (Bug #25341)
Expressions of the form
(a, b) IN (SELECT a, MIN(b)
FROM t GROUP BY a) could produce incorrect results
a of table
NULL values while column
b did not.
InnoDB: During a restart of the MySQL Server
that followed the creation of a temporary table using the
InnoDB storage engine, MySQL failed to clean
up in such a way that
InnoDB still attempted
to find the files associated with such tables.
A workaround was implemented to avoid a race condition in the
--with-readline option for
configure did not work for commercial source
packages, but no error message was printed to that effect. Now a
message is printed.
perror crashed on some platforms due to
failure to handle a
The server might fail to use an appropriate index for
LIMIT, and a nonrestricting
WHERE are present.
FEDERATED storage engine did not support
euckr character set.