List:Falcon Storage Engine« Previous MessageNext Message »
From:Christopher Powers Date:January 17 2009 8:44am
Subject:Table::checkUniqueRecordVersion()
View as plain text  
Kevin,

This has to be most annoying assert in Falcon, next to the 'active' 
asserts in the Record class.
Historically, this asserted because hasRecord() failed to thaw the 
record, leaving the record state as 'recChilled'. In this case, however, 
dup->state is 'recRollback'.

Do you think we should we check for 'recRollback', too?

bool Table::checkUniqueRecordVersion(...)
[...]
for (Record *dup = rec; dup; dup = dup->getPriorVersion())
   {
   if (dup == record)
     continue;	// Check next record version

     // Get the record's transaction state. Don't wait yet.
     state = transaction->getRelativeState(dup, DO_NOT_WAIT);

     // Check for a deleted record or a record lock
     if (!dup->hasRecord())
       {
       // If the record is a lock record, keep looking for a dup.
       if (dup->state == recLock)
         continue;  // Next record version.

       // The record has been deleted.
>>>   ASSERT(dup->state == recDeleted);   <<<

       switch (state)
         case CommittedVisible:
[...]

Thread
Table::checkUniqueRecordVersion()Christopher Powers17 Jan
  • Re: Table::checkUniqueRecordVersion()Kevin Lewis18 Jan