From 0d728a76778cb0ca88caa5c07f17162fac668b2a Mon Sep 17 00:00:00 2001 From: sharmajs-amzn <82233357+sharmajs-amzn@users.noreply.github.com> Date: Tue, 31 Aug 2021 07:22:09 -0700 Subject: [PATCH] Added new index on SourceDependency Table (#3648) Signed-off-by: sharmajs-amzn <82233357+sharmajs-amzn@users.noreply.github.com> --- .../AssetDatabase/AssetDatabaseConnection.h | 1 + .../native/AssetDatabase/AssetDatabase.cpp | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetDatabase/AssetDatabaseConnection.h b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetDatabase/AssetDatabaseConnection.h index a59dbfbda4..d9c83107e3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetDatabase/AssetDatabaseConnection.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetDatabase/AssetDatabaseConnection.h @@ -65,6 +65,7 @@ namespace AzToolsFramework AddedScanTimeSecondsSinceEpochField = 29, ChangedSortFunctionFromQSortToStdStableSort = 30, RemoveOutputPrefixFromScanFolders, + AddedSourceIndexForSourceDependencyTable, //Add all new versions before this DatabaseVersionCount, LatestVersion = DatabaseVersionCount - 1 diff --git a/Code/Tools/AssetProcessor/native/AssetDatabase/AssetDatabase.cpp b/Code/Tools/AssetProcessor/native/AssetDatabase/AssetDatabase.cpp index 4d2053c6d1..9be991eb0b 100644 --- a/Code/Tools/AssetProcessor/native/AssetDatabase/AssetDatabase.cpp +++ b/Code/Tools/AssetProcessor/native/AssetDatabase/AssetDatabase.cpp @@ -758,6 +758,14 @@ namespace AssetProcessor "FileID = :fileid;"; static const auto s_DeleteFileQuery = MakeSqlQuery(DELETE_FILE, DELETE_FILE_STATEMENT, LOG_NAME, SqlParam(":fileid")); + + static const char* CREATEINDEX_SOURCEDEPENDENCY_SOURCE = "AssetProcesser::CreateIndexSourceSourceDependency"; + static const char* CREATEINDEX_SOURCEDEPENDENCY_SOURCE_STATEMENT = + "CREATE INDEX IF NOT EXISTS Source_SourceDependency ON SourceDependency (Source);"; + + static const char* DROPINDEX_BUILDERGUID_SOURCE_SOURCEDEPENDENCY = "AssetProcesser::DropIndexBuilderGuid_Source_SourceDependency"; + static const char* DROPINDEX_BUILDERGUID_SOURCE_SOURCEDEPENDENCY_STATEMENT = + "DROP INDEX IF EXISTS BuilderGuid_Source_SourceDependency;"; } AssetDatabaseConnection::AssetDatabaseConnection() @@ -1033,6 +1041,15 @@ namespace AssetProcessor // sqlite doesn't not support altering a table to remove a column // This is fine as the extra OutputPrefix column will not be queried + if (foundVersion == AssetDatabase::DatabaseVersion::RemoveOutputPrefixFromScanFolders) + { + if (m_databaseConnection->ExecuteOneOffStatement(DROPINDEX_BUILDERGUID_SOURCE_SOURCEDEPENDENCY) && m_databaseConnection->ExecuteOneOffStatement(CREATEINDEX_SOURCEDEPENDENCY_SOURCE)) + { + foundVersion = AssetDatabase::DatabaseVersion::AddedSourceIndexForSourceDependencyTable; + AZ_TracePrintf(AssetProcessor::ConsoleChannel, "Upgraded Asset Database to version %i (AddedSourceIndexForSourceDependencyTable)\n", foundVersion) + } + } + if (foundVersion == CurrentDatabaseVersion()) { dropAllTables = false; @@ -1306,6 +1323,12 @@ namespace AssetProcessor m_databaseConnection->AddStatement(CREATEINDEX_SCANFOLDERS_FILES, CREATEINDEX_SCANFOLDERS_FILES_STATEMENT); m_createStatements.push_back(CREATEINDEX_SCANFOLDERS_FILES); + m_databaseConnection->AddStatement(CREATEINDEX_SOURCEDEPENDENCY_SOURCE, CREATEINDEX_SOURCEDEPENDENCY_SOURCE_STATEMENT); + m_createStatements.push_back(CREATEINDEX_SOURCEDEPENDENCY_SOURCE); + + m_databaseConnection->AddStatement(DROPINDEX_BUILDERGUID_SOURCE_SOURCEDEPENDENCY, DROPINDEX_BUILDERGUID_SOURCE_SOURCEDEPENDENCY_STATEMENT); + m_createStatements.push_back(DROPINDEX_BUILDERGUID_SOURCE_SOURCEDEPENDENCY); + m_databaseConnection->AddStatement(DELETE_AUTO_SUCCEED_JOBS, DELETE_AUTO_SUCCEED_JOBS_STATEMENT); }