IndexNode IndexPage::newIndex(const char* key, int pageId, size_t cursor) { syncFlag = false; size_t size = IndexNode::getSize(key); // Create from free space if (freeSpace() >= size) { IndexNode rec(*this, indexStartPos + indexSpace()); rec.init(key, pageId, cursor); setIndexCount(indexCount() + 1); setIndexSpace(indexSpace() + size); setFreeSpace(freeSpace() - size); return rec; } // Check free node list try { IndexNode rec = freeList->findIndex(size); freeList->shrinkIndex(rec, size); // Init record rec.init(key, pageId, cursor); return rec; } catch (ReachLastIndex) { error("No space for new record"); return IndexNode(*this, 0); // Aviod Warning } }
void IndexPage::init() { //initFile(); initCache(true); setIndexCount(0); setIndexSpace(0); setFreeCursor(0); setFreeSpace(pageSize - headerSize); //sync(); }
void BaseContainer::loadConfiguration( TDEConfigGroup& group ) { setFreeSpace( TQMIN( group.readDoubleNumEntry( "FreeSpace2", 0 ), 1 ) ); doLoadConfiguration( group ); }