This release incorporates all bugfixes and changes made in
previous MySQL Cluster releases, as well as all bugfixes and
feature changes which were added in mainline MySQL 5.1 through
MySQL 5.1.47 (see Changes in MySQL 5.1.47 (2010-05-06)).

Note

Please refer to our bug database at
http://bugs.mysql.com/ for more details about
the individual bugs fixed in this version.

Important Change; Cluster API:
The poll and select calls made by the MGM API were not
interrupt-safe; that is, a signal caught by the process while
waiting for an event on one or more sockets returned error -1
with errno set to
EINTR. This caused problems with MGM API
functions such as
ndb_logevent_get_next() and
ndb_mgm_get_status2().

To fix this problem, the internal
ndb_socket_poller::poll() function has been
made EINTR-safe.

The old version of this function has been retained as
poll_unsafe(), for use by those parts of NDB
that do not need the EINTR-safe version
of the function.
(Bug #55906)

When another data node failed, a given data node
DBTC kernel block could time out while
waiting for DBDIH to signal commits of
pending transactions, leading to a crash. Now in such cases the
timeout generates a prinout, and the data node continues to
operate.
(Bug #55715)

The configure.js option
WITHOUT_DYNAMIC_PLUGINS=TRUE was ignored when
building MySQL Cluster for Windows using
CMake. Among the effects of this issue was
that CMake attempted to build the
InnoDB storage engine as a plugin
(.DLL file) even though the InnoDB
Plugin is not currently supported by MySQL Cluster.
(Bug #54913)

It was possible for a DROP
DATABASE statement to remove
NDB hidden blob tables without
removing the parent tables, with the result that the tables,
although hidden to MySQL clients, were still visible in the
output of ndb_show_tables but could not be
dropped using ndb_drop_table.
(Bug #54788)

An excessive number of timeout warnings (normally used only for
debugging) were written to the data node logs.
(Bug #53987)

Disk Data:
As an optimization when inserting a row to an empty page, the
page is not read, but rather simply initialized. However, this
optimzation was performed in all cases when an empty row was
inserted, even though it should have been done only if it was
the first time that the page had been used by a table or
fragment. This is because, if the page had been in use, and then
all records had been released from it, the page still needed to
be read to learn its log sequence number (LSN).

This caused problems only if the page had been flushed using an
incorrect LSN and the data node failed before any local
checkpoint was completed—which would remove any need to
apply the undo log, hence the incorrect LSN was ignored.

The user-visible result of the incorrect LSN was that it caused
the data node to fail during a restart. It was perhaps also
possible (although not conclusively proven) that this issue
could lead to incorrect data.
(Bug #54986)

Cluster Replication:
When inserting rows into the
mysql.ndb_binlog_index table, duplicate key
errors occurred when the size of the epoch number (a 64-bit
integer) exceeded 253. This happened
because the NDB storage engine handler called
the wrong overloaded variant of a MySQL Server internal API (the
Field::store() method), which resulted in the
epoch being mapped to a 64-bit double precision floating point
number and a corresponding loss of accuracy for numbers greater
than 253.
(Bug #35217)