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:
|
case SQLITE_INTERRUPT:
|
||||||
throwExecutionInterrupted("SqliteStatement::stepStatement: Execution was interrupted.");
|
throwExecutionInterrupted("SqliteStatement::stepStatement: Execution was interrupted.");
|
||||||
case SQLITE_CORRUPT_INDEX:
|
case SQLITE_CORRUPT_INDEX:
|
||||||
|
throw DatabaseHasCorruptIndex();
|
||||||
case SQLITE_CORRUPT_SEQUENCE:
|
case SQLITE_CORRUPT_SEQUENCE:
|
||||||
|
throw DatabaseHasCorruptSequence();
|
||||||
case SQLITE_CORRUPT_VTAB:
|
case SQLITE_CORRUPT_VTAB:
|
||||||
|
throw DatabaseHasCorruptVirtualTable();
|
||||||
case SQLITE_CORRUPT:
|
case SQLITE_CORRUPT:
|
||||||
throwDatabaseIsCorrupt("SqliteStatement::stepStatement: Database is corrupt.");
|
throw DatabaseIsCorrupt();
|
||||||
case SQLITE_CANTOPEN_CONVPATH:
|
case SQLITE_CANTOPEN_CONVPATH:
|
||||||
case SQLITE_CANTOPEN_DIRTYWAL:
|
case SQLITE_CANTOPEN_DIRTYWAL:
|
||||||
case SQLITE_CANTOPEN_FULLPATH:
|
case SQLITE_CANTOPEN_FULLPATH:
|
||||||
@@ -661,11 +664,6 @@ void BaseStatement::throwExecutionInterrupted(const char *) const
|
|||||||
throw ExecutionInterrupted{};
|
throw ExecutionInterrupted{};
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseStatement::throwDatabaseIsCorrupt(const char *) const
|
|
||||||
{
|
|
||||||
throw DatabaseIsCorrupt{};
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseStatement::throwCannotOpen(const char *) const
|
void BaseStatement::throwCannotOpen(const char *) const
|
||||||
{
|
{
|
||||||
throw CannotOpen{};
|
throw CannotOpen{};
|
||||||
|
@@ -132,7 +132,6 @@ public:
|
|||||||
[[noreturn]] void throwDataTypeMismatch(const char *whatHasHappened) const;
|
[[noreturn]] void throwDataTypeMismatch(const char *whatHasHappened) const;
|
||||||
[[noreturn]] void throwConnectionIsLocked(const char *whatHasHappened) const;
|
[[noreturn]] void throwConnectionIsLocked(const char *whatHasHappened) const;
|
||||||
[[noreturn]] void throwExecutionInterrupted(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;
|
[[noreturn]] void throwCannotOpen(const char *whatHasHappened) const;
|
||||||
|
|
||||||
QString columnName(int column) const;
|
QString columnName(int column) const;
|
||||||
|
@@ -569,4 +569,19 @@ const char *VirtualTableConstraintPreventsModification::what() const noexcept
|
|||||||
return "Sqlite::VirtualTableConstraintPreventsModification";
|
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
|
} // namespace Sqlite
|
||||||
|
@@ -628,6 +628,27 @@ public:
|
|||||||
const char *what() const noexcept override;
|
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
|
class SQLITE_EXPORT CannotOpen : public Exception
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user