Bug#13358468 ASSERTION FAILURE IN BTR_PCUR_GET_BLOCK
btr_pcur_restore_position_func(): When the cursor was positioned at the tree infimum or supremum, initialize pos_state and latch_mode. The assertion failed, because pos_state was BTR_PCUR_WAS_POSITIONED. In the test failure of WL#5874, the purge thread attempted to restore the cursor position on the infimum record (the clustered index was empty). btr_pcur_detach(), btr_pcur_is_detached(): Unused functions, remove. rb:804 approved by Inaam Rana
This commit is contained in:
parent
2cb3c205ba
commit
f62a233a4d
@ -1,7 +1,12 @@
|
|||||||
|
2011-11-08 The InnoDB Team
|
||||||
|
|
||||||
|
* btr/btr0pcur.c, include/btr0pcur.h, include/btr0pcur.ic:
|
||||||
|
Fix Bug#13358468 ASSERTION FAILURE IN BTR_PCUR_GET_BLOCK
|
||||||
|
|
||||||
2011-10-27 The InnoDB Team
|
2011-10-27 The InnoDB Team
|
||||||
|
|
||||||
* row/row0mysql.c:
|
* row/row0mysql.c:
|
||||||
Fix Bug #12884631 62146: TABLES ARE LOST FOR DDL
|
Fix Bug#12884631 62146: TABLES ARE LOST FOR DDL
|
||||||
|
|
||||||
2011-10-20 The InnoDB Team
|
2011-10-20 The InnoDB Team
|
||||||
|
|
||||||
|
@ -247,6 +247,8 @@ btr_pcur_restore_position_func(
|
|||||||
cursor->rel_pos == BTR_PCUR_BEFORE_FIRST_IN_TREE,
|
cursor->rel_pos == BTR_PCUR_BEFORE_FIRST_IN_TREE,
|
||||||
index, latch_mode, btr_pcur_get_btr_cur(cursor), mtr);
|
index, latch_mode, btr_pcur_get_btr_cur(cursor), mtr);
|
||||||
|
|
||||||
|
cursor->latch_mode = latch_mode;
|
||||||
|
cursor->pos_state = BTR_PCUR_IS_POSITIONED;
|
||||||
cursor->block_when_stored = btr_pcur_get_block(cursor);
|
cursor->block_when_stored = btr_pcur_get_block(cursor);
|
||||||
|
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
|
@ -279,14 +279,6 @@ btr_pcur_commit_specify_mtr(
|
|||||||
/*========================*/
|
/*========================*/
|
||||||
btr_pcur_t* pcur, /*!< in: persistent cursor */
|
btr_pcur_t* pcur, /*!< in: persistent cursor */
|
||||||
mtr_t* mtr); /*!< in: mtr to commit */
|
mtr_t* mtr); /*!< in: mtr to commit */
|
||||||
/**************************************************************//**
|
|
||||||
Tests if a cursor is detached: that is the latch mode is BTR_NO_LATCHES.
|
|
||||||
@return TRUE if detached */
|
|
||||||
UNIV_INLINE
|
|
||||||
ibool
|
|
||||||
btr_pcur_is_detached(
|
|
||||||
/*=================*/
|
|
||||||
btr_pcur_t* pcur); /*!< in: persistent cursor */
|
|
||||||
/*********************************************************//**
|
/*********************************************************//**
|
||||||
Moves the persistent cursor to the next record in the tree. If no records are
|
Moves the persistent cursor to the next record in the tree. If no records are
|
||||||
left, the cursor stays 'after last in tree'.
|
left, the cursor stays 'after last in tree'.
|
||||||
|
@ -415,38 +415,6 @@ btr_pcur_commit_specify_mtr(
|
|||||||
pcur->pos_state = BTR_PCUR_WAS_POSITIONED;
|
pcur->pos_state = BTR_PCUR_WAS_POSITIONED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************//**
|
|
||||||
Sets the pcur latch mode to BTR_NO_LATCHES. */
|
|
||||||
UNIV_INLINE
|
|
||||||
void
|
|
||||||
btr_pcur_detach(
|
|
||||||
/*============*/
|
|
||||||
btr_pcur_t* pcur) /*!< in: persistent cursor */
|
|
||||||
{
|
|
||||||
ut_a(pcur->pos_state == BTR_PCUR_IS_POSITIONED);
|
|
||||||
|
|
||||||
pcur->latch_mode = BTR_NO_LATCHES;
|
|
||||||
|
|
||||||
pcur->pos_state = BTR_PCUR_WAS_POSITIONED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************//**
|
|
||||||
Tests if a cursor is detached: that is the latch mode is BTR_NO_LATCHES.
|
|
||||||
@return TRUE if detached */
|
|
||||||
UNIV_INLINE
|
|
||||||
ibool
|
|
||||||
btr_pcur_is_detached(
|
|
||||||
/*=================*/
|
|
||||||
btr_pcur_t* pcur) /*!< in: persistent cursor */
|
|
||||||
{
|
|
||||||
if (pcur->latch_mode == BTR_NO_LATCHES) {
|
|
||||||
|
|
||||||
return(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************//**
|
/**************************************************************//**
|
||||||
Sets the old_rec_buf field to NULL. */
|
Sets the old_rec_buf field to NULL. */
|
||||||
UNIV_INLINE
|
UNIV_INLINE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user