From 1081513a12851d432103eaabcb6533c84062196c Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 22 Jun 2002 20:41:14 +0300 Subject: Many files: Merge 3.23.52 innobase/btr/btr0btr.c: Merge 3.23.52 innobase/btr/btr0cur.c: Merge 3.23.52 innobase/btr/btr0sea.c: Merge 3.23.52 innobase/include/btr0btr.h: Merge 3.23.52 innobase/include/btr0cur.h: Merge 3.23.52 innobase/include/btr0sea.h: Merge 3.23.52 innobase/include/buf0buf.h: Merge 3.23.52 innobase/include/buf0rea.h: Merge 3.23.52 innobase/include/data0data.h: Merge 3.23.52 innobase/include/data0data.ic: Merge 3.23.52 innobase/include/log0log.h: Merge 3.23.52 innobase/include/log0log.ic: Merge 3.23.52 innobase/include/os0file.h: Merge 3.23.52 innobase/include/page0page.h: Merge 3.23.52 innobase/include/page0page.ic: Merge 3.23.52 innobase/include/row0mysql.h: Merge 3.23.52 innobase/include/trx0roll.h: Merge 3.23.52 innobase/include/trx0sys.h: Merge 3.23.52 innobase/include/trx0trx.h: Merge 3.23.52 innobase/include/ut0ut.h: Merge 3.23.52 innobase/include/univ.i: Merge 3.23.52 innobase/include/ut0ut.ic: Merge 3.23.52 innobase/buf/buf0buf.c: Merge 3.23.52 innobase/buf/buf0rea.c: Merge 3.23.52 innobase/data/data0data.c: Merge 3.23.52 innobase/dict/dict0crea.c: Merge 3.23.52 innobase/dict/dict0dict.c: Merge 3.23.52 innobase/dict/dict0load.c: Merge 3.23.52 innobase/dict/dict0mem.c: Merge 3.23.52 innobase/fsp/fsp0fsp.c: Merge 3.23.52 innobase/ibuf/ibuf0ibuf.c: Merge 3.23.52 innobase/lock/lock0lock.c: Merge 3.23.52 innobase/log/log0log.c: Merge 3.23.52 innobase/log/log0recv.c: Merge 3.23.52 innobase/mtr/mtr0log.c: Merge 3.23.52 innobase/mtr/mtr0mtr.c: Merge 3.23.52 innobase/os/os0file.c: Merge 3.23.52 innobase/page/page0cur.c: Merge 3.23.52 innobase/page/page0page.c: Merge 3.23.52 innobase/rem/rem0cmp.c: Merge 3.23.52 innobase/row/row0ins.c: Merge 3.23.52 innobase/row/row0mysql.c: Merge 3.23.52 innobase/row/row0purge.c: Merge 3.23.52 innobase/row/row0upd.c: Merge 3.23.52 innobase/srv/srv0srv.c: Merge 3.23.52 innobase/srv/srv0start.c: Merge 3.23.52 innobase/trx/trx0roll.c: Merge 3.23.52 innobase/trx/trx0sys.c: Merge 3.23.52 innobase/trx/trx0trx.c: Merge 3.23.52 innobase/trx/trx0undo.c: Merge 3.23.52 innobase/ut/ut0mem.c: Merge 3.23.52 innobase/ut/ut0ut.c: Merge 3.23.52 --- innobase/ibuf/ibuf0ibuf.c | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) (limited to 'innobase/ibuf/ibuf0ibuf.c') diff --git a/innobase/ibuf/ibuf0ibuf.c b/innobase/ibuf/ibuf0ibuf.c index bd1f0e6e1d8..f51a924c87f 100644 --- a/innobase/ibuf/ibuf0ibuf.c +++ b/innobase/ibuf/ibuf0ibuf.c @@ -685,21 +685,21 @@ ibuf_bitmap_get_map_page( /**************************************************************************** Sets the free bits of the page in the ibuf bitmap. This is done in a separate mini-transaction, hence this operation does not restrict further work to only -ibuf bitmap operations, which would result if the latch to the bitmap pag +ibuf bitmap operations, which would result if the latch to the bitmap page were kept. */ UNIV_INLINE void ibuf_set_free_bits_low( /*===================*/ ulint type, /* in: index type */ - page_t* page, /* in: index page; free bit is reset if the index is - a non-clustered non-unique, and page level is 0 */ + page_t* page, /* in: index page; free bit is set if the index is + non-clustered and page level is 0 */ ulint val, /* in: value to set: < 4 */ mtr_t* mtr) /* in: mtr */ { page_t* bitmap_page; - if (type & (DICT_CLUSTERED | DICT_UNIQUE)) { + if (type & DICT_CLUSTERED) { return; } @@ -733,8 +733,8 @@ void ibuf_set_free_bits( /*===============*/ ulint type, /* in: index type */ - page_t* page, /* in: index page; free bit is reset if the index is - a non-clustered non-unique, and page level is 0 */ + page_t* page, /* in: index page; free bit is set if the index is + non-clustered and page level is 0 */ ulint val, /* in: value to set: < 4 */ ulint max_val)/* in: ULINT_UNDEFINED or a maximum value which the bits must have before setting; this is for @@ -743,7 +743,7 @@ ibuf_set_free_bits( mtr_t mtr; page_t* bitmap_page; - if (type & (DICT_CLUSTERED | DICT_UNIQUE)) { + if (type & DICT_CLUSTERED) { return; } @@ -2024,7 +2024,7 @@ ibuf_insert_low( ulint n_stored; ulint bits; - ut_a(!(index->type & (DICT_UNIQUE | DICT_CLUSTERED))); + ut_a(!(index->type & DICT_CLUSTERED)); ut_ad(dtuple_check_typed(entry)); do_merge = FALSE; @@ -2254,10 +2254,7 @@ ibuf_insert( ut_ad(dtuple_check_typed(entry)); - if (index->type & DICT_CLUSTERED || index->type & DICT_UNIQUE) { - - return(FALSE); - } + ut_a(!(index->type & DICT_CLUSTERED)); if (rec_get_converted_size(entry) >= page_get_free_space_of_empty() / 2) { @@ -2302,6 +2299,7 @@ ibuf_insert_to_index_page( rec_t* rec; page_t* bitmap_page; ulint old_bits; + char errbuf[1000]; ut_ad(ibuf_inside()); ut_ad(dtuple_check_typed(entry)); @@ -2324,11 +2322,24 @@ ibuf_insert_to_index_page( /* This time the record must fit */ if (!page_cur_tuple_insert(&page_cur, entry, mtr)) { - printf( - "Ibuf insert fails; page free %lu, dtuple size %lu\n", + + ut_print_timestamp(stderr); + + fprintf(stderr, +"InnoDB: Error: Insert buffer insert fails; page free %lu, dtuple size %lu\n", page_get_max_insert_size(page, 1), rec_get_converted_size(entry)); + dtuple_sprintf(errbuf, 900, entry); + + fprintf(stderr, +"InnoDB: Cannot insert index record %s\n", errbuf); + + fprintf(stderr, +"InnoDB: The table where where this index record belongs\n" +"InnoDB: is now probably corrupt. Please run CHECK TABLE on\n" +"InnoDB: that table.\n"); + bitmap_page = ibuf_bitmap_get_map_page( buf_frame_get_space_id(page), buf_frame_get_page_no(page), @@ -2339,9 +2350,11 @@ ibuf_insert_to_index_page( buf_frame_get_page_no(page), IBUF_BITMAP_FREE, mtr); - printf("Bitmap bits %lu\n", old_bits); - - ut_error; + fprintf(stderr, "Bitmap bits %lu\n", old_bits); + + fprintf(stderr, +"InnoDB: Send a detailed bug report to mysql@lists.mysql.com!\n"); + } } } -- cgit v1.2.1