This release incorporates new features in the
NDBCLUSTER storage engine and fixes
recently discovered bugs in MySQL Cluster NDB 7.0.14.
Obtaining MySQL Cluster NDB 7.0.15. The latest MySQL Cluster NDB 7.0 binaries for supported platforms can be obtained from http://dev.mysql.com/downloads/cluster/. Source code for the latest MySQL Cluster NDB 7.0 release can be obtained from the same location. You can also access the MySQL Cluster NDB 7.0 development source tree at https://code.launchpad.net/~mysql/mysql-server/mysql-cluster-7.0.
This release also incorporates all bugfixes and changes made in previous MySQL Cluster NDB 6.1, 6.2, 6.3, and 7.0 releases, as well as all bugfixes and feature changes which were added in mainline MySQL 5.1 through MySQL 5.1.44 (see Changes in MySQL 5.1.44 (2010-02-04)).
Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual bugs fixed in this version.
Functionality Added or Changed
Important Change: The maximum number of attributes (columns plus indexes) per table has increased to 512.
A --wait-nodes option has been added for
ndb_waiter. When this option is used, the
program waits only for the nodes having the listed IDs to reach
the desired state. For more information, see
ndb_waiter — Wait for MySQL Cluster to Reach a Given Status.
(Bug #52323)
As part of this change, new methods relating to default values
have been added to the Column
and Table classes in the NDB
API. For more information, see
Column::getDefaultValue(),
Column::setDefaultValue(), and
Table::hasDefaultValues().
(Bug #30529)
Added the
--skip-unknown-objects
option for ndb_restore. This option causes
ndb_restore to ignore any schema objects
which it does not recognize. Currently, this is useful chiefly
for restoring native backups made from a cluster running MySQL
Cluster NDB 7.0 to a cluster running MySQL Cluster NDB 6.3.
Added the MySQL Cluster management server option
--config-cache, which makes it
possible to enable and disable configuration caching. This
option is turned on by default; to disable configuration
caching, start ndb_mgmd with
--config-cache=0, or with
--skip-config-cache. See
ndb_mgmd — The MySQL Cluster Management Server Daemon, for more
information.
Bugs Fixed
When attempting to create an NDB
table on an SQL node that had not yet connected to a MySQL
Cluster management server since the SQL node's last
restart, the CREATE TABLE
statement failed as expected, but with the unexpected Error 1495
For the partitioned engine it is necessary to define
all partitions.
(Bug #11747335, Bug #31853)
After creating NDB tables until
creation of a table failed due to
NDB error 905 Out of
attribute records (increase MaxNoOfAttributes), then
increasing
MaxNoOfAttributes and
restarting all management node and data node processes,
attempting to drop and re-create one of the tables failed with
the error Out of table records..., even
when sufficient table records were available.
(Bug #53944)
References: See also Bug #52055. This bug is a regression of Bug #44294.
Creating a Disk Data table, dropping it, then creating an
in-memory table and performing a restart, could cause data node
processes to fail with errors in the DBTUP
kernel block if the new table's internal ID was the same as
that of the old Disk Data table. This could occur because undo
log handling during the restart did not check that the table
having this ID was now in-memory only.
(Bug #53935)
An internal buffer allocator used by
NDB has the form
alloc( and attempts to
allocate wanted,
minimum)wanted pages, but is
permitted to allocate a smaller number of pages, between
wanted and
minimum. However, this allocator
could sometimes allocate fewer than
minimum pages, causing problems with
multi-threaded building of ordered indexes.
(Bug #53580)
A table created while
ndb_table_no_logging was
enabled was not always stored to disk, which could lead to a
data node crash with Error opening DIH schema files
for table.
(Bug #53934)
When creating an index, NDB failed
to check whether the internal ID allocated to the index was
within the permissible range, leading to an assertion. This
issue could manifest itself as a data node failure with
NDB error 707 (No more
table metadata records (increase MaxNoOfTables)),
when creating tables in rapid succession (for example, by a
script, or when importing from mysqldump),
even with a relatively high value for
MaxNoOfTables and a
relatively low number of tables.
(Bug #52055)
When the LogDestination
parameter was set using with a relative path, the management
server failed to store its value unless started with
--initial or
--reload.
(Bug #52268)
When compiled with support for epoll but this
functionality is not available at runtime, MySQL Cluster tries
to fall back to use the select() function in
its place. However, an extra ndbout_c() call
in the transporter registry code caused ndbd
to fail instead.
(Bug #53482)
The value set for the ndb_mgmd option
--ndb-nodeid was not verified
prior to use as being within the permitted range (1 to 255,
inclusive), leading to a crash of the management server.
(Bug #53412)
ndb_restore did not raise any errors if hashmap creation failed during execution. (Bug #51434)
NDB truncated a column declared as
DECIMAL(65,0) to a length of 64.
Now such a column is accepted and handled correctly. In cases
where the maximum length (65) is exceeded,
NDB now raises an error instead of
truncating.
(Bug #53352)
When an NDB log handler failed, the memory
allocated to it was freed twice.
(Bug #53200)
Specifying the node ID as part of the
--ndb-connectstring option to
mysqld was not handled correctly.
The fix for this issue includes the following changes:
Multiple occurrences of any of the mysqld
options --ndb-connectstring,
--ndb-mgmd-host, and
--ndb-nodeid are now handled
in the same way as with other MySQL server options, in that
the value set in the last occurrence of the option is the
value that is used by mysqld.
Now, if --ndb-nodeid is used,
its value overrides that of any nodeid
setting used in
--ndb-connectstring. For
example, starting mysqld with
--ndb-connectstring=nodeid=1,10.100.1.100
--ndb-nodeid=3 now produces the same result as
starting it with
--ndb-connectstring=nodeid=3,10.100.1.100.
The 1024-character limit on the length of the connectstring
is removed, and
--ndb-connectstring is now
handled in this regard in the same way as other
mysqld options.
In the NDB API, a new constructor for
Ndb_cluster_connection is
added which takes as its arguments a connectstring and the
node ID to force the API node to use.
(Bug #44299)
Setting DataMemory
higher than 4G on 32-bit platforms caused
ndbd to crash, instead of failing gracefully
with an error.
(Bug #52536, Bug #50928)
NDB did not distinguish correctly between table names differing
only by lettercase when
lower_case_table_names was set
to 0.
(Bug #33158)
ndb_mgm -e "ALL STATUS" erroneously reported
that data nodes remained in start phase 0 until they had
actually started.
Replication:
A buffer overrun in the handling of
DATE column values could cause
mysqlbinlog to fail when reading logs
containing certain combinations of DML statements on a table
having a DATE column followed by
dropping the table.
(Bug #52202)
Cluster Replication:
Replication failed after a restart of the slave SQL node, due to
an error in writing the master.info file.
(Bug #52859)
The MySQL client library mishandled
EINPROGRESS errors for connections in
nonblocking mode. This could lead to replication failures on
hosts capable of resolving both IPv4 and IPv6 network addresses,
when trying to resolve localhost.
(Bug #37267)
References: See also Bug #44344.
ALTER TABLE did not work
correctly where the name of the table, the database, or both
contained special characters, causing the MySQL server to crash.
(Bug #52225)
References: See also Bug #53409, Bug #14959.
The performance of MySQL applications using non-persistent client connections was adversely affected due to many of these connections being kept waiting for an excessive length of time in cleanup phase while being closed. (Bug #48832)
