From 1081513a12851d432103eaabcb6533c84062196c Mon Sep 17 00:00:00 2001
From: unknown <heikki@hundin.mysql.fi>
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')

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