Bug #29960 | Falcon: Crash on two-way running dbt2 | ||
---|---|---|---|
Submitted: | 22 Jul 2007 16:43 | Modified: | 7 Aug 2007 6:56 |
Reporter: | Calvin Sun | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S1 (Critical) |
Version: | 6.0.1 | OS: | Linux |
Assigned to: | Christopher Powers | CPU Architecture: | Any |
[22 Jul 2007 16:43]
Calvin Sun
[23 Jul 2007 21:55]
Christopher Powers
The assertion redoIndexPage is erroneous and will be removed. Details This is similar to the (page->level == level - 1) assert in findInsertionLeaf(), which had to be modified to accommodate lateral searches across child pages at the same level. The difference here is that redoIndexPage() is reconstructing rather than traversing the index. The intent of the assertion is to ensure that the recently fetched parent page resides at a higher level--a reasonable expectation. However, the parent page pointer is redundant not necessarily reliable. From the design doc notes: "The parent pointer in an index page is not reliable. It is a reliable indicator that the page is not the root of the index, and on new index pages, it does point to the page that is the parent of the new page. However, when a parent page splits some lower level page pointers generally move to the newly created upper level page. Those lower level pages do not have their parent pointers adjusted. The exception implied by 'generally' is that a split at the end of a level leaves existing entries where they are and puts only the new entry in the new page." Therefore, if a parent page pointer is not reliable, then it should not be validated during index reconstruction from the serial log.
[27 Jul 2007 9:00]
Calvin Sun
it is fixed.
[7 Aug 2007 6:56]
MC Brown
No documentation needed.