This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.
This section documents all changes and bugfixes that have been applied since the last MySQL Enterprise Server release (5.0.58). 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/advisors.html.
Functionality Added or Changed
mysqld and other binaries now are compiled
with debugging symbols included to enable easier use with a
debugger. If you do not need debugging symbols and are short on
disk space, you can use strip to remove the
symbols from the binaries.
Security Fix; Important Change:
It was possible to circumvent privileges through the creation of
MyISAM tables employing the
options to overwrite existing table files in the MySQL data
directory. Use of the MySQL data directory in
INDEX DIRECTORY path
name is no longer permitted.
Additional fixes were made in MySQL 5.0.70.
(Bug #32167, CVE-2008-2079)
References: See also Bug #39277.
It was possible to use
FRAC_SECOND as a
INTERVAL; now, using
FRAC_SECOND with anything other than
TIMESTAMPDIFF() produces a syntax
The server handled truncation of values having excess trailing
TEXT columns in different ways.
This behavior has now been made consistent for columns of all
three of these types, and now follows the existing behavior of
VARCHAR columns in this regard;
that is, a
Note is always issued whenever
such truncation occurs.
This change does not affect columns of these three types when
using a binary encoding;
columns are also unaffected by the change, since they always use
a binary encoding.
When a stored routine or trigger, running on a master that used
MySQL 5.0 or MySQL 5.1.11 or earlier, performed an insert on an
AUTO_INCREMENT column, the
insert_id value was not
replicated correctly to a slave running MySQL 5.1.12 or later
(including any MySQL 6.0 release).
References: See also Bug #19630.
insert_id was not written to
the binary log for inserts into
Replication: The character sets and collations used for constant identifiers in stored procedures were not replicated correctly. (Bug #34289)
statement was written to the binary log by a connection that did
not use any transactional tables.
PURGE BINARY LOGS TO and
BINARY LOGS BEFORE did not handle missing binary log
files correctly or in the same way. Now for both of these
statements, if any files listed in the
.index file are missing from the file
system, the statement fails with an error.
(Bug #18199, Bug #18453)
START SLAVE UNTIL
issued on a slave that was using
--log-slave-updates and that was
involved in circular replication would cause the slave to run
and stop one event later than that specified by the value of
The nonspecific error message Wrong parameters to
function register_slave resulted when
START SLAVE failed to register on
the master due to excess length of any the slave server options
--report-password. An error
message specific to each of these options is now returned in
such cases. The new error messages are:
Failed to register slave: too long 'report-host'
Failed to register slave: too long 'report-user'
Failed to register slave; too long 'report-password'
References: See also Bug #19328.
MASTER_POS_WAIT() did not return
NULL when the server was not a slave.
STOP SLAVE did not stop
connection attempts properly. If the I/O slave thread was
attempting to connect,
waited for the attempt to finish, sometimes for a long period of
time, rather than stopping the slave immediately.
References: See also Bug #30932.
When a view containing a reference to
was created, the reference was removed when the definition was
stored, causing some queries against the view to fail with
invalid SQL syntax errors.
mysqldump failed to return an error code when
without binary logging being enabled on the server.
A malformed URL used for a
CONNECTION option value in a
CREATE TABLE statement was not
handled correctly and could crash the server.
statement on a table having both a foreign key reference and a
DELETE trigger crashed the server.
A query using
col1 used a binary collation and
string2 except for case, failed to
match any records even when matches were found by a query using
the equivalent clause
Reuse of prepared statements could cause a memory leak in the embedded server. (Bug #33796)
In some cases a query that produced a result set when using
ORDER BY ASC did not return any results when
this was changed to
ORDER BY DESC.
NAME_CONST() with a negative number and
an aggregate function caused MySQL to crash. This could also
have a negative impact on replication.
Under some circumstances a combination of aggregate functions
GROUP BY in a
SELECT query over a view could
lead to incorrect calculation of the result type of the
aggregate function. This in turn could lead to incorrect
results, or to crashes on debug builds of the server.
A query that performed a
ref_or_null join where the
second table used a key having one or columns that could be
NULL and had a column value that was
NULL caused the server to crash.
References: This bug was introduced by Bug #12144.
Some subqueries using an expression that included an aggregate function could fail or in some cases lead to a crash of the server. (Bug #34620)
Under some conditions, a
innodb_autoextend_increment statement could fail.
References: This bug is a regression of Bug #31177.
Some queries using a combination of
CONCAT(), and an implicit type
conversion could return an incorrect result.
DISTINCT queries, MySQL 4.0 and 4.1
stopped reading joined tables as soon as the first matching row
was found. However, this optimization was lost in MySQL 5.0,
which instead read all matching rows. This fix for this
regression may result in a major improvement in performance for
DISTINCT queries in cases where many rows
Certain combinations of views, subselects with outer references and stored routines or triggers could cause the server to crash. (Bug #33389)
UPDATE privilege on
one column of a view caused the server to crash.
Disabling concurrent inserts caused some cacheable queries not to be saved in the query cache. (Bug #33756)
SLEEP(0) failed to return on
64-bit Mac OS X due to a bug in
For an indexed integer column
col_name and a value
N that is one greater than the
maximum value permitted for the data type of
col_name, conditions of the form
WHERE failed to return rows
where the value of
N - 1
INFILE with a view could crash the server.
Under some circumstances, the value of
mysql_insert_id() following a
SELECT ... INSERT statement could return an
incorrect value. This could happen when the last
... INSERT did not involve an
AUTO_INCREMENT column, but the value of
mysql_insert_id() was changed by
some previous statements.
A memory-handling error associated with use of
GROUP_CONCAT() in subqueries
could result in a server crash.
Table and database names were mixed up in some places of the subquery transformation procedure. This could affect debugging trace output and further extensions of that procedure. (Bug #34830)
Queries such as
SELECT ROW(1, 2) IN (SELECT t1.a, 2)
FROM t1 GROUP BY t1.a (combining row constructors and
subqueries in the
FROM clause) could lead to
assertion failure or unexpected error messages.
Incorrect assertions could cause a server crash for
DELETE triggers for transactional tables.
There was a memory leak when connecting to a
FEDERATED table using a connection string
that had a host value of
localhost or omitted
the host and a port value of
0 or omitted the
FEDERATED table with an index on a
nullable column, accessing the table could crash a server,
return an incorrect result set, or return
(HY000): Got error 1430 from storage engine.
mysqldump attempts to set the
variable after connecting to the server. This failed for pre-4.1
servers that have no such variable, but
mysqldump did not account for this and 1)
failed to dump database contents; 2) failed to produce any error
message alerting the user to the problem.
Some binaries produced stack corruption messages due to being built with versions of bison older than 2.1. Builds are now created using bison 2.3. (Bug #34926)
On Windows, the installer attempted to use JScript to determine whether the target data directory already existed. On Windows Vista x64, this resulted in an error because the installer was attempting to run the JScript in a 32-bit engine, which wasn't registered on Vista. The installer no longer uses JScript but instead relies on a native WiX command. (Bug #36103)
Debugging symbols were missing for some executables in Windows binary distributions. (Bug #35104)
A server crash could occur if
INFORMATION_SCHEMA tables built in memory
were swapped out to disk during query execution.
mysql-stress-test.pl and mysqld_multi.server.sh were missing from some binary distributions. (Bug #21023, Bug #25486)
The MySQL Instance Configuration Wizard would not permit you to choose a service name, even though the criteria for the service name were valid. The code that checks the name has been updated to support the correct criteria of any string less than 256 character and not containing either a forward or backward slash character. (Bug #27013)
LIKE on tables having indexed
CHAR columns using either of the
sets did not return correct results.
Queries testing numeric constants containing leading zeros
ZEROFILL columns were not evaluated
The server returned the error message Out of memory; restart server and try again when the actual problem was that the sort buffer was too small. Now an appropriate error message is returned in such cases. (Bug #31590)
If an alias was used to refer to the value returned by a stored function within a subselect, the outer select recognized the alias but failed to retrieve the value assigned to it in the subselect. (Bug #30787)
References: This bug is a regression of Bug #20777.
The SQL parser did not accept an empty
UNION=() clause. This meant that, when there
were no underlying tables specified for a
SHOW CREATE TABLE and
mysqldump both output statements that could
not be executed.
Now it is possible to execute a
statement with an empty
SHOW CREATE TABLE and
mysqldump do not output the
UNION=() clause if there are no underlying
tables specified for a
This also means it is now possible to remove the underlying
tables for a
MERGE table using
ALTER TABLE ...
utf8 was set as the connection character
SPACE() with a
non-Unicode column produced an error.
References: See also Bug #23637.
The mysql_config command would output
CFLAGS values that were incompatible with C++
for the HP-UX platform.
SET column whose definition specified 64
elements could not be updated using integer values.
On Mac OS X, mysqld did not react to
Control+C when run under gdb, even when run
SHOW COLUMNS on a
TEMPORARY table caused locking issues.
The client library had no way to return an error if no
connection had been established. This caused problems such as
silently if no
errmsg.sys file was
When sorting privilege table rows, the server treated escaped
wildcard characters (
\_) the same as unescaped wildcard characters
_), resulting in
incorrect row ordering.
For distributions compiled with the bundled
libedit library, there were difficulties
using the mysql client to enter input for
non-ASCII or multibyte characters.
On Windows, for distributions built with debugging support, mysql could crash if the user typed Control+C. (Bug #26243)
ORDER BY clauses, mixing aggregate
functions and nongrouping columns is not permitted if the
ONLY_FULL_GROUP_BY SQL mode is
enabled. However, in some cases, no error was thrown because of
On Mac OS X, the StartupItem for MySQL did not work. (Bug #25008)
If an error occurred during file creation, the server sometimes did not remove the file, resulting in an unused file in the file system. (Bug #31781)
The MySQL header files contained some duplicate macro definitions that could cause compilation problems. (Bug #23839)
For Windows 64-bit builds, enabling shared-memory support caused client connections to fail. (Bug #24992)
On Windows, an error in
installation of source distributions to fail.
could display process entries with a
*** DEAD ***.
An orphaned PID file from a no-longer-running process could cause mysql.server to wait for that process to exit even though it does not exist. (Bug #30378)
Inserting strings with a common prefix into a table that used
ucs2 character set corrupted the table.
Binary logging for a stored procedure differed depending on whether or not execution occurred in a prepared statement. (Bug #30604)
MySQLInstanceConfig.exe did not save the
innodb_data_home_dir value to
my.ini file under certain
If a user installed MySQL Server and set a password for the
root user, and then uninstalled and
reinstalled MySQL Server to the same location, the user could
not use the MySQL Instance Config wizard to configure the server
because the uninstall operation left the previous data directory
intact. The config wizard assumed that any
new install (not an upgrade) would have the default data
directory where the
root user has no
password. The installer now writes a registry key named
FoundExistingDataDir. If the installer finds
an existing data directory, the key will have a value of 1,
otherwise it will have a value of 0. When
MySQLInstanceConfig.exe is run, it will
attempt to read the key. If it can read the key, and the value
is 1 and there is no existing instance of the server (indicating
a new installation), the Config Wizard will permit the user to
input the old password so the server can be configured.
Using mysqldump in MySQL 5.1 resulted in dump
files that could not be loaded in MySQL 5.0 because
options in index definitions appeared after the index column
list, whereas 5.0 accepted only the old syntax that has
USING before the column list. The parser in
5.0 now accepts
USING following the column
option, mysqlhotcopy now determines the slave
status information from the result of
SLAVE STATUS by using the
Exec_Master_Log_Pos values rather than the
Read_Master_Log_Pos values. This provides a
more accurate indication of slave execution relative to the
A data file required for the
ndb_restore_different_endian_data test case
was missing from binary distributions, causing the test to fail.
The data file now is included.
(Bug #31453, Bug #11747239)