ndbinfo Information Database: It was possible following a restart for (sometimes incomplete) fallback data to be used in populating the
ndbinfo.processes
table, which could lead to rows in this table with emptyprocess_name
values. Such fallback data is no longer used for this purpose. (Bug #27985339)MySQL NDB ClusterJ: ClusterJ could not be built from source using JDK 9. (Bug #27977985)
-
An internal buffer being reused immediately after it had been freed could lead to an unplanned data node shutdown. (Bug #27622643)
References: See also: Bug #28698831.
-
An
NDB
online backup consists of data, which is fuzzy, and a redo and undo log. To restore to a consistent state it is necessary to ensure that the log contains all of the changes spanning the capture of the fuzzy data portion and beyond to a consistent snapshot point. This is achieved by waiting for a GCI boundary to be passed after the capture of data is complete, but before stopping change logging and recording the stop GCI in the backup's metadata.At restore time, the log is replayed up to the stop GCI, restoring the system to the state it had at the consistent stop GCI. A problem arose when, under load, it was possible to select a GCI boundary which occurred too early and did not span all the data captured. This could lead to inconsistencies when restoring the backup; these could be noticed as broken constraints or corrupted
BLOB
entries.Now the stop GCI is chosen is so that it spans the entire duration of the fuzzy data capture process, so that the backup log always contains all data within a given stop GCI. (Bug #27497461)
References: See also: Bug #27566346.
-
For
NDB
tables, when a foreign key was added or dropped as a part of a DDL statement, the foreign key metatdata for all parent tables referenced should be reloaded in the handler on all SQL nodes connected to the cluster, but this was done only on the mysqld on which the statement was executed. Due to this, any subsequent queries relying on foreign key metadata from the corresponding parent tables could return inconsistent results. (Bug #27439587)References: See also: Bug #82989, Bug #24666177.
The internal function
BitmaskImpl::setRange()
set one bit fewer than specified. (Bug #90648, Bug #27931995)-
It was not possible to create an
NDB
table usingPARTITION_BALANCE
set toFOR_RA_BY_LDM_X_2
,FOR_RA_BY_LDM_X_3
, orFOR_RA_BY_LDM_X_4
. (Bug #89811, Bug #27602352)References: This issue is a regression of: Bug #81759, Bug #23544301.
When the internal function
ha_ndbcluster::copy_fk_for_offline_alter()
checked dependent objects on a table from which it was supposed to drop a foreign key, it did not perform any filtering for foreign keys, making it possible for it to attempt retrieval of an index or trigger instead, leading to a spurious Error 723 (No such table).During the execution of
CREATE TABLE ... IF NOT EXISTS
, the internalopen_table()
function callsha_ndbcluster::get_default_num_partitions()
implicitly wheneveropen_table()
finds out that the requested table already exists. In certain cases,get_default_num_partitions()
was called without the associatedthd_ndb
object being initialized, leading to failure of the statement with MySQL error 157 Could not connect to storage engine. Nowget_default_num_partitions()
always checks for the existence of thisthd_ndb
object, and initializes it if necessary.