3414 Marko Mäkelä 2010-04-22
Correct the definition of DICT_SYS_INDEXES_NAME_FIELD.
When row_merge_drop_temp_indexes() was reworked to drop the indexes
via the data dictionary cache, the code was broken because it would
read the index name from the wrong field.
modified:
storage/innodb_plugin/ChangeLog
storage/innodb_plugin/dict/dict0boot.c
storage/innodb_plugin/include/dict0boot.h
3413 Marko Mäkelä 2010-04-21
btr_page_split_and_insert(): Avoid an infinite loop. (Bug #52964)
btr_page_tuple_smaller(): New function, refactored from
btr_page_split_and_insert().
btr_page_get_split_rec(): Renamed from btr_page_get_sure_split_rec().
Note that a NULL return may mean that the tuple is to be inserted into
either the lower or upper page, to be determined by btr_page_tuple_smaller().
btr_page_split_and_insert(): When btr_page_get_split_rec() returns NULL,
invoke btr_page_tuple_smaller() to determine which half-page the tuple
belongs to.
Reviewed by Sunny Bains
modified:
storage/innodb_plugin/ChangeLog
storage/innodb_plugin/btr/btr0btr.c
=== modified file 'storage/innodb_plugin/ChangeLog'
--- a/storage/innodb_plugin/ChangeLog 2010-04-21 18:53:59 +0000
+++ b/storage/innodb_plugin/ChangeLog 2010-04-22 09:33:42 +0000
@@ -1,3 +1,9 @@
+2010-04-22 The InnoDB Team
+
+ * include/dict0boot.h, dict/dict0boot.c:
+ Fix a bug that prevented the crash recovery of fast CREATE INDEX
+ from dropping partially created indexes.
+
2010-04-21 The InnoDB Team
* btr/btr0btr.c:
=== modified file 'storage/innodb_plugin/dict/dict0boot.c'
--- a/storage/innodb_plugin/dict/dict0boot.c 2010-02-20 16:45:41 +0000
+++ b/storage/innodb_plugin/dict/dict0boot.c 2010-04-22 09:33:42 +0000
@@ -368,8 +368,8 @@ dict_boot(void)
#if DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2
#error "DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2"
#endif
-#if DICT_SYS_INDEXES_NAME_FIELD != 1 + 2
-#error "DICT_SYS_INDEXES_NAME_FIELD != 1 + 2"
+#if DICT_SYS_INDEXES_NAME_FIELD != 2 + 2
+#error "DICT_SYS_INDEXES_NAME_FIELD != 2 + 2"
#endif
table->id = DICT_INDEXES_ID;
=== modified file 'storage/innodb_plugin/include/dict0boot.h'
--- a/storage/innodb_plugin/include/dict0boot.h 2010-02-20 16:45:41 +0000
+++ b/storage/innodb_plugin/include/dict0boot.h 2010-04-22 09:33:42 +0000
@@ -137,7 +137,7 @@ clustered index */
#define DICT_SYS_INDEXES_PAGE_NO_FIELD 8
#define DICT_SYS_INDEXES_SPACE_NO_FIELD 7
#define DICT_SYS_INDEXES_TYPE_FIELD 6
-#define DICT_SYS_INDEXES_NAME_FIELD 3
+#define DICT_SYS_INDEXES_NAME_FIELD 4
/* When a row id which is zero modulo this number (which must be a power of
two) is assigned, the field DICT_HDR_ROW_ID on the dictionary header page is
Attachment: [text/bzr-bundle] bzr/marko.makela@oracle.com-20100422093342-jf9ojlzdqsdebohn.bundle
| Thread |
|---|
| • bzr push into mysql-5.1-innodb branch (marko.makela:3413 to 3414) | marko.makela | 22 Apr |