summaryrefslogtreecommitdiff
path: root/innobase/fil
diff options
context:
space:
mode:
authorunknown <aivanov@mysql.com>2006-03-29 23:04:32 +0400
committerunknown <aivanov@mysql.com>2006-03-29 23:04:32 +0400
commitfd6db50c0b6cd9f150ce0c53bb208ea6cf5ec91d (patch)
tree78b7b5f8fe975f9280333421e9b343ff4cf20588 /innobase/fil
parent17d2b065f479aab2162a2d63bc51e3b6638f71d1 (diff)
downloadmariadb-git-fd6db50c0b6cd9f150ce0c53bb208ea6cf5ec91d.tar.gz
Applied innodb-5.0-ss368 snapshot
Fixed bugs: #16814: SHOW INNODB STATUS format error in LATEST FOREIGN KEY ERROR section dict_foreign_key_error_report(): Always print a newline after invoking dict_print_info_on_foreign_key_in_create_format(). #16827: Better InnoDB error message if ibdata files omitted from my.cnf. #17126: CHECK TABLE on InnoDB causes a short hang during check of adaptive hash. CHECK TABLE blocking other queries, by releasing the btr_search_latch periodically during the adaptive hash table validation. #17405: Valgrind: conditional jump or move depends on uninitialised valuesw. buf_block_init(): Reset magic_n, buf_fix_count, and io_fix to avoid testing uninitialised variables. #18077: InnoDB uses full explicit table locks in stored FUNCTION. #18238: When locks exhaust the buffer pool, InnoDB does not roll back the trx. Check in pessimistic insert and update if the buffer pool is exhausted by locks. #18252: Disk space leaks in updates of InnoDB BLOB rows. btr_cur_pessimistic_update(): Invoke rec_get_offset() after rec_set_field_extern_bits(). btr_store_big_rec_extern_fields(): Note that offsets will no longer be valid after calling this function. #18283: When InnoDB returns error 'lock table full', MySQL can write to binlog too much. #18384: InnoDB memory leak on duplicate key errors if row has many columns. row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at func_exit if needed. #18350: Use consistent read in CREATE ... SELECT .. if innodb_locks_unsafe_for_binlog is used. innobase/btr/btr0cur.c: Applied innodb-5.0-ss368 snapshot innobase/btr/btr0sea.c: Applied innodb-5.0-ss368 snapshot innobase/buf/buf0buf.c: Applied innodb-5.0-ss368 snapshot innobase/buf/buf0lru.c: Applied innodb-5.0-ss368 snapshot innobase/data/data0type.c: Applied innodb-5.0-ss368 snapshot dtype_print(): Fix printing of prtype. innobase/dict/dict0dict.c: Applied innodb-5.0-ss368 snapshot innobase/fil/fil0fil.c: Applied innodb-5.0-ss368 snapshot fil_extend_space_to_desired_size(): in UNIV_HOTBACKUP builds, do not touch srv_data_file_sizes[] or srv_n_data_files. innobase/ha/ha0ha.c: Applied innodb-5.0-ss368 snapshot innobase/include/btr0cur.h: Applied innodb-5.0-ss368 snapshot innobase/include/buf0lru.h: Applied innodb-5.0-ss368 snapshot innobase/include/ha0ha.h: Applied innodb-5.0-ss368 snapshot innobase/include/page0page.ic: Applied innodb-5.0-ss368 snapshot Remove UNIV_RELEASE_NOT_YET_STABLE and related checks. innobase/include/univ.i: Applied innodb-5.0-ss368 snapshot Remove UNIV_RELEASES_NOT_YET_STABLE and related checks. innobase/row/row0ins.c: Applied innodb-5.0-ss368 snapshot innobase/row/row0sel.c: Applied innodb-5.0-ss368 snapshot Remove UNIV_RELEASE_NOT_YET_STABLE and related checks. page_rec_is_comp(): Remove the bounds check. row_sel_field_store_in_mysql_format(): Turn the assertions on mbminlen, mbmaxlen, and templ->type into debug assertions. innobase/row/row0upd.c: Applied innodb-5.0-ss368 snapshot mysql-test/t/innodb.test: Applied innodb-5.0-ss368 snapshot sql/ha_innodb.cc: Applied innodb-5.0-ss368 snapshot Fix memory allocation bug (by changing MY_WME to MY_FAE) in get_share. Also partially fix coding style of the function.
Diffstat (limited to 'innobase/fil')
-rw-r--r--innobase/fil/fil0fil.c50
1 files changed, 33 insertions, 17 deletions
diff --git a/innobase/fil/fil0fil.c b/innobase/fil/fil0fil.c
index 69c076d78f3..cfd9813101d 100644
--- a/innobase/fil/fil0fil.c
+++ b/innobase/fil/fil0fil.c
@@ -3557,6 +3557,7 @@ fil_extend_space_to_desired_size(
*actual_size = space->size;
+#ifndef UNIV_HOTBACKUP
if (space_id == 0) {
ulint pages_per_mb = (1024 * 1024) / UNIV_PAGE_SIZE;
@@ -3566,6 +3567,7 @@ fil_extend_space_to_desired_size(
srv_data_file_sizes[srv_n_data_files - 1] =
(node->size / pages_per_mb) * pages_per_mb;
}
+#endif /* !UNIV_HOTBACKUP */
/*
printf("Extended %s to %lu, actual size %lu pages\n", space->name,
@@ -3821,6 +3823,31 @@ fil_node_complete_io(
}
/************************************************************************
+Report information about an invalid page access. */
+static
+void
+fil_report_invalid_page_access(
+/*===========================*/
+ ulint block_offset, /* in: block offset */
+ ulint space_id, /* in: space id */
+ const char* space_name, /* in: space name */
+ ulint byte_offset, /* in: byte offset */
+ ulint len, /* in: I/O length */
+ ulint type) /* in: I/O type */
+{
+ fprintf(stderr,
+ "InnoDB: Error: trying to access page number %lu in space %lu,\n"
+ "InnoDB: space name %s,\n"
+ "InnoDB: which is outside the tablespace bounds.\n"
+ "InnoDB: Byte offset %lu, len %lu, i/o type %lu.\n"
+ "InnoDB: If you get this error at mysqld startup, please check that\n"
+ "InnoDB: your my.cnf matches the ibdata files that you have in the\n"
+ "InnoDB: MySQL server.\n",
+ (ulong) block_offset, (ulong) space_id, space_name,
+ (ulong) byte_offset, (ulong) len, (ulong) type);
+}
+
+/************************************************************************
Reads or writes data. This operation is asynchronous (aio). */
ulint
@@ -3926,14 +3953,8 @@ fil_io(
for (;;) {
if (node == NULL) {
- fprintf(stderr,
- "InnoDB: Error: trying to access page number %lu in space %lu,\n"
- "InnoDB: space name %s,\n"
- "InnoDB: which is outside the tablespace bounds.\n"
- "InnoDB: Byte offset %lu, len %lu, i/o type %lu\n",
- (ulong) block_offset, (ulong) space_id,
- space->name, (ulong) byte_offset, (ulong) len,
- (ulong) type);
+ fil_report_invalid_page_access(block_offset, space_id,
+ space->name, byte_offset, len, type);
ut_error;
}
@@ -3962,15 +3983,10 @@ fil_io(
if (space->purpose == FIL_TABLESPACE && space->id != 0
&& node->size <= block_offset) {
- fprintf(stderr,
- "InnoDB: Error: trying to access page number %lu in space %lu,\n"
- "InnoDB: space name %s,\n"
- "InnoDB: which is outside the tablespace bounds.\n"
- "InnoDB: Byte offset %lu, len %lu, i/o type %lu\n",
- (ulong) block_offset, (ulong) space_id,
- space->name, (ulong) byte_offset, (ulong) len,
- (ulong) type);
- ut_a(0);
+ fil_report_invalid_page_access(block_offset, space_id,
+ space->name, byte_offset, len, type);
+
+ ut_error;
}
/* Now we have made the changes in the data structures of system */