forked from qt-creator/qt-creator
Sqlite: Add extended exceptions for busy errors
Change-Id: I812650401f4a5d5a099abc0183d2f7ed4e1d64c6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -310,11 +310,13 @@ void BaseStatement::checkForStepError(int resultCode) const
|
||||
{
|
||||
switch (resultCode) {
|
||||
case SQLITE_BUSY_RECOVERY:
|
||||
throw StatementIsBusyRecovering(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_BUSY_SNAPSHOT:
|
||||
throw StatementIsBusySnapshot(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_BUSY_TIMEOUT:
|
||||
throw StatementIsBusyTimeout(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_BUSY:
|
||||
throwStatementIsBusy("SqliteStatement::stepStatement: database engine was unable to "
|
||||
"acquire the database locks!");
|
||||
throw StatementIsBusy(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_ERROR_MISSING_COLLSEQ:
|
||||
case SQLITE_ERROR_RETRY:
|
||||
case SQLITE_ERROR_SNAPSHOT:
|
||||
@@ -459,11 +461,13 @@ void BaseStatement::checkForPrepareError(int resultCode) const
|
||||
{
|
||||
switch (resultCode) {
|
||||
case SQLITE_BUSY_RECOVERY:
|
||||
throw StatementIsBusyRecovering(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_BUSY_SNAPSHOT:
|
||||
throw StatementIsBusySnapshot(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_BUSY_TIMEOUT:
|
||||
throw StatementIsBusyTimeout(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_BUSY:
|
||||
throwStatementIsBusy("SqliteStatement::prepareStatement: database engine was unable to "
|
||||
"acquire the database locks!");
|
||||
throw StatementIsBusy(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_ERROR_MISSING_COLLSEQ:
|
||||
case SQLITE_ERROR_RETRY:
|
||||
case SQLITE_ERROR_SNAPSHOT:
|
||||
@@ -574,11 +578,6 @@ bool BaseStatement::isReadOnlyStatement() const
|
||||
return sqlite3_stmt_readonly(m_compiledStatement.get());
|
||||
}
|
||||
|
||||
void BaseStatement::throwStatementIsBusy(const char *) const
|
||||
{
|
||||
throw StatementIsBusy(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
}
|
||||
|
||||
void BaseStatement::throwStatementHasError(const char *) const
|
||||
{
|
||||
throw StatementHasError(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
|
@@ -117,7 +117,6 @@ public:
|
||||
void checkBindingParameterCount(int bindingParameterCount) const;
|
||||
void checkColumnCount(int columnCount) const;
|
||||
bool isReadOnlyStatement() const;
|
||||
[[noreturn]] void throwStatementIsBusy(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwStatementHasError(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwStatementIsMisused(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwConstraintPreventsModification(const char *whatHasHappened) const;
|
||||
|
@@ -420,8 +420,11 @@ void DatabaseBackend::walCheckpointFull()
|
||||
case SQLITE_OK:
|
||||
break;
|
||||
case SQLITE_BUSY_RECOVERY:
|
||||
throw DatabaseIsBusyRecovering();
|
||||
case SQLITE_BUSY_SNAPSHOT:
|
||||
throw DatabaseIsBusySnapshot();
|
||||
case SQLITE_BUSY_TIMEOUT:
|
||||
throw DatabaseIsBusyTimeout();
|
||||
case SQLITE_BUSY:
|
||||
throw DatabaseIsBusy();
|
||||
case SQLITE_ERROR_MISSING_COLLSEQ:
|
||||
|
@@ -464,4 +464,34 @@ const char *InputOutputCannotRead::what() const noexcept
|
||||
return "Sqlite::InputOutputCannotRead";
|
||||
}
|
||||
|
||||
const char *StatementIsBusyRecovering::what() const noexcept
|
||||
{
|
||||
return "Sqlite::StatementIsBusyRecovering";
|
||||
}
|
||||
|
||||
const char *StatementIsBusySnapshot::what() const noexcept
|
||||
{
|
||||
return "Sqlite::StatementIsBusySnapshot";
|
||||
}
|
||||
|
||||
const char *StatementIsBusyTimeout::what() const noexcept
|
||||
{
|
||||
return "Sqlite::StatementIsBusyTimeout";
|
||||
}
|
||||
|
||||
const char *DatabaseIsBusyRecovering::what() const noexcept
|
||||
{
|
||||
return "Sqlite::DatabaseIsBusyRecovering";
|
||||
}
|
||||
|
||||
const char *DatabaseIsBusySnapshot::what() const noexcept
|
||||
{
|
||||
return "Sqlite::DatabaseIsBusySnapshot";
|
||||
}
|
||||
|
||||
const char *DatabaseIsBusyTimeout::what() const noexcept
|
||||
{
|
||||
return "Sqlite::DatabaseIsBusyTimeout";
|
||||
}
|
||||
|
||||
} // namespace Sqlite
|
||||
|
@@ -40,6 +40,27 @@ public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT StatementIsBusyRecovering : public StatementIsBusy
|
||||
{
|
||||
public:
|
||||
using StatementIsBusy::StatementIsBusy;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT StatementIsBusySnapshot : public StatementIsBusy
|
||||
{
|
||||
public:
|
||||
using StatementIsBusy::StatementIsBusy;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT StatementIsBusyTimeout : public StatementIsBusy
|
||||
{
|
||||
public:
|
||||
using StatementIsBusy::StatementIsBusy;
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseIsBusy : public Exception
|
||||
{
|
||||
public:
|
||||
@@ -47,6 +68,24 @@ public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseIsBusyRecovering : public DatabaseIsBusy
|
||||
{
|
||||
public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseIsBusySnapshot : public DatabaseIsBusy
|
||||
{
|
||||
public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT DatabaseIsBusyTimeout : public DatabaseIsBusy
|
||||
{
|
||||
public:
|
||||
const char *what() const noexcept override;
|
||||
};
|
||||
|
||||
class SQLITE_EXPORT StatementHasError : public ExceptionWithMessage
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user