1
0
mirror of https://github.com/anope/anope.git synced 2026-07-05 23:33:12 +02:00

Halt the column migration if any of the queries fail.

This commit is contained in:
Sadie Powell
2024-11-16 12:09:08 +00:00
parent 656ca80dd0
commit 240f8b9e50
+20 -8
View File
@@ -490,19 +490,31 @@ std::vector<Query> MySQLService::CreateTable(const Anope::string &table, const D
if (update)
{
// We an't just use MODIFY COLUMN here because the value may not
// We can't just use MODIFY COLUMN here because the value may not
// be valid and we may need to replace with the default.
this->RunQuery(Anope::printf("ALTER TABLE `%s` ADD COLUMN `%s_new` %s; ",
auto res = this->RunQuery(Anope::printf("ALTER TABLE `%s` ADD COLUMN `%s_new` %s; ",
table.c_str(), column.c_str(), GetColumn(stype).c_str()));
this->RunQuery(Anope::printf("UPDATE IGNORE `%s` SET `%s_new` = %s; ",
table.c_str(), column.c_str(), column.c_str()));
if (res)
{
res = this->RunQuery(Anope::printf("UPDATE IGNORE `%s` SET `%s_new` = %s; ",
table.c_str(), column.c_str(), column.c_str()));
}
this->RunQuery(Anope::printf("ALTER TABLE `%s` DROP COLUMN `%s`; ",
table.c_str(), column.c_str()));
if (res)
{
res = this->RunQuery(Anope::printf("ALTER TABLE `%s` DROP COLUMN `%s`; ",
table.c_str(), column.c_str()));
}
res = this->RunQuery(Anope::printf("ALTER TABLE `%s` RENAME COLUMN `%s_new` TO `%s`; ",
table.c_str(), column.c_str(), column.c_str()));
if (res)
{
res = this->RunQuery(Anope::printf("ALTER TABLE `%s` RENAME COLUMN `%s_new` TO `%s`; ",
table.c_str(), column.c_str(), column.c_str()));
}
if (!res)
Log(LOG_DEBUG) << "Failed to migrate the " << column << " column: " << res.GetError();
}
}
}