This is a bugfix release, fixing recently discovered bugs in the previous MySQL Cluster NDB 6.3 release.
Obtaining MySQL Cluster NDB 6.3. The latest MySQL Cluster NDB 6.3 binaries for supported platforms can be obtained from http://dev.mysql.com/downloads/cluster/. Source code for the latest MySQL Cluster NDB 6.3 release can be obtained from the same location. You can also access the MySQL Cluster NDB 6.3 development source tree at https://code.launchpad.net/~mysql/mysql-server/mysql-5.1-telco-6.3.
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.51 (see Changes in MySQL 5.1.51 (2010-09-10)).
Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual bugs fixed in this version.
--skip-broken-objectsoption for ndb_restore. This option causes ndb_restore to ignore tables corrupted due to missing blob parts tables, and to continue reading from the backup file and restoring the remaining tables. (Bug #54613)
References: See also: Bug #51652.
Two related problems could occur with read-committed scans made in parallel with transactions combining multiple (concurrent) operations:
When committing a multiple-operation transaction that contained concurrent insert and update operations on the same record, the commit arrived first for the insert and then for the update. If a read-committed scan arrived between these operations, it could thus read incorrect data; in addition, if the scan read variable-size data, it could cause the data node to fail.
When rolling back a multiple-operation transaction having concurrent delete and insert operations on the same record, the abort arrived first for the delete operation, and then for the insert. If a read-committed scan arrived between the delete and the insert, it could incorrectly assume that the record should not be returned (in other words, the scan treated the insert as though it had not yet been committed).
A row insert or update followed by a delete operation on the same row within the same transaction could in some cases lead to a buffer overflow. (Bug #59242)
References: See also: Bug #56524. This issue is a regression of: Bug #35208.
FAIL_REPsignal, used inside the NDB kernel to declare that a node has failed, now includes the node ID of the node that detected the failure. This information can be useful in debugging. (Bug #58904)
EXPLAIN EXTENDEDfor a query that would use condition pushdown could cause mysqld to crash. (Bug #58553, Bug #11765570)
In some circumstances, an SQL trigger on an
NDBtable could read stale data. (Bug #58538)
During a node takeover, it was possible in some circumstances for one of the remaining nodes to send an extra transaction confirmation (
LQH_TRANSCONF) signal to the
DBTCkernel block, conceivably leading to a crash of the data node trying to take over as the new transaction coordinator. (Bug #58453)
A query having multiple predicates joined by
WHEREclause and which used the
sort_unionaccess method (as shown using
EXPLAIN) could return duplicate rows. (Bug #58280)
Trying to drop an index while it was being used to perform scan updates caused data nodes to crash. (Bug #58277, Bug #57057)
When handling failures of multiple data nodes, an error in the construction of internal signals could cause the cluster's remaining nodes to crash. This issue was most likely to affect clusters with large numbers of data nodes. (Bug #58240)
The number of rows affected by a statement that used a
WHEREclause having an
INcondition with a value list containing a great many elements, and that deleted or updated enough rows such that
NDBprocessed them in batches, was not computed or reported correctly. (Bug #58040)
A query using
BETWEENas part of a pushed-down
WHEREcondition could cause mysqld to hang or crash. (Bug #57735)
In some circumstances, it was possible for mysqld to begin a new multi-range read scan without having closed a previous one. This could lead to exhaustion of all scan operation objects, transaction objects, or lock objects (or some combination of these) in
NDB, causing queries to fail with such errors as Lock wait timeout exceeded or Connect failure - out of connection objects. (Bug #57481)
References: See also: Bug #58750.
NULLon a table with a unique index created with
columnalways returned an empty result. (Bug #57032)
engine_condition_pushdownenabled, a query using
ENUMcolumn of an
NDBtable failed to return any results. This issue is resolved by disabling
engine_condition_pushdownwhen performing such queries. (Bug #53360)
When a slash character (
/) was used as part of the name of an index on an
NDBtable, attempting to execute a
TRUNCATE TABLEstatement on the table failed with the error Index not found, and the table was rendered unusable. (Bug #38914)
Disk Data: In certain cases, a race condition could occur when
DROP LOGFILE GROUPremoved the logfile group while a read or write of one of the effected files was in progress, which in turn could lead to a crash of the data node. (Bug #59502)
Disk Data: A race condition could sometimes be created when
DROP TABLESPACEwas run concurrently with a local checkpoint; this could in turn lead to a crash of the data node. (Bug #59501)
Disk Data: Performing what should have been an online drop of a multi-column index was actually performed offline. (Bug #55618)
Disk Data: When at least one data node was not running, queries against the
INFORMATION_SCHEMA.FILEStable took an excessive length of time to complete because the MySQL server waited for responses from any stopped nodes to time out. Now, in such cases, MySQL does not attempt to contact nodes which are not known to be running. (Bug #54199)
Cluster API: Attempting to read the same value (using
getValue()) more than 9000 times within the same transaction caused the transaction to hang when executed. Now when more reads are performed in this way than can be accommodated in a single transaction, the call to
execute()fails with a suitable error. (Bug #58110)