aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-01-30 15:50:35 +0100
committerShauren <shauren.trinity@gmail.com>2022-01-30 15:50:35 +0100
commitb79a91039bba12d62e43806d8a20ad76107ac5d7 (patch)
treeb13b51d01550e9adb6f5ee2a09229fb2215cedf0 /src
parent9a0a56dc884c7b52fd6c9781e1884ec2aaec1343 (diff)
Core/DBUpdater: Apply each sql update file in a separate transaction
Diffstat (limited to 'src')
-rw-r--r--src/server/database/Updater/DBUpdater.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/server/database/Updater/DBUpdater.cpp b/src/server/database/Updater/DBUpdater.cpp
index 3b9f7617a64..90001bc19e4 100644
--- a/src/server/database/Updater/DBUpdater.cpp
+++ b/src/server/database/Updater/DBUpdater.cpp
@@ -364,7 +364,7 @@ void DBUpdater<T>::ApplyFile(DatabaseWorkerPool<T>& pool, std::string const& hos
Path const& path)
{
std::vector<std::string> args;
- args.reserve(7);
+ args.reserve(9);
// CLI Client connection info
args.emplace_back("-h" + host);
@@ -414,13 +414,17 @@ void DBUpdater<T>::ApplyFile(DatabaseWorkerPool<T>& pool, std::string const& hos
#endif
+ // Execute sql file
+ args.emplace_back("-e");
+ args.emplace_back(Trinity::StringFormat("BEGIN; SOURCE %s; COMMIT;", path.generic_string().c_str()));
+
// Database
if (!database.empty())
args.emplace_back(database);
// Invokes a mysql process which doesn't leak credentials to logs
int const ret = Trinity::StartProcess(DBUpdaterUtil::GetCorrectedMySQLExecutable(), args,
- "sql.updates", path.generic_string(), true);
+ "sql.updates", "", true);
if (ret != EXIT_SUCCESS)
{