summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <aivanov@mysql.com>2006-01-15 14:50:47 +0300
committerunknown <aivanov@mysql.com>2006-01-15 14:50:47 +0300
commit5497a05a983f2b64f185ae99d94d265357a8d3c4 (patch)
treeea8f485c5ac84f163361f95caba927366df83d70 /innobase
parent4e195cbd520d30260e226af9e27cb937335ca1f1 (diff)
downloadmariadb-git-5497a05a983f2b64f185ae99d94d265357a8d3c4.tar.gz
Changes from innodb-4.1-ss14 snapshot
Fixed BUG#14056: Column prefix index on UTF-8 primary key causes "Can't find record.." Also fixed bug 15991. innobase/include/os0file.h: Changes from innodb-4.1-ss14 snapshot os_file_hadle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR. This fixes the crash on RENAME TABLE when the .ibd file is a symbolic link to a different file system. (Bug 15991) innobase/os/os0file.c: Changes from innodb-4.1-ss14 snapshot os_file_hadle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR. This fixes the crash on RENAME TABLE when the .ibd file is a symbolic link to a different file system. (Bug 15991) mysql-test/r/innodb.result: Changes from innodb-4.1-ss14 snapshot Fixed BUG#14056: Column prefix index on UTF-8 primary key causes "Can't find record.." mysql-test/t/innodb.test: Changes from innodb-4.1-ss14 snapshot Fixed BUG#14056: Column prefix index on UTF-8 primary key causes "Can't find record.." sql/ha_innodb.cc: Changes from innodb-4.1-ss14 snapshot Fixed BUG#14056: Column prefix index on UTF-8 primary key causes "Can't find record.."
Diffstat (limited to 'innobase')
-rw-r--r--innobase/include/os0file.h5
-rw-r--r--innobase/os/os0file.c8
2 files changed, 9 insertions, 4 deletions
diff --git a/innobase/include/os0file.h b/innobase/include/os0file.h
index cd07eb49cd6..0091e942d2c 100644
--- a/innobase/include/os0file.h
+++ b/innobase/include/os0file.h
@@ -86,9 +86,10 @@ log. */
#define OS_FILE_NOT_FOUND 71
#define OS_FILE_DISK_FULL 72
#define OS_FILE_ALREADY_EXISTS 73
-#define OS_FILE_AIO_RESOURCES_RESERVED 74 /* wait for OS aio resources
+#define OS_FILE_PATH_ERROR 74
+#define OS_FILE_AIO_RESOURCES_RESERVED 75 /* wait for OS aio resources
to become available again */
-#define OS_FILE_ERROR_NOT_SPECIFIED 75
+#define OS_FILE_ERROR_NOT_SPECIFIED 76
/* Types for aio operations */
#define OS_FILE_READ 10
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c
index 49f88c0d62a..6ef6f7cd545 100644
--- a/innobase/os/os0file.c
+++ b/innobase/os/os0file.c
@@ -303,6 +303,8 @@ os_file_get_last_error(
return(OS_FILE_NOT_FOUND);
} else if (err == EEXIST) {
return(OS_FILE_ALREADY_EXISTS);
+ } else if (err == EXDEV || err == ENOTDIR || err == EISDIR) {
+ return(OS_FILE_PATH_ERROR);
} else {
return(100 + err);
}
@@ -352,7 +354,8 @@ os_file_handle_error(
return(TRUE);
- } else if (err == OS_FILE_ALREADY_EXISTS) {
+ } else if (err == OS_FILE_ALREADY_EXISTS
+ || err == OS_FILE_PATH_ERROR) {
return(FALSE);
} else {
@@ -456,7 +459,8 @@ os_file_handle_error_no_exit(
return(TRUE);
- } else if (err == OS_FILE_ALREADY_EXISTS) {
+ } else if (err == OS_FILE_ALREADY_EXISTS
+ || err == OS_FILE_PATH_ERROR) {
return(FALSE);
} else {