diff options
author | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2022-08-18 16:21:31 +0530 |
---|---|---|
committer | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2022-08-19 16:29:23 +0530 |
commit | 71b56c770b5878fe30ccdb9dd9c13e462bd252ab (patch) | |
tree | b16b2f90e0fe513fcb34bfbd9c83b1519bdfeac9 | |
parent | fd9d44b2b4fca5c113b0c52a0c45b7d2bb70ba4b (diff) | |
download | mariadb-git-bb-10.6-MDEV-29250.tar.gz |
MDEV-29282 atomic.rename_trigger fails occasionlybb-10.6-MDEV-29250
fil_name_process(): Un-necessarily renaming the tablespace
name in deferred list even though the list contains latest
tablespace namespace for the space id.
- Replace absolute data directory file path with short name
related to backup directory and store it as filename while
creating deferred tablespace
-rw-r--r-- | mysql-test/suite/atomic/disabled.def | 13 | ||||
-rw-r--r-- | storage/innobase/log/log0recv.cc | 27 |
2 files changed, 23 insertions, 17 deletions
diff --git a/mysql-test/suite/atomic/disabled.def b/mysql-test/suite/atomic/disabled.def deleted file mode 100644 index 6d8defe344a..00000000000 --- a/mysql-test/suite/atomic/disabled.def +++ /dev/null @@ -1,13 +0,0 @@ -############################################################################## -# -# List the test cases that are to be disabled temporarily. -# -# Separate the test case name and the comment with ':'. -# -# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment> -# -# Do not use any TAB characters for whitespace. -# -############################################################################## - -rename_trigger : MDEV-29282 atomic.rename_trigger fails occasionly diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index 9b6f778b859..ff0858a2a70 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -829,7 +829,29 @@ processed: fil_space_t *space= fil_space_t::create(it->first, flags, FIL_TYPE_TABLESPACE, crypt_data); ut_ad(space); - space->add(name.c_str(), OS_FILE_CLOSED, size, false, false); + const char* filename= name.c_str(); + if (srv_operation == SRV_OPERATION_RESTORE) + { + const char* tbl_name = strrchr(filename, '/'); +#ifdef _WIN32 + if (const char *last = strrchr(filename, '\\')) + { + if (last > tbl_name) + tbl_name = last; + } +#endif + if (tbl_name) + { + while (--tbl_name > filename +#ifdef _WIN32 + && *tbl_name != '\\' +#endif + && *tbl_name != '/'); + if (tbl_name > filename) + filename = tbl_name + 1; + } + } + space->add(filename, OS_FILE_CLOSED, size, false, false); space->recv_size= it->second.size; space->size_in_header= size; return space; @@ -1227,9 +1249,6 @@ static void fil_name_process(const char *name, ulint len, uint32_t space_id, d->deleted = true; goto got_deleted; } - if (ftype == FILE_RENAME) { - d->file_name= fname.name; - } goto reload; } |