diff options
author | unknown <serg@serg.mysql.com> | 2002-08-31 23:38:10 +0000 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2002-08-31 23:38:10 +0000 |
commit | f7d6288db21cbfc1315403adfcf8f2e59a5f305f (patch) | |
tree | 91af427b2b554f4b9c83954455900c2424386e02 /innobase | |
parent | 9a1953781acf6de68376ee4a54b8242af7fa2ae3 (diff) | |
parent | c8f6ea2c7c0ae7521025a7ed25d5ee40bd1f9b69 (diff) | |
download | mariadb-git-f7d6288db21cbfc1315403adfcf8f2e59a5f305f.tar.gz |
merged
BitKeeper/etc/logging_ok:
auto-union
Build-tools/Do-compile:
Auto merged
Docs/manual.texi:
Auto merged
innobase/configure.in:
Auto merged
innobase/os/os0file.c:
Auto merged
innobase/os/os0thread.c:
Auto merged
innobase/pars/lexyy.c:
Auto merged
innobase/pars/pars0grm.c:
Auto merged
innobase/pars/pars0grm.y:
Auto merged
innobase/pars/pars0lex.l:
Auto merged
innobase/row/row0mysql.c:
Auto merged
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/configure.in | 2 | ||||
-rw-r--r-- | innobase/os/os0file.c | 25 | ||||
-rw-r--r-- | innobase/os/os0thread.c | 20 | ||||
-rw-r--r-- | innobase/row/row0mysql.c | 12 |
4 files changed, 56 insertions, 3 deletions
diff --git a/innobase/configure.in b/innobase/configure.in index 237db834f7a..761859e5da3 100644 --- a/innobase/configure.in +++ b/innobase/configure.in @@ -90,6 +90,8 @@ case "$target_os" in CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX -DUNIV_HPUX10";; hp*) CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX";; + aix*) + CFLAGS="$CFLAGS -DUNIV_AIX";; irix*) CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";; osf*) diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c index 3ca0fbd68a4..0297388c413 100644 --- a/innobase/os/os0file.c +++ b/innobase/os/os0file.c @@ -11,6 +11,7 @@ Created 10/21/1995 Heikki Tuuri #include "ut0mem.h" #include "srv0srv.h" #include "fil0fil.h" +#include "buf0buf.h" #undef HAVE_FDATASYNC @@ -2105,6 +2106,7 @@ os_aio_simulated_handle( ibool ret; ulint n; ulint i; + ulint len2; segment = os_aio_get_array_and_local_segment(&array, global_segment); @@ -2260,6 +2262,29 @@ consecutive_loop: /* Do the i/o with ordinary, synchronous i/o functions: */ if (slot->type == OS_FILE_WRITE) { + if (array == os_aio_write_array) { + + /* Do a 'last millisecond' check that the page end + is sensible; reported page checksum errors from + Linux seem to wipe over the page end */ + + for (len2 = 0; len2 + UNIV_PAGE_SIZE <= total_len; + len2 += UNIV_PAGE_SIZE) { + if (mach_read_from_4(combined_buf + len2 + + FIL_PAGE_LSN + 4) + != mach_read_from_4(combined_buf + len2 + + UNIV_PAGE_SIZE + - FIL_PAGE_END_LSN + 4)) { + ut_print_timestamp(stderr); + fprintf(stderr, +" InnoDB: ERROR: The page to be written seems corrupt!\n"); + page_print(combined_buf + len2); + fprintf(stderr, +"InnoDB: ERROR: The page to be written seems corrupt!\n"); + } + } + } + ret = os_file_write(slot->name, slot->file, combined_buf, slot->offset, slot->offset_high, total_len); } else { diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c index 13990b6743b..146303b2791 100644 --- a/innobase/os/os0thread.c +++ b/innobase/os/os0thread.c @@ -128,8 +128,28 @@ os_thread_create( pthread_attr_init(&attr); +#ifdef UNIV_AIX + /* We must make sure a thread stack is at least 32 kB, otherwise + InnoDB might crash; we do not know if the default stack size on + AIX is always big enough. An empirical test on AIX-4.3 suggested + the size was 96 kB, though. */ + + ret = pthread_attr_setstacksize(&attr, + (size_t)(PTHREAD_STACK_MIN + 32 * 1024)); + if (ret) { + fprintf(stderr, + "InnoDB: Error: pthread_attr_setstacksize returned %d\n", ret); + exit(1); + } +#endif ret = pthread_create(&pthread, &attr, start_f, arg); + if (ret) { + fprintf(stderr, + "InnoDB: Error: pthread_create returned %d\n", ret); + exit(1); + } + pthread_attr_destroy(&attr); if (srv_set_thread_priorities) { diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 3ee458f43bf..43eef8c5092 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -1350,7 +1350,9 @@ row_create_table_for_mysql( "InnoDB: creating an InnoDB table with the same name in another\n" "InnoDB: database and moving the .frm file to the current database.\n" "InnoDB: Then MySQL thinks the table exists, and DROP TABLE will\n" - "InnoDB: succeed.\n"); + "InnoDB: succeed.\n" + "InnoDB: You can look further help from section 15.1 of\n" + "InnoDB: http://www.innodb.com/ibman.html\n"); } trx->error_state = DB_SUCCESS; @@ -1872,7 +1874,9 @@ row_drop_table_for_mysql( " InnoDB: Error: table %s does not exist in the InnoDB internal\n" "InnoDB: data dictionary though MySQL is trying to drop it.\n" "InnoDB: Have you copied the .frm file of the table to the\n" - "InnoDB: MySQL database directory from another database?\n", + "InnoDB: MySQL database directory from another database?\n" + "InnoDB: You can look further help from section 15.1 of\n" + "InnoDB: http://www.innodb.com/ibman.html\n", name); goto funct_exit; } @@ -2194,7 +2198,9 @@ row_rename_table_for_mysql( fprintf(stderr, " InnoDB: Error: table %s exists in the InnoDB internal data\n" "InnoDB: dictionary though MySQL is trying rename table %s to it.\n" - "InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n", + "InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n" + "InnoDB: You can look further help from section 15.1 of\n" + "InnoDB: http://www.innodb.com/ibman.html\n", new_name, old_name); fprintf(stderr, |