This was an internal release only, and no binaries were published.
Functionality Added or Changed
Incompatible Change; Cluster Replication:
cluster_replication database has been
cluster. This will effect
replication between MySQL Clusters where one cluster is running
MySQL 5.1.8 or later, and the other is running MySQL 5.1.7 or
earlier. See MySQL Cluster Replication, and
especially MySQL Cluster Replication Schema and Tables.
The semantics of
tables is changed, and now means that the storage engine used
t is changed to
The previous statement formerly (prior to MySQL 5.1.8) meant
that all partitioning was removed from the table. To remove the
partitioning of a table, the syntax
t REMOVE PARTITIONING;
REMOVE PARTITIONING option
can be used in combination with existing
ALTER TABLE options such as those
employed for adding or dropping columns or indexes.
For purposes of determining placement,
partitioning now treats
NULL as less than any
other value. (Formerly,
NULL was treated as
equal to zero.) See
How MySQL Partitioning Handles
A slave server may now switch the replication format
automatically. This happens when the server is running in either
and encounters a row in the binary log that is written in
ROW logging format. In that case, the slave
switches to row-based replication temporarily for that event,
and switches back to the previous format afterward.
Triggers from older servers that included no
DEFINER clause in the trigger definition now
execute with the privileges of the invoker (which on the slave
is the slave SQL thread). Previously, replication slaves could
not replicate such triggers.
Disk Data: You can now have only one log file group at any one time. See CREATE LOGFILE GROUP Syntax. (Bug #16386)
Temporary tables may no longer be partitioned. (Bug #17497)
MICROSECOND intervals are no longer permitted
More specific error messages are now given when attempting to create an excessive number of partitions or subpartitions. (Previously, no distinction was made between an excessive number of partitions and an excessive number of subpartitions.) (Bug #17393)
--events option to
mysqldump to enable events to be included in
the dump output.
The output from
SHOW CREATE TABLE
is more consistent about using uppercase for keywords. Data
types still are in lowercase.
Events no longer support times past the end of the Unix epoch. (Formerly, such dates were interpreted as being at the beginning of the Unix epoch.) (Bug #16396)
Builds for Windows, Linux, and Unix (except AIX) platforms now have SSL support enabled, in the server as well as in the client libraries. Because part of the SSL code is written in C++, this does introduce dependencies on the system's C++ runtime libraries in several cases, depending on compiler specifics. (Bug #18195)
The syntax for
CREATE FUNCTION statements
now includes a
DEFINER clause. The
DEFINER value specifies the security context
to be used when checking access privileges at routine invocation
time if the routine has the
DEFINER characteristic. See
CREATE PROCEDURE and CREATE FUNCTION Syntax, for more information.
When mysqldump is invoked with the
--routines option, it now
DEFINER value for stored routines.
mysqldump now surrounds the
WITH CHECK OPTION
clauses of a
statement with "not in version" comments to prevent errors in
earlier versions of MySQL.
The following deprecated constructs now generate warnings, and they are removed as of MySQL 5.5. Where alternatives are shown, applications should be updated to use them. Existing applications that depend on the deprecated constructs should be converted to make use of the current equivalents as soon as possible. You should not employ them in new applications.
SHOW TABLE TYPES SQL statement (use
SHOW PLUGIN SQL statement (use
LOAD TABLE ... FROM MASTER and
LOAD DATA FROM MASTER SQL statements (use
mysqlhotcopy to dump tables and
mysql to reload dump files).
data type: The ability to specify a display width of
N (use without
server options to set replication parameters (use the
CHANGE MASTER TO statement
SHOW BDB LOGS and
LOGS are removed as of MySQL 5.1.12.
In order not to break legacy applications, support for
TYPE = —deprecated since MySQL 4.0—has been
restored, but now generates a warning.
Beginning with MySQL 5.5,
longer be available and will produce a syntax
You should not use
TYPE in any
new applications, and you should immediately begin conversion
of existing applications to use the
For an event having no
STARTS time specified
when it was created, the
start column now displays the creation time
In addition, both the
Starts column and the
STARTS column of the
INFORMATION_SCHEMA.EVENTS table are
now empty rather than
STARTS was not used in the
CREATE EVENT statement.
Description of the
privilege has been changed to
To create, alter, drop,
and execute events.
Names of subpartitions must now be unique for an entire table, and not merely within the same partition. (Bug #15408)
Event names are now case-insensitive. That is (for example), you
cannot have events with the names
MyEvent belonging to the same database and
last() function is now
implemented for use with
The output of
SHOW CREATE EVENT
no longer qualifies the event name with the name of the schem to
which the event belongs.
The client API now attempts to reconnect using TCP/IP if the
reconnect flag is set, as is the case with
Partition pruning was made more stable, particularly in cases
involving queries using tests for
WHERE clause against subpartitioned
tables which were partitioned by
mysqltest utility now converts all
CR/LF combinations to
to enable test cases intended for Windows to work properly on
ExtractValue() function with
contains() now uses the SQL collation in
making comparisons. Previously, comparisons were always binary
(that is, case-sensitive).
MySQL Cluster; Partitioning:
Trying to insert a value into a nonexistent
LIST partition of an
NDB table would cause the server to
Beginning with MySQL 5.1.12, user-defined partitioning types
KEY were disabled for
MySQL Cluster; Replication:
AUTO_INCREMENT values were not propagated
correctly in statement-based replication.
MySQL Cluster; Replication:
Memory was mistakenly freed for
NdbRecAttr objects during
addition of an index while replicating the cluster, which could
cause mysqld to crash.
MySQL Cluster; Replication: (Replication): The binary log on the secondary master was not being set up correctly following a table rename. (Bug #17838)
UNDO_BUFFER_SIZE was limited to 17 MB.
(Bug #16657, Bug #17890)
DROP LOGFILE GROUP
statement would cause ndbd processes to crash
if MySQL had been compiled with gcc4.
A timeout in the handling of an
condition with more that 32 operations could yield a node
SELECT ... ORDER BY query on an explicitly
partitioned Cluster table with no explicit indexes would crash
MySQL Cluster: When replacing a failed master node, the replacement node could cause the cluster to crash from a buffer overflow if it had an excessively large amount of data to write to the cluster log. (Bug #18118)
MySQL Cluster: Two mysqld processes starting at the same time could cause a race condition. (Bug #18472)
MySQL Cluster: The cluster created a crashed replica of a table having an ordered index—or when logging was not enabled, of a table having a table or unique index—leading to a crash of the cluster following 8 successive restarts. (Bug #18298)
MySQL Cluster: When multiple node restarts were attempted without permitting each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug #18349)
RENAME of several tables was
logged multiple times.
Trying to update very large partitioned tables using the
NDB storage engine sometimes caused
the server to crash.
(Bug #17806, Bug #16385)
Inserting and deleting
column values while a backup was in process could cause data
nodes to shut down.
MySQL Cluster: Some query cache statistics were not always correctly reported for Cluster tables. (Bug #16795)
ALTER TABLE ... ADD PARTITION on a
table partitioned by
LIST would cause the
client to hang.
Node recovery of tables with
VARCHAR columns using character
sets was inconsistent, which could cause a number of issues,
including the data nodes failing to restart and
ALTER TABLE statements to hang.
MySQL Cluster: With a single replica, transactions waiting in the log synchronization queue were not being restarted, causing them to be aborted. (Bug #17536)
MySQL Cluster: In event of a node failure during a rollback, a “false” lock could be established on the backup for that node, which lock could not be removed without restarting the node. (Bug #18352)
MySQL Cluster: Attempting to restart a node with dropped events still pending would fail. (Bug #18491)
A node restart immediately following a
CREATE TABLE would fail.
This fix supports 2-node Clusters only.
StringBuffer memory when
attempting to create a trigger caused the server to crash.
MySQL Cluster: In some cases, a single ndbd node failed following a system restart. (Bug #17854)
MySQL Cluster: Restarting nodes were permitted to start and join the cluster too early. (Bug #16772)
Two mysqld processes did not synchronize
DROP TABLE binary log events
CREATE UNIQUE INDEX on a column containing
nonunique data could cause one or more ndbd
nodes to hang or crash.
MySQL Cluster: Variable-length columns used as primary keys were not handled correctly. (Bug #18075)
ALTER TABLE ... ADD INDEX failed with
ERROR 756: Index on disk column is not
supported when run against a Disk Data table having
a primary key.
DEFINER value for stored routines was not
Replication: Replication of data stored in a partitioned table would cause slave servers to issue a assertion and terminate. (Bug #18436)
Slave servers would retry the execution of an SQL statement an
infinite number of times, ignoring the value
SLAVE_TRANSACTION_RETRIES when using the NDB
Disk Data: It was not possible to create more than 9 tablespaces. (Bug #16913)
CREATE UNIQUE INDEX failed with
Error 4243: Index not found.
Names of subpartitions were not displayed in the output of
SHOW CREATE TABLE.
A query with a
on a table partitioned by
Renaming and adding a new column to a partitioned table in the
ALTER TABLE statement caused
the server to crash.
Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug #17261)
ALTER TABLE to increase the
length of a
caused column values to be padded with spaces rather than
ExtractValue() function would
not accept expressions which matched element names containing an
ALTER TABLE ... REBUILD PARTITION with no
partition name specified would crash the server.
ALTER TABLE ... ADD PRIMARY KEY on a
partitioned table would result in bad table metadata and could
possibly crash the server.
mysql_close() C API function
leaked handles for shared-memory connections on Windows.
ALTER TABLE ... REORGANIZE PARTITION failed
with Error on rename of
filename ... on Windows.
A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug #16175)
INSERT statements executed by
scheduled events were not written to the general log.
Checks for permissions on database operations could be performed
in a case-insensitive manner (a user with permissions on
MYDATABASE could by accident get
permissions on database
myDataBase), if the
privilege data were still cached from a previous check.
The MySQL server could crash with out of memory errors when
performing aggregate functions on a
Creating a partition which depends on an expression containing a column using the UTF8 character set would cause the server to crash. (Bug #14367)
Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug #18004)
TABLE ... PARTITION ... AS SELECT ... would cause the
server to crash.
NULL values were written to the
mysql.slow_log table incorrectly.
self() XPath function was not handled
SELECT ... ORDER BY ... from a view defined
using a function could crash the server. An example of such a
CREATE VIEW v1 AS SELECT SQRT(c1) FROM
ExtractValue() function did
not return an error when passed an invalid XPath string.
Improper checking of binary log statements could result in a server crash. (Bug #17457)
In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug #16593)
Using triggers with partitioned
led to incorrect results.
On Linux, creation of table partitions failed within a stored procedure. (Bug #14363)
If the server was started with the
--skip-grant-tables option, it
was impossible to create a trigger or a view without explicitly
Stored routine names longer than 64 characters were silently truncated. Now the limit is properly enforced and an error occurs. (Bug #17015)
MyISAM: Performing a bulk insert on a table
referenced by a trigger would crash the table.
Creating a table with the same name as the mapped name of
another table caused a server crash. For example, if MySQL maps
the table name
txu@0023P@0023p1 on disk, creating another
txu@0023P@0023p1 crashed the
EXECUTE on a procedure would display any warnings
related to the creation of the procedure.
position() function in the XPath
crashed the server.
A problem with
NULLs and interval mapping
sometimes caused incorrect results or crashes when trying to use
less-than searches on partitioned tables.
FEDERATED tables, a
SELECT statement with an
ORDER BY clause did not return rows in the
ORDER BY within a stored procedure (where
intvar is an integer variable or
expression) would crash the server.
The use of an integer
i in an
clause for sorting the result by the
column is deprecated (and nonstandard). It should
not be used in new applications. See
Invoking more than once a prepared statement that creates a partitioned table would crash the server. (Bug #14350)
No error was reported when subpartitions were defined for a nonsubpartitioned table. (Bug #15961)
Updating a view that filters certain rows to set a filtered out
row to be included in the table caused infinite loop. For
example, if the view has a WHERE clause of
100 then issuing an UPDATE statement of
salary = 200 WHERE id = 10, caused an infinite loop.
RENAME TABLE statement did
not move triggers to the new table.
Triggers created without
END clauses resulted in “You have an
error in your SQL syntax” errors when dumping and
replaying a binary log.
When attempting to insert a
0 into a
LIST-partitioned table that had no value-list
0, no error was reported.
Naming a partition using the characters
unreadable the table containing the partition.
variable to a value larger than 1 could cause corruption of
Searches on indexed columns of partitioned tables failed to find all matching rows following updates of the indexed columns. (Bug #14526)
Trying to add a partition to a table having subpartitions could crash the server. (Bug #17140)
Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug #17169)
ALTER TABLE ... ADD COLUMN ... AFTER ...
failed when used on partitioned tables.
Cursors in stored routines could cause a server crash. (Bug #16887)
ALTER TABLE ... REBUILD PARTITION
without specifying the name of the partition caused the server
to crash, rather than reporting a syntax error.
Clients compiled from source with the
--without-readline did not save command history
from session to session.
Repeated invocations of a stored procedure containing a
SHOW CREATE EVENT statement would
result in the error Packets out of order.
A security enhancement in Visual Studio 8 could cause a MySQL
debug server compiled with it to hang when running
SELECT queries against
Slow queries executed by scheduled events were not being written to the slow query log. (Bug #16426)
permitted the use of the
! character in
identifiers by ignoring the illegal character. This is now
correctly reported as a syntax error.
SELECT ... WHERE , when
column had a key
and used the
caused the wrong number of rows to be returned.
Stored routines that contained only a single statement were not
written properly to the dumpfile when using
Execution of a stored function or trigger which inserted data into a table while running concurrent selects on the same table could result in storing incorrect data in the query cache. (Bug #14767)
ALTER TABLE ... COALESCE PARTITION failed
with an Out of Memory error.
SELECT COUNT(*) for a
MyISAM table could return different results
depending on whether an index was used.
Setting up subpartitions on at least one but not all the partitions of a partitioned table caused the server to crash. (Bug #15407)
Loading of UDFs in a statically linked MySQL caused a server crash. UDF loading is now blocked if the MySQL server is statically linked. (Bug #11835)
The length of a
VARCHAR() column that used
utf8 character set would increase each
time the table was re-created in a stored procedure or prepared
statement, eventually causing the
TABLE statement to fail.
Attempting to use a conflicting
ALTER TABLE ... ADD PARTITION caused the
server to crash. An example of such a conflicting clause would
be that uses
VALUES LESS THAN
( (which indicates
a range) with a table that is partitioned by
SELECT using a function against
a nested view would crash the server.
mysql_fix_privilege_tables did not create the
The server would execute stored routines that had a nonexistent definer. (Bug #13198)
Character set conversion of string constants for
UNION of constant and table
column was not done when it was safe to do so.
The server would crash when
STATUS was called on a server linked with
During conversion from one character set to
ucs2, multibyte characters with no
ucs2 equivalent were converted to multiple
characters, rather than to
EXAMPLE storage engine did not work on