diff options
author | unknown <monty@mashka.mysql.fi> | 2002-07-25 22:46:28 +0300 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2002-07-25 22:46:28 +0300 |
commit | 6ba1aefe909df2651fcace1fe184e3f093d07ab4 (patch) | |
tree | f38c137c73206e3d059517b2bcab6a4a43c957f9 /innobase/btr/btr0btr.c | |
parent | 29cec51551b7a6be66ebf2048f9045eeb0f59d94 (diff) | |
parent | 714e9c881e5af8bbb54c336d0327bae8e4559019 (diff) | |
download | mariadb-git-6ba1aefe909df2651fcace1fe184e3f093d07ab4.tar.gz |
Merge with 3.23.51
Fixed wrong usage of sprintf() in ha_innodb.cc
BitKeeper/etc/logging_ok:
auto-union
BitKeeper/deleted/.del-global.h~e80d28157acfdcb5:
Auto merged
Docs/manual.ja.texi:
Auto merged
include/config-os2.h:
Auto merged
innobase/btr/btr0btr.c:
Auto merged
innobase/btr/btr0cur.c:
Auto merged
innobase/btr/btr0sea.c:
Auto merged
innobase/buf/buf0buf.c:
Auto merged
innobase/data/data0data.c:
Auto merged
innobase/dict/dict0crea.c:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
innobase/fil/fil0fil.c:
Auto merged
innobase/fsp/fsp0fsp.c:
Auto merged
innobase/ibuf/ibuf0ibuf.c:
Auto merged
innobase/include/buf0buf.ic:
Auto merged
innobase/include/srv0srv.h:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/log/log0log.c:
Auto merged
innobase/mtr/mtr0mtr.c:
Auto merged
innobase/os/os0file.c:
Auto merged
innobase/page/page0cur.c:
Auto merged
innobase/page/page0page.c:
Auto merged
innobase/rem/rem0cmp.c:
Auto merged
innobase/row/row0ins.c:
Auto merged
innobase/row/row0purge.c:
Auto merged
innobase/row/row0umod.c:
Auto merged
innobase/row/row0upd.c:
Auto merged
innobase/sync/sync0arr.c:
Auto merged
innobase/sync/sync0sync.c:
Auto merged
innobase/trx/trx0roll.c:
Auto merged
innobase/trx/trx0trx.c:
Auto merged
innobase/trx/trx0undo.c:
Auto merged
innobase/ut/ut0ut.c:
Auto merged
isam/pack_isam.c:
Auto merged
mysys/Makefile.am:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/key.cc:
Auto merged
sql/mini_client.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
support-files/my-huge.cnf.sh:
Auto merged
support-files/my-large.cnf.sh:
Auto merged
support-files/my-medium.cnf.sh:
Auto merged
support-files/my-small.cnf.sh:
Auto merged
Docs/manual.texi:
Merge with 3.23.51
configure.in:
Merge with 3.23.51
include/Makefile.am:
Merge with 3.23.51
innobase/dict/dict0load.c:
Merge with 3.23.51
innobase/include/univ.i:
Merge with 3.23.51
innobase/row/row0mysql.c:
Merge with 3.23.51
innobase/srv/srv0srv.c:
Merge with 3.23.51
innobase/srv/srv0start.c:
Merge with 3.23.51
myisam/mi_cache.c:
Merge with 3.23.51
myisammrg/myrg_rnext.c:
Merge with 3.23.51
myisammrg/myrg_rprev.c:
Merge with 3.23.51
sql/ha_innodb.cc:
Merge with 3.23.51
Changed used of sprintf() to make code portable.
sql/handler.cc:
Indentation change
sql/lex.h:
Comment cleanup
sql/log.cc:
Merge with 3.23.51
sql/log_event.h:
Merge with 3.23.51
sql/mysql_priv.h:
Merge with 3.23.51
sql/mysqld.cc:
Merge with 3.23.51
Cleaned up handling of innodb_flush_log_at_trx_commit
sql/share/portuguese/errmsg.txt:
Merge with 3.23.51
sql/slave.cc:
Not merged as this affects many files; Will be fixed in next changeset
sql/slave.h:
Merge with 3.23.51
sql/sql_acl.cc:
Merge with 3.23.51 (no changes)
sql/sql_db.cc:
Merge with 3.23.51
sql/sql_parse.cc:
Merge with 3.23.51
sql/sql_yacc.yy:
Merge with 3.23.51
(Renamed NO_FOREIGN_KEY_CHECKS and RELAXED_UNIQUE_CHECKS)
support-files/mysql.spec.sh:
Merge with 3.23.51
Diffstat (limited to 'innobase/btr/btr0btr.c')
-rw-r--r-- | innobase/btr/btr0btr.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/innobase/btr/btr0btr.c b/innobase/btr/btr0btr.c index 0263996a429..38d97785832 100644 --- a/innobase/btr/btr0btr.c +++ b/innobase/btr/btr0btr.c @@ -572,6 +572,13 @@ btr_page_get_father_for_rec( if (btr_node_ptr_get_child_page_no(node_ptr) != buf_frame_get_page_no(page)) { + fprintf(stderr, +"InnoDB: Dump of the child page:\n"); + buf_page_print(buf_frame_align(page)); + fprintf(stderr, +"InnoDB: Dump of the parent page:\n"); + buf_page_print(buf_frame_align(node_ptr)); + fprintf(stderr, "InnoDB: Corruption of an index tree: table %s, index %s,\n" "InnoDB: father ptr page no %lu, child page no %lu\n", @@ -581,6 +588,12 @@ btr_page_get_father_for_rec( buf_frame_get_page_no(page)); page_rec_print(page_rec_get_next(page_get_infimum_rec(page))); page_rec_print(node_ptr); + + fprintf(stderr, +"InnoDB: You should dump + drop + reimport the table to fix the\n" +"InnoDB: corruption. If the crash happens at the database startup, see\n" +"InnoDB: section 6.1 of http://www.innodb.com/ibman.html about forcing\n" +"InnoDB: recovery. Then dump + drop + reimport.\n"); } ut_a(btr_node_ptr_get_child_page_no(node_ptr) == @@ -780,12 +793,14 @@ top_loop: /***************************************************************** Reorganizes an index page. */ - +static void btr_page_reorganize_low( /*====================*/ - ibool low, /* in: TRUE if locks should not be updated, i.e., - there cannot exist locks on the page */ + ibool recovery,/* in: TRUE if called in recovery: locks should not + be updated, i.e., there cannot exist locks on the + page, and a hash index should not be dropped: it + cannot exist */ page_t* page, /* in: page to be reorganized */ mtr_t* mtr) /* in: mtr */ { @@ -805,7 +820,9 @@ btr_page_reorganize_low( /* Copy the old page to temporary space */ buf_frame_copy(new_page, page); - btr_search_drop_page_hash_index(page); + if (!recovery) { + btr_search_drop_page_hash_index(page); + } /* Recreate the page: note that global data on page (possible segment headers, next page-field, etc.) is preserved intact */ @@ -820,7 +837,7 @@ btr_page_reorganize_low( /* Copy max trx id to recreated page */ page_set_max_trx_id(page, page_get_max_trx_id(new_page)); - if (!low) { + if (!recovery) { /* Update the record lock bitmaps */ lock_move_reorganize_page(page, new_page); } @@ -2059,8 +2076,7 @@ btr_discard_page( btr_search_drop_page_hash_index(page); - if ((left_page_no == FIL_NULL) - && (btr_page_get_level(page, mtr) > 0)) { + if (left_page_no == FIL_NULL && btr_page_get_level(page, mtr) > 0) { /* We have to mark the leftmost node pointer on the right side page as the predefined minimum record */ |