summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <heikki@hundin.mysql.fi>2004-10-26 20:29:11 +0300
committerunknown <heikki@hundin.mysql.fi>2004-10-26 20:29:11 +0300
commita0df01faa5b06c951922ffdbb0ed02260386c080 (patch)
treeebebda4471b8b1b1aa27dbecf53f07d24b74e697
parent8ee124176690ed611c8851e3dd50a823c498a08b (diff)
downloadmariadb-git-a0df01faa5b06c951922ffdbb0ed02260386c080.tar.gz
row0mysql.c:
Print more warnings to the .err log if ALTER TABLE ... IMPORT TABLESPACE fails for some reason os0file.c: Do not call exit(1) if os_file_delete() fails; remove unused parameter from handle_error_no_exit() fil0fil.c: Allow DROP TABLE even if the .ibd file for the table does not exist innobase/fil/fil0fil.c: Allow DROP TABLE even if the .ibd file for the table does not exist innobase/os/os0file.c: Dono not call exit(1) if os_file_delete() fails; remove unused parameter from handle_error_no_exit() innobase/row/row0mysql.c: Print more warnings to the .err log if ALTER TABLE ... IMPORT TABLESPACE fails for some reason
-rw-r--r--innobase/fil/fil0fil.c4
-rw-r--r--innobase/os/os0file.c25
-rw-r--r--innobase/row/row0mysql.c25
3 files changed, 40 insertions, 14 deletions
diff --git a/innobase/fil/fil0fil.c b/innobase/fil/fil0fil.c
index c4fc055dcde..98dea14f47b 100644
--- a/innobase/fil/fil0fil.c
+++ b/innobase/fil/fil0fil.c
@@ -1868,6 +1868,10 @@ try_again:
if (success) {
success = os_file_delete(path);
+
+ if (!success) {
+ success = os_file_delete_if_exists(path);
+ }
}
if (success) {
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c
index f70e8c9b587..5c140e4b798 100644
--- a/innobase/os/os0file.c
+++ b/innobase/os/os0file.c
@@ -410,14 +410,11 @@ os_file_handle_error_no_exit(
/*=========================*/
/* out: TRUE if we should retry the
operation */
- os_file_t file, /* in: file pointer */
const char* name, /* in: name of a file or NULL */
const char* operation)/* in: operation */
{
ulint err;
- UT_NOT_USED(file);
-
err = os_file_get_last_error(FALSE);
if (err == OS_FILE_DISK_FULL) {
@@ -624,7 +621,7 @@ os_file_closedir(
ret = FindClose(dir);
if (!ret) {
- os_file_handle_error_no_exit(NULL, NULL, "closedir");
+ os_file_handle_error_no_exit(NULL, "closedir");
return(-1);
}
@@ -636,7 +633,7 @@ os_file_closedir(
ret = closedir(dir);
if (ret) {
- os_file_handle_error_no_exit(0, NULL, "closedir");
+ os_file_handle_error_no_exit(NULL, "closedir");
}
return(ret);
@@ -705,7 +702,7 @@ http://www.mysql.com/doc/en/Windows_symbolic_links.html */
return(1);
} else {
- os_file_handle_error_no_exit(NULL, dirname,
+ os_file_handle_error_no_exit(dirname,
"readdir_next_file");
return(-1);
}
@@ -737,7 +734,7 @@ next_file:
ret = stat(full_path, &statinfo);
if (ret) {
- os_file_handle_error_no_exit(0, full_path, "stat");
+ os_file_handle_error_no_exit(full_path, "stat");
ut_free(full_path);
@@ -1326,7 +1323,7 @@ loop:
ret = unlink((const char*)name);
if (ret != 0 && errno != ENOENT) {
- os_file_handle_error(name, "delete");
+ os_file_handle_error_no_exit(name, "delete");
return(FALSE);
}
@@ -1388,7 +1385,7 @@ loop:
ret = unlink((const char*)name);
if (ret != 0) {
- os_file_handle_error(name, "delete");
+ os_file_handle_error_no_exit(name, "delete");
return(FALSE);
}
@@ -2117,7 +2114,7 @@ try_again:
#ifdef __WIN__
error_handling:
#endif
- retry = os_file_handle_error_no_exit(file, NULL, "read");
+ retry = os_file_handle_error_no_exit(NULL, "read");
if (retry) {
goto try_again;
@@ -2310,7 +2307,7 @@ os_file_status(
} else if (ret) {
/* file exists, but stat call failed */
- os_file_handle_error_no_exit(0, path, "stat");
+ os_file_handle_error_no_exit(path, "stat");
return(FALSE);
}
@@ -2338,7 +2335,7 @@ os_file_status(
} else if (ret) {
/* file exists, but stat call failed */
- os_file_handle_error_no_exit(0, path, "stat");
+ os_file_handle_error_no_exit(path, "stat");
return(FALSE);
}
@@ -2381,7 +2378,7 @@ os_file_get_status(
} else if (ret) {
/* file exists, but stat call failed */
- os_file_handle_error_no_exit(0, path, "stat");
+ os_file_handle_error_no_exit(path, "stat");
return(FALSE);
}
@@ -2412,7 +2409,7 @@ os_file_get_status(
} else if (ret) {
/* file exists, but stat call failed */
- os_file_handle_error_no_exit(0, path, "stat");
+ os_file_handle_error_no_exit(path, "stat");
return(FALSE);
}
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c
index bf4b0f26cbc..241ddc310e8 100644
--- a/innobase/row/row0mysql.c
+++ b/innobase/row/row0mysql.c
@@ -2153,6 +2153,12 @@ row_import_tablespace_for_mysql(
success = fil_reset_too_high_lsns(name, current_lsn);
if (!success) {
+ ut_print_timestamp(stderr);
+ fputs(" InnoDB: Error: cannot reset lsn's in table ", stderr);
+ ut_print_name(stderr, trx, name);
+ fputs("\n"
+ "InnoDB: in ALTER TABLE ... IMPORT TABLESPACE\n", stderr);
+
err = DB_ERROR;
row_mysql_lock_data_dictionary(trx);
@@ -2168,6 +2174,14 @@ row_import_tablespace_for_mysql(
table = dict_table_get_low(name);
if (!table) {
+ ut_print_timestamp(stderr);
+ fputs(" InnoDB: table ", stderr);
+ ut_print_name(stderr, trx, name);
+ fputs("\n"
+"InnoDB: does not exist in the InnoDB data dictionary\n"
+"InnoDB: in ALTER TABLE ... IMPORT TABLESPACE\n",
+ stderr);
+
err = DB_TABLE_NOT_FOUND;
goto funct_exit;
@@ -2209,6 +2223,17 @@ row_import_tablespace_for_mysql(
table->ibd_file_missing = FALSE;
table->tablespace_discarded = FALSE;
} else {
+ if (table->ibd_file_missing) {
+ ut_print_timestamp(stderr);
+ fputs(
+" InnoDB: cannot find of open in the database directory the .ibd file of\n"
+"InnoDB: table ", stderr);
+ ut_print_name(stderr, trx, name);
+ fputs("\n"
+"InnoDB: in ALTER TABLE ... IMPORT TABLESPACE\n",
+ stderr);
+ }
+
err = DB_ERROR;
}