Bug #44301 Got error 741 'Unsupported alter table' from NDB
Submitted: 15 Apr 2009 17:14 Modified: 10 Aug 2009 12:35
Reporter: Matthew Bilek Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:mysql-5.1-telco-7.0 OS:Linux
Assigned to: Jonas Oreland CPU Architecture:Any
Tags: mysql-5.1-telco-7.0.4

[15 Apr 2009 17:14] Matthew Bilek
Description:
After adding a third node to a MySQL Cluster 7.0.4 with NoOfReplicas=1, I get an error message of "Got error 741 'Unsupported alter table' from NDB" when submitting the SQL command "ALTER ONLINE TABLE <table name> REORGANIZE PARTITION;".

This is per the instructions in the MySQL documentation "17.7.8.3. Adding MySQL Cluster Data Nodes Online: Detailed Example".

Inserting rows will only be added to the previous existing data nodes, but node the newly added data node.

Also, the ndb_desc command indicated that all columns in the table are memory based and that only two (2) partitions are available, one for each pre-existing data node.  No partition for the new data node added since the ALTER SQL statement failed.

How to repeat:
OS: CentOS 5.3
DB: MySQL Cluster 7.0.4

1 - Management Node
1 - API Node
2 - Existing Data Nodes

NoOfReplicas=1

Standard procedure of adding extra data node is followed.
[16 Apr 2009 9:38] Jonas Oreland
a question:
do you either:
- add one datanode, create node group; alter table reorganize;
- add another datanode; create node group; alter table reorganize;

or
- add one datanode; create node group
  add another datanode; create node group
  alter table reorganize

/Jonas
[16 Apr 2009 13:53] Matthew Bilek
I performed the first one listed:
- add one datanode, create node group; alter table reorganize;

Example:

Update configuration file:
/var/lib/mysql-cluster/config.ini

Shutdown:
ndb_mgm>shutdown

Start:
shell>/usr/local/mysql/libexec/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reload
shell>/usr/local/mysql/bin/ndb_mgm

Start of the existing data nodes:
shell>/usr/local/mysql/libexec/ndbd
Waited until the management client reports Node X: Started for all existing data nodes.

Perform a rolling restart of cluster API node:
shell>/usr/local/mysql/bin/mysqladmin -u root -p shutdown
shell>/usr/local/mysql/bin/mysqld_safe --user=mysql --ndbcluster &

Perform an initial start of the new data node:
shell>/usr/local/mysql/libexec/ndbd --initial
Waited until the management client reports Node X: Started for all new data nodes.

Create a new node groups:
ndb_mgm>create nodegroup 4
Nodegroup 2 created

Redistribute cluster data:
ndb_mgm>ALL REPORT MEMORY
shell>/usr/local/mysql/bin/ndb_desc -c <hostname|IP> -d <schema> <table name> -p
mysql>ALTER ONLINE TABLE <table name> REORGANIZE PARTITION;
mysql>SHOW WARNINGS;
+-------+------+--------------------------------------------------+
| Level | Code | Message                                          |
+-------+------+--------------------------------------------------+
| Error | 1296 | Got error 741 'Unsupported alter table' from NDB |
+-------+------+--------------------------------------------------+
[23 Apr 2009 13:07] Jonathan Miller
Workarounds is either 2 replicas with adding 2 DN at a time, or doing off-line add node.
[6 Aug 2009 13:53] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/80282

2963 Jonas Oreland	2009-08-06
      ndb - bug#44301
        ALTER TABLE REORGANIZE PARTITION - could fail if with 741 unsupported
        alter table if appropriate hash-map was not present
      
        This could be due to e.g adding going from 4 to 6 nodes (2 replica)
        or from 2 to 3 nodes (1-replica) or lots of other cases...
      
        Solution is to call prepareHashMap also in reorg-case
          and add support for reorg-case inside prepareHashMap by
          reusing Create default hashmap if not exist which
          will findout how many fragments currently is default
     @ storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
        Add extra check for hashmap vs fragmentCount
[10 Aug 2009 11:58] Jonas Oreland
pushed to 7.0.7
[10 Aug 2009 12:35] Jon Stephens
Documented bugfix in the NDB-7.0.7 changelog as follows:

        ALTER TABLE REORGANIZE PARTITION could fail with Error 741
        (Unsupported alter table) if the appropriate hash-map was not
        present. This could occur when adding nodes online; for example,
        when going from 2 data nodes to 3 data nodes with
        NoOfreplicas=1, or from 4 data nodes to 6 data nodes with
        NoOfreplicas=2.