List:Commits« Previous MessageNext Message »
From:Christopher Powers Date:February 10 2009 10:00pm
Subject:bzr push into mysql-6.0-falcon-team branch (christopher.powers:3011 to
3012) Bug#36442
View as plain text  
 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

 3011 Olav Sandstaa	2009-02-10 [merge]
      Merging...
renamed:
  mysql-test/suite/falcon/r/falcon_bug_34351_B.result => mysql-test/suite/falcon_team/r/falcon_bug_34351_B.result
  mysql-test/suite/falcon/r/falcon_bug_34351_C.result => mysql-test/suite/falcon_team/r/falcon_bug_34351_C.result
  mysql-test/suite/falcon/t/falcon_bug_34351_B.test => mysql-test/suite/falcon_team/t/falcon_bug_34351_B.test
  mysql-test/suite/falcon/t/falcon_bug_34351_C.test => mysql-test/suite/falcon_team/t/falcon_bug_34351_C.test
modified:
  mysql-test/include/wait_until_connected_again.inc
  mysql-test/r/subselect3.result
  mysql-test/r/subselect3_jcl6.result
  mysql-test/suite/falcon_team/t/test2bug.def
  mysql-test/t/subselect3.test
  sql/handler.cc
  sql/handler.h
  sql/sql_select.cc
  storage/falcon/StorageVersion.h
  storage/innobase/handler/ha_innodb.cc
  storage/maria/ha_maria.cc
  storage/myisam/ha_myisam.cc

=== 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 push into mysql-6.0-falcon-team branch (christopher.powers:3011 to3012) Bug#36442Christopher Powers10 Feb