Commit 83694ca4 authored by tsmith@siva.hindu.god's avatar tsmith@siva.hindu.god

Apply innodb-5.0-ss1372 snapshot

Bug #27381: InnoDB exits when attempting to rename table to non-existant database
  Fix Bug#27381 by calling os_file_handle_error_no_exit() instead of
  os_file_handle_error().
parent 979102de
......@@ -628,7 +628,8 @@ dict_table_get_on_id(
CREATE, for example, we already have the mutex! */
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(dict_sys->mutex)));
ut_ad(mutex_own(&(dict_sys->mutex))
|| trx->dict_operation_lock_mode == RW_X_LATCH);
#endif /* UNIV_SYNC_DEBUG */
return(dict_table_get_on_id_low(table_id, trx));
......
......@@ -920,14 +920,14 @@ os_file_create_simple(
}
file = CreateFile((LPCTSTR) name,
access,
FILE_SHARE_READ | FILE_SHARE_WRITE,
/* file can be read ansd written also
by other processes */
NULL, /* default security attributes */
create_flag,
attributes,
NULL); /* no template file */
access,
FILE_SHARE_READ | FILE_SHARE_WRITE,
/* file can be read and written also
by other processes */
NULL, /* default security attributes */
create_flag,
attributes,
NULL); /* no template file */
if (file == INVALID_HANDLE_VALUE) {
*success = FALSE;
......@@ -1494,7 +1494,7 @@ os_file_rename(
return(TRUE);
}
os_file_handle_error(oldpath, "rename");
os_file_handle_error_no_exit(oldpath, "rename");
return(FALSE);
#else
......@@ -1503,7 +1503,7 @@ os_file_rename(
ret = rename((const char*)oldpath, (const char*)newpath);
if (ret != 0) {
os_file_handle_error(oldpath, "rename");
os_file_handle_error_no_exit(oldpath, "rename");
return(FALSE);
}
......
......@@ -212,7 +212,7 @@ row_undo(
ulint err;
trx_t* trx;
dulint roll_ptr;
ibool froze_data_dict = FALSE;
ibool locked_data_dict;
ut_ad(node && thr);
......@@ -263,15 +263,15 @@ row_undo(
}
/* Prevent DROP TABLE etc. while we are rolling back this row.
If we are doing a TABLE CREATE or some other dictionary operation,
then we already have dict_operation_lock locked in x-mode. Do not
try to lock again in s-mode, because that would cause a hang. */
If we are doing a TABLE CREATE or some other dictionary operation,
then we already have dict_operation_lock locked in x-mode. Do not
try to lock again, because that would cause a hang. */
if (trx->dict_operation_lock_mode == 0) {
row_mysql_freeze_data_dictionary(trx);
locked_data_dict = (trx->dict_operation_lock_mode == 0);
froze_data_dict = TRUE;
if (locked_data_dict) {
row_mysql_lock_data_dictionary(trx);
}
if (node->state == UNDO_NODE_INSERT) {
......@@ -284,9 +284,9 @@ row_undo(
err = row_undo_mod(node, thr);
}
if (froze_data_dict) {
if (locked_data_dict) {
row_mysql_unfreeze_data_dictionary(trx);
row_mysql_unlock_data_dictionary(trx);
}
/* Do some cleanup */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment