refactor(DB): Handle SQL files in a new way (#11494)

* refactor(DB): Handle SQL files in a new way

* remove proof that it works files

* Update rev_1650721405699287200.sql

* Update rev_1650721339143444200.sql

* Update rev_1650721386624384400.sql

* fix build

* fix
This commit is contained in:
Kitzunu
2022-04-28 19:37:37 +02:00
committed by GitHub
parent 59e45c251e
commit 026941c39e
13 changed files with 12 additions and 103 deletions

View File

@@ -43,10 +43,6 @@ function import() {
newVer=$dateToday"_"$cnt
startTransaction="START TRANSACTION;";
updHeader="ALTER TABLE version_db_"$db" CHANGE COLUMN "$oldVer" "$newVer" bit;";
endTransaction="COMMIT;";
newFile="$updPath/"$dateToday"_"$cnt".sql"
oldFile=$(basename "$entry")
@@ -61,46 +57,8 @@ function import() {
echo "-- DB update $oldVer -> $newVer" > "$newFile";
if [[ $isRev -eq 1 ]]; then
echo "DROP PROCEDURE IF EXISTS \`updateDb\`;" >> "$newFile";
echo "DELIMITER //" >> "$newFile";
echo "CREATE PROCEDURE updateDb ()" >> "$newFile";
echo "proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';" >> "$newFile";
echo "SELECT COUNT(*) INTO @COLEXISTS" >> "$newFile";
echo "FROM information_schema.COLUMNS" >> "$newFile";
echo "WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_"$db"' AND COLUMN_NAME = '"$oldVer"';" >> "$newFile";
echo "IF @COLEXISTS = 0 THEN LEAVE proc; END IF;" >> "$newFile";
fi
echo "$startTransaction" >> "$newFile";
echo "$updHeader" >> "$newFile";
if [[ $isRev -eq 1 ]]; then
echo "SELECT sql_rev INTO OK FROM version_db_"$db" WHERE sql_rev = '$rev'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;" >> "$newFile";
fi;
echo "--" >> "$newFile";
echo "-- START UPDATING QUERIES" >> "$newFile";
echo "--" >> "$newFile";
echo "" >> "$newFile";
cat $entry >> "$newFile";
echo "" >> "$newFile";
echo "--" >> "$newFile";
echo "-- END UPDATING QUERIES" >> "$newFile";
echo "--" >> "$newFile";
echo "UPDATE version_db_"$db" SET date = '"$newVer"' WHERE sql_rev = '"$rev"';" >> "$newFile";
echo "$endTransaction" >> "$newFile";
if [[ $isRev -eq 1 ]]; then
echo "END //" >> "$newFile";
echo "DELIMITER ;" >> "$newFile";
echo "CALL updateDb();" >> "$newFile";
echo "DROP PROCEDURE IF EXISTS \`updateDb\`;" >> "$newFile";
fi;
currentHash="$(git log --diff-filter=A "$entry" | grep "^commit " | sed -e 's/commit //')"
if [[ "$COMMIT_HASH" != *"$currentHash"* ]]

View File

@@ -12,4 +12,4 @@ CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )";
rev=$( $date +%s%N );
filename=rev_"$rev".sql
echo "INSERT INTO \`version_db_auth\` (\`sql_rev\`) VALUES ('"$rev"');" > "$CUR_PATH/$filename" && echo "File created: $filename";
echo "--" > "$CUR_PATH/$filename" && echo "File created: $filename";

View File

@@ -0,0 +1,3 @@
--
DROP TABLE IF EXISTS `version_db_auth`;

View File

@@ -12,4 +12,4 @@ CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )";
rev=$( $date +%s%N );
filename=rev_"$rev".sql
echo "INSERT INTO \`version_db_characters\` (\`sql_rev\`) VALUES ('"$rev"');" > "$CUR_PATH/$filename" && echo "File created: $filename";
echo "--" > "$CUR_PATH/$filename" && echo "File created: $filename";

View File

@@ -0,0 +1,3 @@
--
DROP TABLE IF EXISTS `version_db_characters`;

View File

@@ -12,4 +12,4 @@ CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )";
rev=$( $date +%s%N );
filename=rev_"$rev".sql
echo "INSERT INTO \`version_db_world\` (\`sql_rev\`) VALUES ('"$rev"');" > "$CUR_PATH/$filename" && echo "File created: $filename";
echo "--" > "$CUR_PATH/$filename" && echo "File created: $filename";

View File

@@ -0,0 +1,3 @@
--
DROP TABLE IF EXISTS `version_db_world`;

View File

