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:
|
||||
throwStatementIsMisused("SqliteStatement::stepStatement: was called inappropriately!");
|
||||
case SQLITE_CONSTRAINT_CHECK:
|
||||
throw CheckConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_COMMITHOOK:
|
||||
throw CommitHookConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_DATATYPE:
|
||||
throw DataTypeConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_FOREIGNKEY:
|
||||
throw ForeignKeyConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_FUNCTION:
|
||||
throw FunctionConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_NOTNULL:
|
||||
throw NotNullConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_PINNED:
|
||||
throw PinnedConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_PRIMARYKEY:
|
||||
throw PrimaryKeyConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_ROWID:
|
||||
throw RowIdConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_TRIGGER:
|
||||
throw TriggerConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_UNIQUE:
|
||||
throw UniqueConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT_VTAB:
|
||||
throw VirtualTableConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_CONSTRAINT:
|
||||
throwConstraintPreventsModification(
|
||||
"SqliteStatement::stepStatement: contraint prevent insert or update!");
|
||||
throw ConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
case SQLITE_TOOBIG:
|
||||
throwTooBig("SqliteStatement::stepStatement: Some is to bigger than SQLITE_MAX_LENGTH.");
|
||||
case SQLITE_SCHEMA:
|
||||
@@ -587,11 +598,6 @@ void BaseStatement::throwStatementIsMisused(const char *) const
|
||||
throw StatementIsMisused(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
}
|
||||
|
||||
void BaseStatement::throwConstraintPreventsModification(const char *) const
|
||||
{
|
||||
throw ConstraintPreventsModification(sqlite3_errmsg(sqliteDatabaseHandle()));
|
||||
}
|
||||
|
||||
void BaseStatement::throwNoValuesToFetch(const char *) const
|
||||
{
|
||||
throw NoValuesToFetch();
|
||||
|
@@ -118,7 +118,6 @@ public:
|
||||
void checkColumnCount(int columnCount) const;
|
||||
bool isReadOnlyStatement() const;
|
||||
[[noreturn]] void throwStatementIsMisused(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwConstraintPreventsModification(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwNoValuesToFetch(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwInvalidColumnFetched(const char *whatHasHappened) const;
|
||||
[[noreturn]] void throwBindingIndexIsOutOfRange(const char *whatHasHappened) const;
|
||||
|
@@ -509,4 +509,64 @@ const char *StatementHasErrorSnapshot::what() const noexcept
|
||||
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
|
||||
|
@@ -333,6 +333,91 @@ public:
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
Reference in New Issue
Block a user