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.