This is a new Beta development release, fixing recently discovered bugs.
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:
The Event Scheduler can now be in one of three states (on, off,
or the new suspended state). In addition, due to the fact that
SET GLOBAL event_scheduler; now acts in a
synchronous rather than asynchronous manner, the Event Scheduler
thread can be no longer be activated or deactivated at run time.
The limit of 2048 ordered indexes per cluster has been lifted.
There is now no upper limit on the number of ordered indexes
AUTO_INCREMENT columns) that may
ssl_key system variables, which
display the values given via the corresponding command options.
See Section 22.214.171.124, “SSL Command Options”.
to MySQL client programs. This option causes the server's Common
Name value in its certificate to be verified against the host
name used when connecting to the server, and the connection is
rejected if there is a mismatch. Added
MYSQL_OPT_SSL_VERIFY_SERVER_CERT option for
mysql_options() C API
function to enable this verification. This feature can be used
to prevent man-in-the-middle attacks. Verification is disabled
It is now possible to use
values within triggers as
INOUT parameters to
--angel-pid-file option to
mysqlmanager for specifying the file in which
the angel process records its process ID when
mysqlmanager runs in daemon mode.
Previously, to build MySQL from source with SSL support enabled,
you would invoke configure with either the
option. Those options both have been replaced by the
--with-ssl option. By default,
--with-ssl causes the bundled yaSSL library to
be used. To select OpenSSL instead, give the option as
path is the directory where the
OpenSSL header files and libraries are located.
mysql_get_ssl_cipher() C API
function was added.
mysql_explain_log (a third-party program) is no longer included in MySQL distributions.
An SQL-injection security hole has been found in multi-byte
encoding processing. The bug was in the server, incorrectly
parsing the string escaped with the
mysql_real_escape_string() C API
This vulnerability was discovered and reported by Josh Berkus
<email@example.com> and Tom Lane
<firstname.lastname@example.org> as part of the inter-project
security collaboration of the OSDB consortium. For more
information about SQL injection, please see the following text.
An SQL injection security hole has been found in multi-byte
encoding processing. An SQL injection security hole can
include a situation whereby when a user supplied data to be
inserted into a database, the user might inject SQL statements
into the data that the server will execute. With regards to
this vulnerability, when character set-unaware escaping is
used (for example,
addslashes() in PHP), it
is possible to bypass the escaping in some multi-byte
character sets (for example, SJIS, BIG5 and GBK). As a result,
a function such as
addslashes() is not able
to prevent SQL-injection attacks. It is impossible to fix this
on the server side. The best solution is for applications to
use character set-aware escaping offered by a function such
However, a bug was detected in how the MySQL server parses the
mysql_real_escape_string(). As a
result, even when the character set-aware function
used, SQL injection was possible. This bug has been fixed.
If you are unable to upgrade MySQL to a version that includes
the fix for the bug in
parsing, but run MySQL 5.0.1 or higher, you can use the
mode as a workaround. (This mode was introduced in MySQL
enables an SQL standard compatibility mode, where backslash is
not considered a special character. The result will be that
queries will fail.
To set this mode for the current connection, enter the following SQL statement:
You can also set the mode globally for all clients:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
This SQL mode also can be enabled automatically when the server
starts by using the command-line option
or by setting
in the server option file (for example,
depending on your system).
See also Bug#8303.
Partitioning: MySQL Cluster:
MIN( from a
Cluster table with user-defined partitioning crashed the server.
ALL START in the
NDB management client or restarting
multiple nodes simultaneously could under some circumstances
cause the cluster to crash.
(NDBAPI): On big-endian platforms,
NdbOperation::write_attr() did not update
32-bit fields correctly.
This issue affected both in-memory and Disk Data tables.
ALTER TABLE ENGINE=... failed when used to
change a MySQL Cluster table having no explicit primary key to
use a different storage engine.
As a consequence of this fix,
TABLE no longer displays auto-partitioning
method failed to clean up all objects used, which could cause
memory leaks to occur.
Using “stale” mysqld
.frm files could cause a newly-restored
cluster to fail. This situation could arise when restarting a
MySQL Cluster using the
--initial option while
leaving connected mysqld processes running.
A Cluster whose storage nodes were installed from the
MySQL-ndb-storage- RPMs could not perform
ALTER operations that made use of nondefault
character sets or collations.
MySQL Cluster: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug#13987)
Replication: The embedded server crashed with row-based replication enabled. (Bug#18518)
In was not possible to invoke a stored routine containing dynamic SQL from a scheduled event. (Bug#19264)
Adding an index to a table created using partitioning by
KEY and the
engine caused the server to crash.
Use of uninitialized user variables in a subquery in the
FROM clause resulted in invalid entries in
the binary log.
Premature optimization of nested subqueries in the
FROM clause that refer to aggregate functions
could lead to incorrect results.
When creating a table using
CREATE TABLE ... PARTITION
BY ... SELECT ..., the partitioning clause was
For dates with 4-digit year parts less than 200, an implicit
conversion to add a century was applied for date arithmetic
- INTERVAL. (For
INTERVAL 0 SECOND) became
00:00:00'.) Now these operations return
NULL rather than an incorrect
Returning the value of a system variable from a stored function caused a server crash. (Bug#18037)
Revised memory allocation for local objects within stored functions and triggers to avoid memory leak for repeated function or trigger invocation. (Bug#17260)
/dev/null to suppress statement history
saving by mysql did not work.
(mysql deleted the symlink and recreated
.mysql_history as a regular file, and then
wrote history to it.)
Simultaneous scheduled events whose actions conflicted with one another could crash the server. (Bug#16428)
Concurrent reading and writing of privilege structures could crash the server. (Bug#16372)
The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug#15869)
EXPLAIN ... SELECT INTO caused the client to
Within a trigger,
SET used the SQL mode of
the invoking statement, not the mode in effect at trigger
If a file name was given for
mysqld_safe ignored it and did not pass
it to mysqld, which then wrote error
stderr and resulted in
incorrect log rotation when
mysql_safe now adds
.err to the end of the file name if no
extension is present (the same as
In addition, some argument quoting problems were corrected. (Bug#6061)
mysql_safe now adds
to the end of the file name if no extension is present (the same
If a file name was given for
mysqld_safe ignored it and did not pass it to
mysqld, which then wrote error information to
stderr and resulted in incorrect log rotation
In string literals with an escape character
\) followed by a multi-byte character that
\) as its second byte, the literal was
not interpreted correctly. Now only next byte now is escaped,
and not the entire multi-byte character. This means it is a
strict reverse of the