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#36442 | Christopher Powers | 10 Feb |