diff --git a/src/libs/sqlite/sqlitedatabase.h b/src/libs/sqlite/sqlitedatabase.h index 0f8158a6977..50ae643029b 100644 --- a/src/libs/sqlite/sqlitedatabase.h +++ b/src/libs/sqlite/sqlitedatabase.h @@ -82,6 +82,11 @@ public: return m_databaseBackend.lastInsertedRowId(); } + void setLastInsertedRowId(int64_t rowId) + { + m_databaseBackend.setLastInsertedRowId(rowId); + } + int changesCount() { return m_databaseBackend.changesCount(); diff --git a/src/libs/sqlite/sqlitedatabasebackend.cpp b/src/libs/sqlite/sqlitedatabasebackend.cpp index 928eb2b1d1e..d62e2b2897a 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.cpp +++ b/src/libs/sqlite/sqlitedatabasebackend.cpp @@ -172,6 +172,11 @@ int64_t DatabaseBackend::lastInsertedRowId() const return sqlite3_last_insert_rowid(sqliteDatabaseHandle()); } +void DatabaseBackend::setLastInsertedRowId(int64_t rowId) +{ + sqlite3_set_last_insert_rowid(sqliteDatabaseHandle(), rowId); +} + void DatabaseBackend::execute(Utils::SmallStringView sqlStatement) { ReadWriteStatement statement(sqlStatement, m_database); diff --git a/src/libs/sqlite/sqlitedatabasebackend.h b/src/libs/sqlite/sqlitedatabasebackend.h index 6ff56b11b22..50a766fd701 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.h +++ b/src/libs/sqlite/sqlitedatabasebackend.h @@ -72,6 +72,7 @@ public: int totalChangesCount() const; int64_t lastInsertedRowId() const; + void setLastInsertedRowId(int64_t rowId); void execute(Utils::SmallStringView sqlStatement); diff --git a/tests/unit/unittest/sqlitedatabase-test.cpp b/tests/unit/unittest/sqlitedatabase-test.cpp index 98b14359458..73f3a427242 100644 --- a/tests/unit/unittest/sqlitedatabase-test.cpp +++ b/tests/unit/unittest/sqlitedatabase-test.cpp @@ -133,6 +133,13 @@ TEST_F(SqliteDatabase, TableIsReadyAfterOpenDatabase) ASSERT_TRUE(table.isReady()); } +TEST_F(SqliteDatabase, LastRowId) +{ + database.setLastInsertedRowId(42); + + ASSERT_THAT(database.lastInsertedRowId(), 42); +} + void SqliteDatabase::SetUp() { database.setJournalMode(JournalMode::Memory);