diff options
author | unknown <joreland@mysql.com> | 2005-07-22 12:17:53 +0200 |
---|---|---|
committer | unknown <joreland@mysql.com> | 2005-07-22 12:17:53 +0200 |
commit | 3ea233d5e0575ae07db6c5d711d98cd6b28a2f19 (patch) | |
tree | a26e01b0d96c72d3b3d54ddf2f37fcb4a248e1c6 /ndb | |
parent | c556acbf6a0c6220f0748990d6981cbf808f69b1 (diff) | |
download | mariadb-git-3ea233d5e0575ae07db6c5d711d98cd6b28a2f19.tar.gz |
bug#11675 - ndb backup
Fix invalid backup log when using #nodes != 2^x
Fix ndb_restore --printXXX options
(among other init counters)
ndb/src/kernel/blocks/backup/Backup.cpp:
remove frag_mask since in 5.0 extra frag bit in in bit 0
ndb/src/kernel/blocks/backup/Backup.hpp:
remove frag_mask since in 5.0 extra frag bit in in bit 0
ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp:
send "real" frag id to backup
ndb/tools/restore/Restore.cpp:
Changed prinout (since it's wrong if you only print stuff)
ndb/tools/restore/consumer_printer.hpp:
Init log/data count in printer
ndb/tools/restore/restore_main.cpp:
Fix if-statements
for correct handling of ndb_restore flags
Diffstat (limited to 'ndb')
-rw-r--r-- | ndb/src/kernel/blocks/backup/Backup.cpp | 20 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/backup/Backup.hpp | 3 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp | 2 | ||||
-rw-r--r-- | ndb/tools/restore/Restore.cpp | 2 | ||||
-rw-r--r-- | ndb/tools/restore/consumer_printer.hpp | 2 | ||||
-rw-r--r-- | ndb/tools/restore/restore_main.cpp | 9 |
6 files changed, 12 insertions, 26 deletions
diff --git a/ndb/src/kernel/blocks/backup/Backup.cpp b/ndb/src/kernel/blocks/backup/Backup.cpp index ecc329c641b..34545d4c7ff 100644 --- a/ndb/src/kernel/blocks/backup/Backup.cpp +++ b/ndb/src/kernel/blocks/backup/Backup.cpp @@ -2858,8 +2858,6 @@ Backup::parseTableDescription(Signal* signal, BackupRecordPtr ptr, Uint32 len) /** * Initialize table object */ - tabPtr.p->frag_mask = RNIL; - tabPtr.p->schemaVersion = tmpTab.TableVersion; tabPtr.p->noOfAttributes = tmpTab.NoOfAttributes; tabPtr.p->noOfNull = 0; @@ -2952,7 +2950,6 @@ Backup::execDI_FCOUNTCONF(Signal* signal) ndbrequire(findTable(ptr, tabPtr, tableId)); ndbrequire(tabPtr.p->fragments.seize(fragCount) != false); - tabPtr.p->frag_mask = calculate_frag_mask(fragCount); for(Uint32 i = 0; i<fragCount; i++) { jam(); FragmentPtr fragPtr; @@ -3769,15 +3766,6 @@ Backup::checkFile(Signal* signal, BackupFilePtr filePtr) * Slave functionallity: Perform logging * ****************************************************************************/ -Uint32 -Backup::calculate_frag_mask(Uint32 count) -{ - Uint32 mask = 1; - while (mask < count) mask <<= 1; - mask -= 1; - return mask; -} - void Backup::execBACKUP_TRIG_REQ(Signal* signal) { @@ -3794,14 +3782,6 @@ Backup::execBACKUP_TRIG_REQ(Signal* signal) jamEntry(); c_triggerPool.getPtr(trigPtr, trigger_id); c_tablePool.getPtr(tabPtr, trigPtr.p->tab_ptr_i); - frag_id = frag_id & tabPtr.p->frag_mask; - /* - At the moment the fragment identity known by TUP is the - actual fragment id but with possibly an extra bit set. - This is due to that ACC splits the fragment. Thus fragment id 5 can - here be either 5 or 13. Thus masking with 2 ** n - 1 where number of - fragments <= 2 ** n will always provide a correct fragment id. - */ tabPtr.p->fragments.getPtr(fragPtr, frag_id); if (fragPtr.p->node != getOwnNodeId()) { jam(); diff --git a/ndb/src/kernel/blocks/backup/Backup.hpp b/ndb/src/kernel/blocks/backup/Backup.hpp index 7bcea5655b4..ab2bec7dad7 100644 --- a/ndb/src/kernel/blocks/backup/Backup.hpp +++ b/ndb/src/kernel/blocks/backup/Backup.hpp @@ -195,7 +195,6 @@ public: Uint32 tableId; Uint32 schemaVersion; - Uint32 frag_mask; Uint32 tableType; Uint32 noOfNull; Uint32 noOfAttributes; @@ -526,8 +525,6 @@ public: ArrayPool<Node> c_nodePool; ArrayPool<TriggerRecord> c_triggerPool; - Uint32 calculate_frag_mask(Uint32); - void checkFile(Signal*, BackupFilePtr); void checkScan(Signal*, BackupFilePtr); void fragmentCompleted(Signal*, BackupFilePtr); diff --git a/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp b/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp index 2b65a8402c2..a5694587314 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp @@ -603,7 +603,7 @@ void Dbtup::executeTrigger(Signal* signal, for everybody else. */ signal->theData[0] = trigPtr->triggerId; - signal->theData[1] = regOperPtr->fragId; + signal->theData[1] = regOperPtr->fragId >> 1; // send "real" frag id EXECUTE_DIRECT(BACKUP, GSN_BACKUP_TRIG_REQ, signal, 2); ljamEntry(); if (signal->theData[0] == 0) { diff --git a/ndb/tools/restore/Restore.cpp b/ndb/tools/restore/Restore.cpp index b53255820db..60fbf7f8ceb 100644 --- a/ndb/tools/restore/Restore.cpp +++ b/ndb/tools/restore/Restore.cpp @@ -646,7 +646,7 @@ bool RestoreDataIterator::readFragmentHeader(int & ret) } info << "_____________________________________________________" << endl - << "Restoring data in table: " << m_currentTable->getTableName() + << "Processing data in table: " << m_currentTable->getTableName() << "(" << Header.TableId << ") fragment " << Header.FragmentNo << endl; diff --git a/ndb/tools/restore/consumer_printer.hpp b/ndb/tools/restore/consumer_printer.hpp index 7cbc924e364..e47bc56f874 100644 --- a/ndb/tools/restore/consumer_printer.hpp +++ b/ndb/tools/restore/consumer_printer.hpp @@ -29,6 +29,8 @@ public: m_print_log = false; m_print_data = false; m_print_meta = false; + m_logCount = 0; + m_dataCount = 0; } virtual bool table(const TableS &); diff --git a/ndb/tools/restore/restore_main.cpp b/ndb/tools/restore/restore_main.cpp index 93c40d31adb..d4a6b892458 100644 --- a/ndb/tools/restore/restore_main.cpp +++ b/ndb/tools/restore/restore_main.cpp @@ -317,7 +317,7 @@ main(int argc, char** argv) if (ga_restore || ga_print) { - if (ga_restore) + if(_restore_data || _print_data) { RestoreDataIterator dataIter(metaData, &free_data_callback); @@ -364,7 +364,10 @@ main(int argc, char** argv) for (i= 0; i < g_consumers.size(); i++) g_consumers[i]->endOfTuples(); + } + if(_restore_data || _print_log) + { RestoreLogIterator logIter(metaData); if (!logIter.readHeader()) { @@ -388,6 +391,10 @@ main(int argc, char** argv) logIter.validateFooter(); //not implemented for (i= 0; i < g_consumers.size(); i++) g_consumers[i]->endOfLogEntrys(); + } + + if(_restore_data) + { for(i = 0; i<metaData.getNoOfTables(); i++) { if (checkSysTable(metaData[i]->getTableName())) |