List:Commits« Previous MessageNext Message »
From:Christopher Powers Date:February 10 2009 10:00pm
Subject:bzr commit into mysql-6.0-falcon-team branch (christopher.powers:3012)
Bug#36442
View as plain text  
#At file:///home/cpowers/work/dev/dev-05/mysql/

 3012 Christopher Powers	2009-02-10
      Bug #36442, "Falcon: crash during optimize table"
            
      Refined Table::optimize() to release each base record.
      Records having newer record versions were not being released.
modified:
  storage/falcon/Table.cpp

per-file messages:
  storage/falcon/Table.cpp
    Table::optimize()
        
    fetchNext() returns base record with additional use count.
    fetchVersion() returns record version without use count. 
       
    Only call release() for the base record to
    ensure it is released from memory.
=== modified file 'storage/falcon/Table.cpp'
--- a/storage/falcon/Table.cpp	2009-02-09 10:33:13 +0000
+++ b/storage/falcon/Table.cpp	2009-02-10 22:00:13 +0000
@@ -3576,16 +3576,15 @@ void Table::optimize(Connection *connect
 	int recordNumber = 0;
 	Transaction *transaction = connection->getTransaction();
 	
-	for (Record *record; (record = fetchNext(recordNumber));)
+	for (Record *candidate; (candidate = fetchNext(recordNumber));)
 		{
-		recordNumber = record->recordNumber + 1;
-		record = record->fetchVersion(transaction);
+		recordNumber = candidate->recordNumber + 1;
+		Record *record = candidate->fetchVersion(transaction);
 		
 		if (record)
-			{
-			record->release(); // no need to keep it around
 			++count;
-			}
+		
+		candidate->release(); // no need to keep it around
 		}
 	
 	cardinality = count;

Thread
bzr commit into mysql-6.0-falcon-team branch (christopher.powers:3012)Bug#36442Christopher Powers10 Feb