forked from qt-creator/qt-creator
Sqlite: Add extended exceptions for connection lock errors
Change-Id: If6f6cd6ba67edc8716f3c43b832642244fc1e1c3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -384,9 +384,11 @@ void BaseStatement::checkForStepError(int resultCode) const
|
||||
throwDataTypeMismatch(
|
||||
"SqliteStatement::stepStatement: Most probably you used not an integer for a rowid.");
|
||||
case SQLITE_LOCKED_SHAREDCACHE:
|
||||
throw ConnectionsSharedCacheIsLocked(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_LOCKED_VTAB:
|
||||
throw ConnectionsVirtualTableIsLocked(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_LOCKED:
|
||||
throwConnectionIsLocked("SqliteStatement::stepStatement: Database connection is locked.");
|
||||
throw ConnectionIsLocked(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_IOERR_READ:
|
||||
throw InputOutputCannotRead();
|
||||
case SQLITE_IOERR_SHORT_READ:
|
||||
@@ -654,11 +656,6 @@ void BaseStatement::throwDataTypeMismatch(const char *) const
|
||||
throw DataTypeMismatch{sqlite3_errmsg(sqliteDatabaseHandle())};
|
||||
}
|
||||
|
||||
void BaseStatement::throwConnectionIsLocked(const char *) const
|
||||
{
|
||||
throw ConnectionIsLocked{sqlite3_errmsg(sqliteDatabaseHandle())};
|
||||
}
|
||||
|
||||
void BaseStatement::throwExecutionInterrupted(const char *) const
|
||||
{
|
||||
throw ExecutionInterrupted{};
|
||||
|
@@ -129,7 +129,6 @@ public:
|
||||
[[noreturn]] void throwProtocolError(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwDatabaseExceedsMaximumFileSize(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwDataTypeMismatch(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwConnectionIsLocked(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwExecutionInterrupted(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwCannotOpen(const char *whatHasHappened) const;
|
||||
|
||||
|
@@ -614,4 +614,14 @@ const char *CannotRollbackToReadOnlyConnection::what() const noexcept
|
||||
return "Sqlite::CannotRollbackToReadOnlyConnection";
|
||||
}
|
||||
|
||||
const char *ConnectionsSharedCacheIsLocked::what() const noexcept
|
||||
{
|
||||
return "Sqlite::ConnectionsSharedCacheIsLocked";
|
||||
}
|
||||
|
||||
const char *ConnectionsVirtualTableIsLocked::what() const noexcept
|
||||
{
|
||||
return "Sqlite::ConnectionsVirtualTableIsLocked";
|
||||
}
|
||||
|
||||
} // namespace Sqlite
|
||||
|
@@ -656,6 +656,20 @@ public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT ConnectionsSharedCacheIsLocked : public ConnectionIsLocked
|
||||
{
|
||||
public:
|
||||
using ConnectionIsLocked::ConnectionIsLocked;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT ConnectionsVirtualTableIsLocked : public ConnectionIsLocked
|
||||
{
|
||||
public:
|
||||
using ConnectionIsLocked::ConnectionIsLocked;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT ExecutionInterrupted : public Exception
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user