Skip to content

Commit 2c2bd8c

Browse files
committed
MDEV-12261 build failure without P_S
restore mysql_file_delete_with_symlink() but let it use new my_handler_delete_with_symlink() mysys helper.
1 parent 06f1f1a commit 2c2bd8c

File tree

8 files changed

+64
-23
lines changed

8 files changed

+64
-23
lines changed

include/my_sys.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -597,8 +597,7 @@ extern File my_create_with_symlink(const char *linkname, const char *filename,
597597
myf MyFlags);
598598
extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags);
599599
extern int my_symlink(const char *content, const char *linkname, myf MyFlags);
600-
extern int my_handler_delete_with_symlink(PSI_file_key key, const char *name,
601-
const char *ext, myf sync_dir);
600+
extern int my_handler_delete_with_symlink(const char *filename, myf sync_dir);
602601

603602
extern size_t my_read(File Filedes,uchar *Buffer,size_t Count,myf MyFlags);
604603
extern size_t my_pread(File Filedes,uchar *Buffer,size_t Count,my_off_t offset,

include/mysql/psi/mysql_file.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,20 @@
441441
inline_mysql_file_create_with_symlink(P1, P2, P3, P4, P5)
442442
#endif
443443

444+
/**
445+
@def mysql_file_delete_with_symlink(K, P1, P2, P3)
446+
Instrumented delete with symbolic link.
447+
@c mysql_file_delete_with_symlink is a replacement
448+
for @c my_handler_delete_with_symlink.
449+
*/
450+
#ifdef HAVE_PSI_FILE_INTERFACE
451+
#define mysql_file_delete_with_symlink(K, P1, P2, P3) \
452+
inline_mysql_file_delete_with_symlink(K, __FILE__, __LINE__, P1, P2, P3)
453+
#else
454+
#define mysql_file_delete_with_symlink(K, P1, P2, P3) \
455+
inline_mysql_file_delete_with_symlink(P1, P2, P3)
456+
#endif
457+
444458
/**
445459
@def mysql_file_rename_with_symlink(K, P1, P2, P3)
446460
Instrumented rename with symbolic link.
@@ -1294,6 +1308,7 @@ inline_mysql_file_rename(
12941308
return result;
12951309
}
12961310

1311+
12971312
static inline File
12981313
inline_mysql_file_create_with_symlink(
12991314
#ifdef HAVE_PSI_FILE_INTERFACE
@@ -1324,6 +1339,35 @@ inline_mysql_file_create_with_symlink(
13241339
}
13251340

13261341

1342+
static inline int
1343+
inline_mysql_file_delete_with_symlink(
1344+
#ifdef HAVE_PSI_FILE_INTERFACE
1345+
PSI_file_key key, const char *src_file, uint src_line,
1346+
#endif
1347+
const char *name, const char *ext, myf flags)
1348+
{
1349+
int result;
1350+
char fullname[FN_REFLEN];
1351+
fn_format(fullname, name, "", ext, MY_UNPACK_FILENAME | MY_APPEND_EXT);
1352+
#ifdef HAVE_PSI_FILE_INTERFACE
1353+
struct PSI_file_locker *locker;
1354+
PSI_file_locker_state state;
1355+
locker= PSI_FILE_CALL(get_thread_file_name_locker)
1356+
(&state, key, PSI_FILE_DELETE, fullname, &locker);
1357+
if (likely(locker != NULL))
1358+
{
1359+
PSI_FILE_CALL(start_file_close_wait)(locker, src_file, src_line);
1360+
result= my_handler_delete_with_symlink(fullname, flags);
1361+
PSI_FILE_CALL(end_file_close_wait)(locker, result);
1362+
return result;
1363+
}
1364+
#endif
1365+
1366+
result= my_handler_delete_with_symlink(fullname, flags);
1367+
return result;
1368+
}
1369+
1370+
13271371
static inline int
13281372
inline_mysql_file_rename_with_symlink(
13291373
#ifdef HAVE_PSI_FILE_INTERFACE

mysys/my_symlink2.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,22 +170,20 @@ int my_rename_with_symlink(const char *from, const char *to, myf MyFlags)
170170
in this case both the symlink and the symlinked file are deleted,
171171
but only if the symlinked file is not in the datadir.
172172
*/
173-
int my_handler_delete_with_symlink(PSI_file_key key, const char *name,
174-
const char *ext, myf sync_dir)
173+
int my_handler_delete_with_symlink(const char *filename, myf sync_dir)
175174
{
176-
char orig[FN_REFLEN], real[FN_REFLEN];
175+
char real[FN_REFLEN];
177176
int res= 0;
178177
DBUG_ENTER("my_handler_delete_with_symlink");
179178

180-
fn_format(orig, name, "", ext, MY_UNPACK_FILENAME | MY_APPEND_EXT);
181-
if (my_is_symlink(orig))
179+
if (my_is_symlink(filename))
182180
{
183181
/*
184182
Delete the symlinked file only if the symlink is not
185183
pointing into datadir.
186184
*/
187-
if (!(my_realpath(real, orig, MYF(0)) || mysys_test_invalid_symlink(real)))
188-
res= mysql_file_delete(key, real, MYF(MY_NOSYMLINKS | sync_dir));
185+
if (!(my_realpath(real, filename, MYF(0)) || mysys_test_invalid_symlink(real)))
186+
res= my_delete(real, MYF(MY_NOSYMLINKS | sync_dir));
189187
}
190-
DBUG_RETURN(mysql_file_delete(key, orig, MYF(sync_dir)) || res);
188+
DBUG_RETURN(my_delete(filename, MYF(sync_dir)) || res);
191189
}

sql/handler.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3850,7 +3850,7 @@ int handler::delete_table(const char *name)
38503850

38513851
for (const char **ext=bas_ext(); *ext ; ext++)
38523852
{
3853-
if (my_handler_delete_with_symlink(key_file_misc, name, *ext, 0))
3853+
if (mysql_file_delete_with_symlink(key_file_misc, name, *ext, 0))
38543854
{
38553855
if (my_errno != ENOENT)
38563856
{

sql/sql_db.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
815815
if there exists a table with the name 'db', so let's just do it
816816
separately. We know this file exists and needs to be deleted anyway.
817817
*/
818-
if (my_handler_delete_with_symlink(key_file_misc, path, "", MYF(0)) &&
818+
if (mysql_file_delete_with_symlink(key_file_misc, path, "", MYF(0)) &&
819819
my_errno != ENOENT)
820820
{
821821
my_error(EE_DELETE, MYF(0), path, my_errno);
@@ -1119,7 +1119,7 @@ static bool find_db_tables_and_rm_known_files(THD *thd, MY_DIR *dirp,
11191119
We ignore ENOENT error in order to skip files that was deleted
11201120
by concurrently running statement like REPAIR TABLE ...
11211121
*/
1122-
if (my_handler_delete_with_symlink(key_file_misc, filePath, "", MYF(0)) &&
1122+
if (mysql_file_delete_with_symlink(key_file_misc, filePath, "", MYF(0)) &&
11231123
my_errno != ENOENT)
11241124
{
11251125
my_error(EE_DELETE, MYF(0), filePath, my_errno);
@@ -1235,7 +1235,7 @@ long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path)
12351235
continue;
12361236
}
12371237
strxmov(filePath, org_path, "/", file->name, NullS);
1238-
if (my_handler_delete_with_symlink(key_file_misc, filePath, "", MYF(MY_WME)))
1238+
if (mysql_file_delete_with_symlink(key_file_misc, filePath, "", MYF(MY_WME)))
12391239
{
12401240
goto err;
12411241
}

sql/table.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ enum open_frm_error open_table_def(THD *thd, TABLE_SHARE *share, uint flags)
569569
{
570570
DBUG_ASSERT(flags & GTS_TABLE);
571571
DBUG_ASSERT(flags & GTS_USE_DISCOVERY);
572-
my_handler_delete_with_symlink(key_file_frm, path, "", MYF(0));
572+
mysql_file_delete_with_symlink(key_file_frm, path, "", MYF(0));
573573
file= -1;
574574
}
575575
else

storage/maria/ma_delete_table.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ int maria_delete_table_files(const char *name, myf sync_dir)
8686
{
8787
DBUG_ENTER("maria_delete_table_files");
8888

89-
if (my_handler_delete_with_symlink(key_file_kfile, name, MARIA_NAME_IEXT, MYF(MY_WME | sync_dir)) ||
90-
my_handler_delete_with_symlink(key_file_dfile, name, MARIA_NAME_DEXT, MYF(MY_WME | sync_dir)))
89+
if (mysql_file_delete_with_symlink(key_file_kfile, name, MARIA_NAME_IEXT, MYF(MY_WME | sync_dir)) ||
90+
mysql_file_delete_with_symlink(key_file_dfile, name, MARIA_NAME_DEXT, MYF(MY_WME | sync_dir)))
9191
DBUG_RETURN(my_errno);
9292

93-
my_handler_delete_with_symlink(key_file_dfile, name, ".TMD", MYF(0));
94-
my_handler_delete_with_symlink(key_file_dfile, name, ".OLD", MYF(0));
93+
mysql_file_delete_with_symlink(key_file_dfile, name, ".TMD", MYF(0));
94+
mysql_file_delete_with_symlink(key_file_dfile, name, ".OLD", MYF(0));
9595
DBUG_RETURN(0);
9696
}

storage/myisam/mi_delete_table.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ int mi_delete_table(const char *name)
3434
check_table_is_closed(name,"delete");
3535
#endif
3636

37-
if (my_handler_delete_with_symlink(mi_key_file_kfile, name, MI_NAME_IEXT, MYF(MY_WME)) ||
38-
my_handler_delete_with_symlink(mi_key_file_dfile, name, MI_NAME_DEXT, MYF(MY_WME)))
37+
if (mysql_file_delete_with_symlink(mi_key_file_kfile, name, MI_NAME_IEXT, MYF(MY_WME)) ||
38+
mysql_file_delete_with_symlink(mi_key_file_dfile, name, MI_NAME_DEXT, MYF(MY_WME)))
3939
DBUG_RETURN(my_errno);
4040

4141

4242
// optionally present:
43-
my_handler_delete_with_symlink(mi_key_file_dfile, name, ".OLD", MYF(0));
44-
my_handler_delete_with_symlink(mi_key_file_dfile, name, ".TMD", MYF(0));
43+
mysql_file_delete_with_symlink(mi_key_file_dfile, name, ".OLD", MYF(0));
44+
mysql_file_delete_with_symlink(mi_key_file_dfile, name, ".TMD", MYF(0));
4545

4646
DBUG_RETURN(0);
4747
}

0 commit comments

Comments
 (0)