@@ -583,11 +583,7 @@ public:
virtual void UpdateRealmCharCount(uint32 accid) = 0;
[[nodiscard]] virtual LocaleConstant GetAvailableDbcLocale(LocaleConstant locale) const = 0;
virtual void LoadDBVersion() = 0;
virtual void LoadDBRevision() = 0;
[[nodiscard]] virtual char const* GetDBVersion() const = 0;
[[nodiscard]] virtual char const* GetWorldDBRevision() const = 0;
[[nodiscard]] virtual char const* GetCharacterDBRevision() const = 0;
[[nodiscard]] virtual char const* GetAuthDBRevision() const = 0;
virtual void LoadAutobroadcasts() = 0;
virtual void UpdateAreaDependentAuras() = 0;
[[nodiscard]] virtual uint32 GetCleaningFlags() const = 0;

View File

@@ -3268,45 +3268,6 @@ void World::LoadDBVersion()
m_DBVersion = "Unknown world database.";
}
void World::LoadDBRevision()
{
QueryResult resultWorld = WorldDatabase.Query("SELECT date FROM version_db_world ORDER BY date DESC LIMIT 1");
QueryResult resultCharacter = CharacterDatabase.Query("SELECT date FROM version_db_characters ORDER BY date DESC LIMIT 1");
QueryResult resultAuth = LoginDatabase.Query("SELECT date FROM version_db_auth ORDER BY date DESC LIMIT 1");
if (resultWorld)
{
Field* fields = resultWorld->Fetch();
m_WorldDBRevision = fields[0].Get<std::string>();
}
if (resultCharacter)
{
Field* fields = resultCharacter->Fetch();
m_CharacterDBRevision = fields[0].Get<std::string>();
}
if (resultAuth)
{
Field* fields = resultAuth->Fetch();
m_AuthDBRevision = fields[0].Get<std::string>();
}
if (m_WorldDBRevision.empty())
{
m_WorldDBRevision = "Unkown World Database Revision";
}
if (m_CharacterDBRevision.empty())
{
m_CharacterDBRevision = "Unkown Character Database Revision";
}
if (m_AuthDBRevision.empty())
{
m_AuthDBRevision = "Unkown Auth Database Revision";
}
}
void World::UpdateAreaDependentAuras()
{
SessionMap::const_iterator itr;

View File

@@ -339,11 +339,7 @@ public:
// used World DB version
void LoadDBVersion() override;
void LoadDBRevision() override;
[[nodiscard]] char const* GetDBVersion() const override { return m_DBVersion.c_str(); }
[[nodiscard]] char const* GetWorldDBRevision() const override { return m_WorldDBRevision.c_str(); }
[[nodiscard]] char const* GetCharacterDBRevision() const override { return m_CharacterDBRevision.c_str(); }
[[nodiscard]] char const* GetAuthDBRevision() const override { return m_AuthDBRevision.c_str(); }
void LoadAutobroadcasts() override;
@@ -440,9 +436,6 @@ private:
// used versions
std::string m_DBVersion;
std::string m_WorldDBRevision;
std::string m_CharacterDBRevision;
std::string m_AuthDBRevision;
typedef std::map<uint8, std::string> AutobroadcastsMap;
AutobroadcastsMap m_Autobroadcasts;

View File

@@ -213,9 +213,6 @@ public:
handler->PSendSysMessage("Using %s DBC Locale as default. All available DBC locales: %s", localeNames[defaultLocale], availableLocales.c_str());
handler->PSendSysMessage("Using World DB: %s", sWorld->GetDBVersion());
handler->PSendSysMessage("Using World DB Revision: %s", sWorld->GetWorldDBRevision());
handler->PSendSysMessage("Using Character DB Revision: %s", sWorld->GetCharacterDBRevision());
handler->PSendSysMessage("Using Auth DB Revision: %s", sWorld->GetAuthDBRevision());
handler->PSendSysMessage("LoginDatabase queue size: %zu", LoginDatabase.QueueSize());
handler->PSendSysMessage("CharacterDatabase queue size: %zu", CharacterDatabase.QueueSize());

View File

@@ -478,7 +478,6 @@ bool StartDB()
WorldDatabase.Execute("UPDATE version SET core_version = '{}', core_revision = '{}'", GitRevision::GetFullVersion(), GitRevision::GetHash()); // One-time query
sWorld->LoadDBVersion();
sWorld->LoadDBRevision();
LOG_INFO("server.loading", "> Version DB world: {}", sWorld->GetDBVersion());

View File

@@ -111,11 +111,7 @@ public:
MOCK_METHOD(void, UpdateRealmCharCount, (uint32 accid), ());
MOCK_METHOD(LocaleConstant, GetAvailableDbcLocale, (LocaleConstant locale), (const));
MOCK_METHOD(void, LoadDBVersion, ());
MOCK_METHOD(void, LoadDBRevision, ());
MOCK_METHOD(char const *, GetDBVersion, (), (const));
MOCK_METHOD(char const *, GetWorldDBRevision, (), (const));
MOCK_METHOD(char const *, GetCharacterDBRevision, (), (const));
MOCK_METHOD(char const *, GetAuthDBRevision, (), (const));
MOCK_METHOD(void, LoadAutobroadcasts, ());
MOCK_METHOD(void, UpdateAreaDependentAuras, ());
MOCK_METHOD(uint32, GetCleaningFlags, (), (const));