forked from qt-creator/qt-creator
Sqlite: Add extended exceptions for contraint errors
Change-Id: I2e3030de7496703ba1e9fbd1a28ed55061e1b2b5 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -328,20 +328,31 @@ void BaseStatement::checkForStepError(int resultCode) const
|
|||||||
case SQLITE_MISUSE:
|
case SQLITE_MISUSE:
|
||||||
throwStatementIsMisused("SqliteStatement::stepStatement: was called inappropriately!");
|
throwStatementIsMisused("SqliteStatement::stepStatement: was called inappropriately!");
|
||||||
case SQLITE_CONSTRAINT_CHECK:
|
case SQLITE_CONSTRAINT_CHECK:
|
||||||
|
throw CheckConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_COMMITHOOK:
|
case SQLITE_CONSTRAINT_COMMITHOOK:
|
||||||
|
throw CommitHookConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_DATATYPE:
|
case SQLITE_CONSTRAINT_DATATYPE:
|
||||||
|
throw DataTypeConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_FOREIGNKEY:
|
case SQLITE_CONSTRAINT_FOREIGNKEY:
|
||||||
|
throw ForeignKeyConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_FUNCTION:
|
case SQLITE_CONSTRAINT_FUNCTION:
|
||||||
|
throw FunctionConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_NOTNULL:
|
case SQLITE_CONSTRAINT_NOTNULL:
|
||||||
|
throw NotNullConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_PINNED:
|
case SQLITE_CONSTRAINT_PINNED:
|
||||||
|
throw PinnedConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_PRIMARYKEY:
|
case SQLITE_CONSTRAINT_PRIMARYKEY:
|
||||||
|
throw PrimaryKeyConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_ROWID:
|
case SQLITE_CONSTRAINT_ROWID:
|
||||||
|
throw RowIdConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_TRIGGER:
|
case SQLITE_CONSTRAINT_TRIGGER:
|
||||||
|
throw TriggerConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_UNIQUE:
|
case SQLITE_CONSTRAINT_UNIQUE:
|
||||||
|
throw UniqueConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT_VTAB:
|
case SQLITE_CONSTRAINT_VTAB:
|
||||||
|
throw VirtualTableConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
case SQLITE_CONSTRAINT:
|
case SQLITE_CONSTRAINT:
|
||||||
throwConstraintPreventsModification(
|
throw ConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
"SqliteStatement::stepStatement: contraint prevent insert or update!");
|
|
||||||
case SQLITE_TOOBIG:
|
case SQLITE_TOOBIG:
|
||||||
throwTooBig("SqliteStatement::stepStatement: Some is to bigger than SQLITE_MAX_LENGTH.");
|
throwTooBig("SqliteStatement::stepStatement: Some is to bigger than SQLITE_MAX_LENGTH.");
|
||||||
case SQLITE_SCHEMA:
|
case SQLITE_SCHEMA:
|
||||||
@@ -587,11 +598,6 @@ void BaseStatement::throwStatementIsMisused(const char *) const
|
|||||||
throw StatementIsMisused(sqlite3_errmsg(sqliteDatabaseHandle()));
|
throw StatementIsMisused(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseStatement::throwConstraintPreventsModification(const char *) const
|
|
||||||
{
|
|
||||||
throw ConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseStatement::throwNoValuesToFetch(const char *) const
|
void BaseStatement::throwNoValuesToFetch(const char *) const
|
||||||
{
|
{
|
||||||
throw NoValuesToFetch();
|
throw NoValuesToFetch();
|
||||||
|
@@ -118,7 +118,6 @@ public:
|
|||||||
void checkColumnCount(int columnCount) const;
|
void checkColumnCount(int columnCount) const;
|
||||||
bool isReadOnlyStatement() const;
|
bool isReadOnlyStatement() const;
|
||||||
[[noreturn]] void throwStatementIsMisused(const char *whatHasHappened) const;
|
[[noreturn]] void throwStatementIsMisused(const char *whatHasHappened) const;
|
||||||
[[noreturn]] void throwConstraintPreventsModification(const char *whatHasHappened) const;
|
|
||||||
[[noreturn]] void throwNoValuesToFetch(const char *whatHasHappened) const;
|
[[noreturn]] void throwNoValuesToFetch(const char *whatHasHappened) const;
|
||||||
[[noreturn]] void throwInvalidColumnFetched(const char *whatHasHappened) const;
|
[[noreturn]] void throwInvalidColumnFetched(const char *whatHasHappened) const;
|
||||||
[[noreturn]] void throwBindingIndexIsOutOfRange(const char *whatHasHappened) const;
|
[[noreturn]] void throwBindingIndexIsOutOfRange(const char *whatHasHappened) const;
|
||||||
|
@@ -509,4 +509,64 @@ const char *StatementHasErrorSnapshot::what() const noexcept
|
|||||||
return "Sqlite::StatementHasErrorSnapshot";
|
return "Sqlite::StatementHasErrorSnapshot";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *CheckConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::CheckConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *CommitHookConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::CommitHookConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *DataTypeConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::DataTypeConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *ForeignKeyConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::ForeignKeyConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *FunctionConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::FunctionConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *NotNullConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::NotNullConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *PinnedConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::PinnedConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *PrimaryKeyConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::PrimaryKeyConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *RowIdConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::RowIdConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *TriggerConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::TriggerConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *UniqueConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::UniqueConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *VirtualTableConstraintPreventsModification::what() const noexcept
|
||||||
|
{
|
||||||
|
return "Sqlite::VirtualTableConstraintPreventsModification";
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Sqlite
|
} // namespace Sqlite
|
||||||
|
@@ -333,6 +333,91 @@ public:
|
|||||||
const char *what() const noexcept override;
|
const char *what() const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT CheckConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT CommitHookConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT DataTypeConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT ForeignKeyConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT FunctionConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT NotNullConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT PinnedConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT PrimaryKeyConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT RowIdConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT TriggerConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT UniqueConstraintPreventsModification : public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SQLITE_EXPORT VirtualTableConstraintPreventsModification
|
||||||
|
: public ConstraintPreventsModification
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using ConstraintPreventsModification::ConstraintPreventsModification;
|
||||||
|
const char *what() const noexcept override;
|
||||||
|
};
|
||||||
|
|
||||||
class SQLITE_EXPORT NoValuesToFetch : public Exception
|
class SQLITE_EXPORT NoValuesToFetch : public Exception
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user