Sqlite: Add extended exceptions for can't open errors

Change-Id: Ib092b5fe721b8b063f8c503cc1a650447e393951
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2023-03-13 18:39:37 +01:00
parent 48442b991f
commit 471aa774c7
4 changed files with 79 additions and 7 deletions

View File

@@ -468,13 +468,19 @@ void BaseStatement::checkForStepError(int resultCode) const
case SQLITE_CORRUPT:
throw DatabaseIsCorrupt();
case SQLITE_CANTOPEN_CONVPATH:
throw CannotOpenConvPath();
case SQLITE_CANTOPEN_DIRTYWAL:
throw CannotOpenDirtyWal();
case SQLITE_CANTOPEN_FULLPATH:
throw CannotCovertToFullPath();
case SQLITE_CANTOPEN_ISDIR:
throw CannotOpenDirectoryPath();
case SQLITE_CANTOPEN_NOTEMPDIR:
throw CannotOpenNoTempDir();
case SQLITE_CANTOPEN_SYMLINK:
throw CannotOpenSynbolicLink();
case SQLITE_CANTOPEN:
throwCannotOpen("SqliteStatement::stepStatement: Cannot open database or temporary file.");
throw CannotOpen();
}
throwUnknowError("SqliteStatement::stepStatement: unknown error has happened");
@@ -661,11 +667,6 @@ void BaseStatement::throwExecutionInterrupted(const char *) const
throw ExecutionInterrupted{};
}
void BaseStatement::throwCannotOpen(const char *) const
{
throw CannotOpen{};
}
QString BaseStatement::columnName(int column) const
{
return QString::fromUtf8(sqlite3_column_name(m_compiledStatement.get(), column));

View File

@@ -130,7 +130,6 @@ public:
[[noreturn]] void throwDatabaseExceedsMaximumFileSize(const char *whatHasHappened) const;
[[noreturn]] void throwDataTypeMismatch(const char *whatHasHappened) const;
[[noreturn]] void throwExecutionInterrupted(const char *whatHasHappened) const;
[[noreturn]] void throwCannotOpen(const char *whatHasHappened) const;
QString columnName(int column) const;

View File

@@ -624,4 +624,34 @@ const char *ConnectionsVirtualTableIsLocked::what() const noexcept
return "Sqlite::ConnectionsVirtualTableIsLocked";
}
const char *CannotOpenConvPath::what() const noexcept
{
return "Sqlite::CannotOpenConvPath";
}
const char *CannotOpenDirtyWal::what() const noexcept
{
return "Sqlite::CannotOpenDirtyWal";
}
const char *CannotCovertToFullPath::what() const noexcept
{
return "Sqlite::CannotCovertToFullPath";
}
const char *CannotOpenDirectoryPath::what() const noexcept
{
return "Sqlite::CannotOpenDirectoryPath";
}
const char *CannotOpenNoTempDir::what() const noexcept
{
return "Sqlite::CannotOpenNoTempDir";
}
const char *CannotOpenSynbolicLink::what() const noexcept
{
return "Sqlite::CannotOpenSynbolicLink";
}
} // namespace Sqlite

View File

@@ -712,6 +712,48 @@ public:
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotOpenConvPath : public CannotOpen
{
public:
using CannotOpen::CannotOpen;
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotOpenDirtyWal : public CannotOpen
{
public:
using CannotOpen::CannotOpen;
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotCovertToFullPath : public CannotOpen
{
public:
using CannotOpen::CannotOpen;
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotOpenDirectoryPath : public CannotOpen
{
public:
using CannotOpen::CannotOpen;
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotOpenNoTempDir : public CannotOpen
{
public:
using CannotOpen::CannotOpen;
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotOpenSynbolicLink : public CannotOpen
{
public:
using CannotOpen::CannotOpen;
const char *what() const noexcept override;
};
class SQLITE_EXPORT CannotCreateChangeSetIterator : public Exception
{
public: