Bug #51647 A temporary table makes its way into an NDB Backup
Submitted: 2 Mar 2010 16:42 Modified: 26 Dec 2010 15:43
Reporter: Andrew Hutchings Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S3 (Non-critical)
Version:mysql-5.1-telco-7.0 OS:Any
Assigned to: CPU Architecture:Any
Tags: 7.0.8
Triage: Triaged: D3 (Medium) / R6 (Needs Assessment) / E6 (Needs Assessment)

[2 Mar 2010 16:42] Andrew Hutchings
Description:
A temporary table with blobs makes its way into an NDB Backup but the hidden blob table is missing, causing the restoration process to fail.  This is using a GDB breakpoint just before the failure:

(gdb) print (TableS)table
$6 = {schemaVersion = 12450784, backupVersion = 0, allAttributesDesc = {
    m_items = 0x3f5000000c7, m_size = 5, m_incSize = 1, m_arraySize = 1}, 
  m_fixedKeys = {m_items = 0x7fff, m_size = 4688864, m_incSize = 0, 
    m_arraySize = 4294941264}, m_fixedAttribs = {m_items = 0x48b44d, 
    m_size = 4294941264, m_incSize = 32767, m_arraySize = 4294950240}, 
  m_variableAttribs = {m_items = 0x47cd1d, m_size = 1025, m_incSize = 1025, 
    m_arraySize = 4294959616}, m_noOfNullable = 4698697, 
  m_nullBitmaskSize = 0, m_auto_val_attrib = 0x95dd88, m_max_auto_val = 0, 
  m_isSysTable = false, m_isSYSTAB_0 = false, m_main_table = 0x0, 
  m_main_column_id = 0, m_local_id = 0, m_noOfRecords = 0, m_fragmentInfo = {
    m_items = 0x0, m_size = 0, m_incSize = 0, m_arraySize = 0}, 
  m_dictTable = 0x0}
(gdb) print table->getTableName()
$7 = 0xbea8b0 "gpfvm_vs/def/#sql2-30db-1fd673"
(gdb) print i
$10 = 696
(gdb) print allTables.size()
$25 = 1013
(gdb) print allTables[696]->getTableId()
$26 = 1080
(gdb) print c->getBlobType()
$8 = true
(gdb) print c->m_type
$9 = NdbDictionary::Column::Text
(gdb) print c->m_name
$10 = {m_chr = 0xbeaa80 "DETAILS", m_len = 7}
(gdb) print c->m_blobVersion
$11 = 2
(gdb) print c->m_blobTable
$12 = (class NdbTableImpl *) 0x0

How to repeat:
Not figured this out yet.

Suggested fix:
A crude fix would be to ignore #sql* tables in backups and restorations.  Might be nice to figure out why this happens though.
[8 Mar 2010 14:26] Jørgen Austvik
See Bug#51652 for feature request that might help.

Comment by Martin S:
Could add more checking (verification) when doing backup?