3638 Marko Mäkelä 2011-11-08
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
modified:
storage/innodb_plugin/ChangeLog
storage/innodb_plugin/btr/btr0pcur.c
storage/innodb_plugin/include/btr0pcur.h
storage/innodb_plugin/include/btr0pcur.ic
3637 Marko Mäkelä 2011-11-07
Add debug assertions to catch Bug#13345378 earlier.
In all callers of row_sel_convert_mysql_key_to_innobase(), assert
that the converted key is empty or nonempty when it should be.
modified:
storage/innobase/handler/ha_innodb.cc
storage/innodb_plugin/handler/ha_innodb.cc
=== modified file 'storage/innodb_plugin/ChangeLog'
--- a/storage/innodb_plugin/ChangeLog revid:marko.makela@oracle.com-20111107113719-geae9ea2tpy1li52
+++ b/storage/innodb_plugin/ChangeLog revid:marko.makela@stripped121522-hyfqxk533a9bnnkf
@@ -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
* 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
=== modified file 'storage/innodb_plugin/btr/btr0pcur.c'
--- a/storage/innodb_plugin/btr/btr0pcur.c revid:marko.makela@stripped107113719-geae9ea2tpy1li52
+++ b/storage/innodb_plugin/btr/btr0pcur.c revid:marko.makela@stripped-hyfqxk533a9bnnkf
@@ -247,6 +247,8 @@ btr_pcur_restore_position_func(
cursor->rel_pos == BTR_PCUR_BEFORE_FIRST_IN_TREE,
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);
return(FALSE);
=== modified file 'storage/innodb_plugin/include/btr0pcur.h'
--- a/storage/innodb_plugin/include/btr0pcur.h revid:marko.makela@strippedli52
+++ b/storage/innodb_plugin/include/btr0pcur.h revid:marko.makela@stripped
@@ -279,14 +279,6 @@ btr_pcur_commit_specify_mtr(
/*========================*/
btr_pcur_t* pcur, /*!< in: persistent cursor */
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
left, the cursor stays 'after last in tree'.
=== modified file 'storage/innodb_plugin/include/btr0pcur.ic'
--- a/storage/innodb_plugin/include/btr0pcur.ic revid:marko.makela@stripped7113719-geae9ea2tpy1li52
+++ b/storage/innodb_plugin/include/btr0pcur.ic revid:marko.makela@stripped522-hyfqxk533a9bnnkf
@@ -416,38 +416,6 @@ btr_pcur_commit_specify_mtr(
}
/**************************************************************//**
-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. */
UNIV_INLINE
void
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-5.1 branch (marko.makela:3637 to 3638) Bug#13358468 | marko.makela | 11 Nov |