forked from qt-creator/qt-creator
Sqlite: Add extended exceptions for corruption errors
Change-Id: I705bffc54def12e914caf31cacf870ad2f9cbeea Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -453,10 +453,13 @@ void BaseStatement::checkForStepError(int resultCode) const
|
||||
case SQLITE_INTERRUPT:
|
||||
throwExecutionInterrupted("SqliteStatement::stepStatement: Execution was interrupted.");
|
||||
case SQLITE_CORRUPT_INDEX:
|
||||
throw DatabaseHasCorruptIndex();
|
||||
case SQLITE_CORRUPT_SEQUENCE:
|
||||
throw DatabaseHasCorruptSequence();
|
||||
case SQLITE_CORRUPT_VTAB:
|
||||
throw DatabaseHasCorruptVirtualTable();
|
||||
case SQLITE_CORRUPT:
|
||||
throwDatabaseIsCorrupt("SqliteStatement::stepStatement: Database is corrupt.");
|
||||
throw DatabaseIsCorrupt();
|
||||
case SQLITE_CANTOPEN_CONVPATH:
|
||||
case SQLITE_CANTOPEN_DIRTYWAL:
|
||||
case SQLITE_CANTOPEN_FULLPATH:
|
||||
@@ -661,11 +664,6 @@ void BaseStatement::throwExecutionInterrupted(const char *) const
|
||||
throw ExecutionInterrupted{};
|
||||
}
|
||||
|
||||
void BaseStatement::throwDatabaseIsCorrupt(const char *) const
|
||||
{
|
||||
throw DatabaseIsCorrupt{};
|
||||
}
|
||||
|
||||
void BaseStatement::throwCannotOpen(const char *) const
|
||||
{
|
||||
throw CannotOpen{};
|
||||
|
@@ -132,7 +132,6 @@ public:
|
||||
[[noreturn]] void throwDataTypeMismatch(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwConnectionIsLocked(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwExecutionInterrupted(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwDatabaseIsCorrupt(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwCannotOpen(const char *whatHasHappened) const;
|
||||
|
||||
QString columnName(int column) const;
|
||||
|
@@ -569,4 +569,19 @@ const char *VirtualTableConstraintPreventsModification::what() const noexcept
|
||||
return "Sqlite::VirtualTableConstraintPreventsModification";
|
||||
}
|
||||
|
||||
const char *DatabaseHasCorruptIndex::what() const noexcept
|
||||
{
|
||||
return "Sqlite::DatabaseHasCorruptIndex";
|
||||
}
|
||||
|
||||
const char *DatabaseHasCorruptSequence::what() const noexcept
|
||||
{
|
||||
return "Sqlite::DatabaseHasCorruptSequence";
|
||||
}
|
||||
|
||||
const char *DatabaseHasCorruptVirtualTable::what() const noexcept
|
||||
{
|
||||
return "Sqlite::DatabaseHasCorruptVirtualTable";
|
||||
}
|
||||
|
||||
} // namespace Sqlite
|
||||
|
@@ -628,6 +628,27 @@ public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseHasCorruptIndex : public DatabaseIsCorrupt
|
||||
{
|
||||
public:
|
||||
using DatabaseIsCorrupt::DatabaseIsCorrupt;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseHasCorruptSequence : public DatabaseIsCorrupt
|
||||
{
|
||||
public:
|
||||
using DatabaseIsCorrupt::DatabaseIsCorrupt;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseHasCorruptVirtualTable : public DatabaseIsCorrupt
|
||||
{
|
||||
public:
|
||||
using DatabaseIsCorrupt::DatabaseIsCorrupt;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT CannotOpen : public Exception
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user