diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2022-05-03 10:59:54 +0200 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2022-05-03 10:59:54 +0200 |
commit | 9614fde1aac6ffa4745804342ff70a96b2418e30 (patch) | |
tree | d53f4578ce0a6b5cf30f3eef854d50c16fbabcee /extra/mariabackup/xtrabackup.cc | |
parent | 182b8a29e7a1a0f0fbffeed39518c2c9dc026e13 (diff) | |
parent | 70555454b4c224e85383d482411961c7f2eba2e2 (diff) | |
download | mariadb-git-9614fde1aac6ffa4745804342ff70a96b2418e30.tar.gz |
Merge branch '10.2' into 10.3
Diffstat (limited to 'extra/mariabackup/xtrabackup.cc')
-rw-r--r-- | extra/mariabackup/xtrabackup.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index f745c6ba163..4f6e48c1ee1 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -5390,11 +5390,23 @@ static ibool prepare_handle_new_files(const char *data_home_dir, const char *file_name, void *arg) { const char *dest_dir = static_cast<const char *>(arg); - std::string src_path = std::string(data_home_dir) + '/' + std::string(db_name) + '/' + file_name; + std::string src_path = std::string(data_home_dir) + '/' + std::string(db_name) + '/'; /* Copy "*.new" files from incremental to base dir for incremental backup */ std::string dest_path= dest_dir ? std::string(dest_dir) + '/' + std::string(db_name) + - '/' + file_name : src_path; + '/' : src_path; + + /* + A CREATE DATABASE could have happened during the base mariabackup run. + In case if the current table file (e.g. `t1.new`) is from such + a new database, the database directory may not exist yet in + the base backup directory. Let's make sure to check if the directory + exists (and create if needed). + */ + if (!directory_exists(dest_path.c_str(), true/*create if not exists*/)) + return FALSE; + src_path+= file_name; + dest_path+= file_name; size_t index = dest_path.find(".new"); DBUG_ASSERT(index != std::string::npos); |