diff --git a/src/libs/clangsupport/refactoringdatabaseinitializer.h b/src/libs/clangsupport/refactoringdatabaseinitializer.h index 7fe1a6aefef..d8039834522 100644 --- a/src/libs/clangsupport/refactoringdatabaseinitializer.h +++ b/src/libs/clangsupport/refactoringdatabaseinitializer.h @@ -49,6 +49,7 @@ public: createProjectPartsSourcesTable(); createUsedMacrosTable(); createFileInformationsTable(); + createSourceDependenciesTable(); transaction.commit(); } @@ -159,6 +160,17 @@ public: table.initialize(database); } + void createSourceDependenciesTable() + { + Sqlite::Table table; + table.setUseIfNotExists(true); + table.setName("sourceDependencies"); + const Sqlite::Column &sourceIdColumn = table.addColumn("sourceId", Sqlite::ColumnType::Integer); + const Sqlite::Column &dependencySourceIdColumn = table.addColumn("dependencySourceId", Sqlite::ColumnType::Integer); + table.addIndex({sourceIdColumn, dependencySourceIdColumn}); + + table.initialize(database); + } public: DatabaseType &database; }; diff --git a/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp b/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp index 585521416f6..c00feaa3ba0 100644 --- a/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp +++ b/tests/unit/unittest/refactoringdatabaseinitializer-test.cpp @@ -123,6 +123,16 @@ TEST_F(RefactoringDatabaseInitializer, AddFileInformationsTable) initializer.createFileInformationsTable(); } +TEST_F(RefactoringDatabaseInitializer, AddSourceDependenciesTable) +{ + InSequence s; + + EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, dependencySourceId INTEGER)"))); + EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON sourceDependencies(sourceId, dependencySourceId)"))); + + initializer.createSourceDependenciesTable(); +} + TEST_F(RefactoringDatabaseInitializer, CreateInTheContructor) { InSequence s; @@ -145,6 +155,8 @@ TEST_F(RefactoringDatabaseInitializer, CreateInTheContructor) EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName)"))); EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName)"))); EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS fileInformations(sourceId INTEGER PRIMARY KEY, size INTEGER, lastModified INTEGER)"))); + EXPECT_CALL(mockDatabase, execute(Eq("CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, dependencySourceId INTEGER)"))); + EXPECT_CALL(mockDatabase, execute(Eq("CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON sourceDependencies(sourceId, dependencySourceId)"))); EXPECT_CALL(mockDatabase, commit()); Initializer initializer{mockDatabase};