summaryrefslogtreecommitdiff
path: root/sql/discover.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-04-09 16:20:59 +0200
committerSergei Golubchik <sergii@pisem.net>2013-04-09 16:20:59 +0200
commitffbd15eb3242ab9b003c025925a462b5bd24a761 (patch)
treea12ad27f05eea65cb9c48c666c2f8d4c52408c5d /sql/discover.cc
parent7ec57f2279b984d071b2c5c24261ee479e1caefc (diff)
downloadmariadb-git-ffbd15eb3242ab9b003c025925a462b5bd24a761.tar.gz
post-review comments and other minor edits
Diffstat (limited to 'sql/discover.cc')
-rw-r--r--sql/discover.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/sql/discover.cc b/sql/discover.cc
index 5add741fc0c..b5bccf7dcb0 100644
--- a/sql/discover.cc
+++ b/sql/discover.cc
@@ -111,17 +111,21 @@ int readfrm(const char *name, const uchar **frmdata, size_t *len)
*/
int writefrm(const char *path, const char *db, const char *table,
- bool need_sync, const uchar *frmdata, size_t len)
+ bool tmp_table, const uchar *frmdata, size_t len)
{
char file_name[FN_REFLEN+1];
int error;
+ int create_flags= O_RDWR | O_TRUNC;
DBUG_ENTER("writefrm");
DBUG_PRINT("enter",("name: '%s' len: %lu ",path, (ulong) len));
+ if (tmp_table)
+ create_flags|= O_EXCL | O_NOFOLLOW;
+
strxnmov(file_name, sizeof(file_name)-1, path, reg_ext, NullS);
File file= mysql_file_create(key_file_frm, file_name,
- CREATE_MODE, O_RDWR | O_TRUNC, MYF(0));
+ CREATE_MODE, create_flags, MYF(0));
if ((error= file < 0))
{
@@ -134,7 +138,7 @@ int writefrm(const char *path, const char *db, const char *table,
{
error= mysql_file_write(file, frmdata, len, MYF(MY_WME | MY_NABP));
- if (!error && need_sync && opt_sync_frm)
+ if (!error && !tmp_table && opt_sync_frm)
error= mysql_file_sync(file, MYF(MY_WME)) ||
my_sync_dir_by_file(file_name, MYF(MY_WME));