Skip to content

Commit be69438

Browse files
hssergrooverdan
authored andcommitted
MDEV-31925 Fix for File Leak in mysql_upgrade with --check-if-upgrade-is-needed Option
This commit addresses the file leakage problem encountered with the mysql_upgrade --check-if-upgrade-is-needed command.
1 parent 87a5d16 commit be69438

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

client/mysql_upgrade.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1374,7 +1374,12 @@ int main(int argc, char **argv)
13741374
open_mysql_upgrade_file();
13751375

13761376
if (opt_check_upgrade)
1377-
exit(upgrade_already_done(0) == 0);
1377+
{
1378+
int upgrade_needed = upgrade_already_done(0);
1379+
free_used_memory();
1380+
my_end(my_end_arg);
1381+
exit(upgrade_needed == 0);
1382+
}
13781383

13791384
/* Find mysqlcheck */
13801385
find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck"), self_name);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Running mysql_upgrade with --check-if-upgrade-is-needed
2+
Checking for absence of temporary files by mysql_upgrade
3+
No temporary files found
4+
End of 10.4 tests
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-- source include/mysql_upgrade_preparation.inc
2+
3+
#
4+
# MDEV-31925 mysqld_upgrade --check-if-upgrade-is-needed leaks files
5+
#
6+
7+
# Run mysql_upgrade with --check-if-upgrade-is-needed
8+
--echo Running mysql_upgrade with --check-if-upgrade-is-needed
9+
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed 2>&1
10+
11+
# Check if temporary files related to mysql_upgrade are cleared
12+
--echo Checking for absence of temporary files by mysql_upgrade
13+
--perl
14+
15+
# Use the temporary directory path from the MySQL configuration
16+
my $tmpdir = "$ENV{MYSQL_TMP_DIR}";
17+
18+
die "Test failed: Found temporary file left by mysql_upgrade\n" if (glob("$tmpdir/mysql_upgrade-*"));
19+
print "No temporary files found\n";
20+
EOF
21+
22+
let $MYSQLD_DATADIR= `select @@datadir`;
23+
--remove_file $MYSQLD_DATADIR/mysql_upgrade_info
24+
--echo End of 10.4 tests

0 commit comments

Comments
 (0)