From: Date: August 26 2008 12:09am Subject: bzr commit into mysql-6.0-falcon branch (klewis:2800) Bug#39025 List-Archive: http://lists.mysql.com/commits/52508 X-Bug: 39025 Message-Id: <200808252209.m7PM9KPm002057@mail.mysql.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///C:/Work/bzr/Merge/mysql-6.0-falcon/ 2800 Kevin Lewis 2008-08-25 Bug#39025 Wrte pages to the serial log in this order; 1) The new right page first, 2) then the previously existing left page (which is now half full), 3) then the parent page modified: storage/falcon/Index2RootPage.cpp storage/falcon/IndexRootPage.cpp per-file messages: storage/falcon/Index2RootPage.cpp Bug#39025 Wrte pages to the serial log in this order; 1) The new right page first, 2) then the previously existing left page (which is now half full), 3) then the parent page storage/falcon/IndexRootPage.cpp Bug#39025 Wrte pages to the serial log in this order; 1) The new right page first, 2) then the previously existing left page (which is now half full), 3) then the parent page. === modified file 'storage/falcon/Index2RootPage.cpp' --- a/storage/falcon/Index2RootPage.cpp 2008-03-27 06:09:29 +0000 +++ b/storage/falcon/Index2RootPage.cpp 2008-08-25 22:09:13 +0000 @@ -518,9 +518,9 @@ bool Index2RootPage::splitIndexPage(Dbb leftPage->parentPage = bdb->pageNumber; splitPage->parentPage = bdb->pageNumber; - Index2Page::logIndexPage(bdb, transId); Index2Page::logIndexPage(splitBdb, transId); Index2Page::logIndexPage(leftBdb, transId); + Index2Page::logIndexPage(bdb, transId); splitBdb->release(REL_HISTORY); leftBdb->release(REL_HISTORY); === modified file 'storage/falcon/IndexRootPage.cpp' --- a/storage/falcon/IndexRootPage.cpp 2008-05-14 18:39:57 +0000 +++ b/storage/falcon/IndexRootPage.cpp 2008-08-25 22:09:13 +0000 @@ -552,12 +552,16 @@ bool IndexRootPage::splitIndexPage(Dbb * page->addNode(dbb, &dummy, END_LEVEL); page->addNode(dbb, &leftKey, leftBdb->pageNumber); page->addNode(dbb, &splitKey, splitBdb->pageNumber); - + leftPage->parentPage = bdb->pageNumber; splitPage->parentPage = bdb->pageNumber; - IndexPage::logIndexPage(bdb, transId); + + // the order of adding these to the serial log is important. + // Recovery must write them in this order incase recovery itself crashes. + IndexPage::logIndexPage(splitBdb, transId); IndexPage::logIndexPage(leftBdb, transId); + IndexPage::logIndexPage(bdb, transId); /*** IndexPage::printPage(bdb, false);