Commit 22086f0d authored by Satya B's avatar Satya B

merge mysql-5.0-bugteam to mysql-5.1-bugteam

parents 64ab6272 19e76565
...@@ -67,6 +67,7 @@ extern int NEAR my_errno; /* Last error in mysys */ ...@@ -67,6 +67,7 @@ extern int NEAR my_errno; /* Last error in mysys */
#define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */ #define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */
#define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */ #define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */
#define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */ #define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */
#define MY_SYNC 4096 /* my_copy(): sync dst file */
#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */ #define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
#define MY_GIVE_INFO 2 /* Give time info about process*/ #define MY_GIVE_INFO 2 /* Give time info about process*/
......
...@@ -88,6 +88,13 @@ int my_copy(const char *from, const char *to, myf MyFlags) ...@@ -88,6 +88,13 @@ int my_copy(const char *from, const char *to, myf MyFlags)
goto err; goto err;
} }
/* sync the destination file */
if (MyFlags & MY_SYNC)
{
if (my_sync(to_file, MyFlags))
goto err;
}
if (my_close(from_file,MyFlags) | my_close(to_file,MyFlags)) if (my_close(from_file,MyFlags) | my_close(to_file,MyFlags))
DBUG_RETURN(-1); /* Error on close */ DBUG_RETURN(-1); /* Error on close */
......
...@@ -5217,6 +5217,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table, ...@@ -5217,6 +5217,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
char tmp_path[FN_REFLEN]; char tmp_path[FN_REFLEN];
#endif #endif
char ts_name[FN_LEN + 1]; char ts_name[FN_LEN + 1];
myf flags= MY_DONT_OVERWRITE_FILE;
DBUG_ENTER("mysql_create_like_table"); DBUG_ENTER("mysql_create_like_table");
...@@ -5273,8 +5274,12 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table, ...@@ -5273,8 +5274,12 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
DBUG_EXECUTE_IF("sleep_create_like_before_copy", my_sleep(6000000);); DBUG_EXECUTE_IF("sleep_create_like_before_copy", my_sleep(6000000););
if (opt_sync_frm && !(create_info->options & HA_LEX_CREATE_TMP_TABLE))
flags|= MY_SYNC;
/* /*
Create a new table by copying from source table Create a new table by copying from source table
and sync the new table if the flag MY_SYNC is set
Altough exclusive name-lock on target table protects us from concurrent Altough exclusive name-lock on target table protects us from concurrent
DML and DDL operations on it we still want to wrap .FRM creation and call DML and DDL operations on it we still want to wrap .FRM creation and call
...@@ -5295,7 +5300,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table, ...@@ -5295,7 +5300,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
goto err; goto err;
} }
} }
else if (my_copy(src_path, dst_path, MYF(MY_DONT_OVERWRITE_FILE))) else if (my_copy(src_path, dst_path, flags))
{ {
if (my_errno == ENOENT) if (my_errno == ENOENT)
my_error(ER_BAD_DB_ERROR,MYF(0),db); my_error(ER_BAD_DB_ERROR,MYF(0),db);
......
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