// // -- TriggerDB::cleanupPerStatement() // // Called only in case that trigger-persistence is active. Returns a boolean // indicating whether to deallocate triggerDB or not. // If the triggerDB_ is too big (THRASHOLD exceeded) then clear triggerDB and // dealocate it. Else, reset the recursion counters, since triggers persist // across statements. // // only used when triggers are allocated from the cntext heap. // Currently triggers are allocated from the statement heap. // See method Trigger::Heap() in file Triggers.h for more details // LCOV_EXCL_START NABoolean TriggerDB::cleanupPerStatement() { CMPASSERT(Trigger::Heap() == CmpCommon::contextHeap()); if (this != NULL && (entries() >= TRIGGERDB_THRASHOLD)) { clearAndDestroy(); // caller will dealocate triggerDB itself return TRUE; } else { NAHashDictionaryIterator<TableOp,BeforeAndAfterTriggers> iter(*this); TableOp * key = NULL; BeforeAndAfterTriggers* curr = NULL; // iterate over all entries #pragma warning (disable : 4018) //warning elimination for (Int32 i=0; i < iter.entries(); i++) #pragma warning (default : 4018) //warning elimination { iter.getNext(key, curr); CMPASSERT(curr != NULL); //reset recursion counter for all lists ResetRecursionCounter(curr->getAfterRowTriggers()); ResetRecursionCounter(curr->getAfterStatementTriggers()); ResetRecursionCounter(curr->getBeforeTriggers()); curr = NULL; } // Do not deallocate return FALSE; } }
PathFeatureList::~PathFeatureList() { clearAndDestroy(); }