Some SQL statements relating to certain MySQL features produce
errors when used with NDB tables,
as described in the following list:
Temporary tables.
Temporary tables are not supported. Trying either to
create a temporary table that uses the
NDB storage engine or to
alter an existing temporary table to use
NDB fails with the error
Table storage engine 'ndbcluster' does not
support the create option 'TEMPORARY'.
Indexes and keys in NDB tables. Keys and indexes on NDB Cluster tables are subject to the following limitations:
Column width.
Attempting to create an index on an
NDB table column whose width is
greater than 3072 bytes succeeds, but only the first
3072 bytes are actually used for the index. In such
cases, a warning Specified key was too
long; max key length is 3072 bytes is
issued, and a SHOW CREATE
TABLE statement shows the length of the
index as 3072.
TEXT and BLOB columns.
You cannot create indexes on
NDB table columns that
use any of the TEXT or
BLOB data types.
FULLTEXT indexes.
The NDB storage engine
does not support FULLTEXT indexes,
which are possible for
MyISAM and (MySQL 5.6.4
and later) InnoDB tables
only.
However, you can create indexes on
VARCHAR columns of
NDB tables.
USING HASH keys and NULL.
Using nullable columns in unique keys and primary keys
means that queries using these columns are handled as
full table scans. To work around this issue, make the
column NOT NULL, or re-create the
index without the USING HASH
option.
Prefixes.
There are no prefix indexes; only entire columns can
be indexed. (The size of an NDB
column index is always the same as the width of the
column in bytes, up to and including 3072 bytes, as
described earlier in this section. Also see
Section 18.1.6.6, “Unsupported or Missing Features in NDB Cluster”,
for additional information.)
BIT columns.
A BIT column cannot be
a primary key, unique key, or index, nor can it be
part of a composite primary key, unique key, or index.
AUTO_INCREMENT columns.
Like other MySQL storage engines, the
NDB storage engine can
handle a maximum of one
AUTO_INCREMENT column per table,
and this column must be indexed. However, in the case
of an NDB Cluster table with no explicit primary key,
an AUTO_INCREMENT column is
automatically defined and used as a
“hidden” primary key. For this reason,
you cannot create an NDB table
having an AUTO_INCREMENT column and
no explicit primary key.
Restrictions on foreign keys.
Support for foreign key constraints in NDB Cluster 7.3 is
comparable to that provided by
InnoDB, subject to the
following restrictions:
Every column referenced as a foreign key requires an explicit unique key, if it is not the table's primary key.
ON UPDATE CASCADE is not supported
when the reference is to the parent table's primary
key.
This is because an update of a primary key is
implemented as a delete of the old row (containing the
old primary key) plus an insert of the new row (with a
new primary key). This is not visible to the
NDB kernel, which views these two
rows as being the same, and thus has no way of knowing
that this update should be cascaded.
SET DEFAULT is not supported. (Also
not supported by InnoDB.)
The NO ACTION keywords are accepted
but treated as RESCRICT. (Also the
same as with InnoDB.)
Prior to NDB 7.3.5, when creating a table with foreign key referencing an index in another table, it sometimes appeared possible to create the foreign key even if the order of the columns in the indexes did not match, due to the fact that an appropriate error was not always returned internally. A partial fix for this issue in NDB 7.3.5 improves the error used internally to work in most cases; however, it is still possible for this situation to occur in the event that the parent index is a unique index. (Bug #18094360)
For more information, see Section 13.1.17.5, “Using FOREIGN KEY Constraints”, and Section 1.7.3.2, “FOREIGN KEY Constraints”.
NDB Cluster and geometry data types.
Geometry data types (WKT and
WKB) are supported for
NDB tables. However, spatial
indexes are not supported.
Character sets and binary log files.
Currently, the ndb_apply_status and
ndb_binlog_index tables are created
using the latin1 (ASCII) character set.
Because names of binary logs are recorded in this table,
binary log files named using non-Latin characters are not
referenced correctly in these tables. This is a known
issue, which we are working to fix. (Bug #50226)
To work around this problem, use only Latin-1 characters
when naming binary log files or setting any the
--basedir,
--log-bin, or
--log-bin-index options.
Creating NDB tables with user-defined partitioning.
Support for user-defined partitioning in NDB Cluster is
restricted to [LINEAR]
KEY partitioning. Using any other
partitioning type with ENGINE=NDB or
ENGINE=NDBCLUSTER in a
CREATE TABLE statement
results in an error.
It is possible to override this restriction, but doing so is not supported for use in production settings. For details, see User-defined partitioning and the NDB storage engine (MySQL Cluster).
Default partitioning scheme.
All NDB Cluster tables are by default partitioned by
KEY using the table's primary key
as the partitioning key. If no primary key is explicitly
set for the table, the “hidden” primary key
automatically created by the
NDB storage engine is used
instead. For additional discussion of these and related
issues, see Section 19.2.5, “KEY Partitioning”.
CREATE TABLE and
ALTER TABLE statements that
would cause a user-partitioned
NDBCLUSTER table not to meet
either or both of the following two requirements are not
permitted, and fail with an error:
The table must have an explicit primary key.
All columns listed in the table's partitioning expression must be part of the primary key.
Exception.
If a user-partitioned
NDBCLUSTER table is created
using an empty column-list (that is, using
PARTITION BY [LINEAR] KEY()), then no
explicit primary key is required.
Maximum number of partitions for NDBCLUSTER tables.
The maximum number of partitions that can defined for a
NDBCLUSTER table when
employing user-defined partitioning is 8 per node group.
(See Section 18.1.2, “NDB Cluster Nodes, Node Groups, Replicas, and Partitions”, for
more information about NDB Cluster node groups.
DROP PARTITION not supported.
It is not possible to drop partitions from
NDB tables using
ALTER TABLE ... DROP PARTITION. The
other partitioning extensions to
ALTER
TABLE—ADD PARTITION,
REORGANIZE PARTITION, and
COALESCE PARTITION—are supported
for Cluster tables, but use copying and so are not
optimized. See
Section 19.3.1, “Management of RANGE and LIST Partitions” and
Section 13.1.7, “ALTER TABLE Syntax”.
Row-based replication.
When using row-based replication with NDB Cluster, binary
logging cannot be disabled. That is, the
NDB storage engine ignores
the value of sql_log_bin.
(Bug #16680)