QSqlError: also compare nativeErrorCode() in operator==() / operator!=()

A QSqlError is not equal when the native error code differs. The
database and driver text should not be considered during the
comparison because they might differ due to e.g. different locales.

[ChangeLog][QtSql][QSqlError] The comparison operators have been fixed to
take both error type and error code into account.

Change-Id: Ie7511f183f88dd454eb165c6ff237e51b79d1c08
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Christian Ehrlicher 2023-03-25 13:42:52 +01:00 committed by Volker Hilsheimer
parent 07f7ed2bad
commit 2f709952cf
2 changed files with 15 additions and 7 deletions

View File

@ -126,22 +126,26 @@ QSqlError &QSqlError::operator=(const QSqlError &other)
} }
/*! /*!
Compare the \a other error's values to this error and returns \c true, if it equal. Compare the \a other error's type() and nativeErrorCode()
to this error and returns \c true, if it equal.
*/ */
bool QSqlError::operator==(const QSqlError &other) const bool QSqlError::operator==(const QSqlError &other) const
{ {
return (d->errorType == other.d->errorType); return (d->errorType == other.d->errorType &&
d->errorCode == other.d->errorCode);
} }
/*! /*!
Compare the \a other error's values to this error and returns \c true if it is not equal. Compare the \a other error's type() and nativeErrorCode()
to this error and returns \c true if it is not equal.
*/ */
bool QSqlError::operator!=(const QSqlError &other) const bool QSqlError::operator!=(const QSqlError &other) const
{ {
return (d->errorType != other.d->errorType); return (d->errorType != other.d->errorType ||
d->errorCode != other.d->errorCode);
} }

View File

@ -108,12 +108,16 @@ void tst_QSqlError::moveOperator()
void tst_QSqlError::operators() void tst_QSqlError::operators()
{ {
QSqlError error1(QString(), QString(), QSqlError::NoError); QSqlError error1(QStringLiteral("a"), QStringLiteral("b"), QSqlError::NoError, QStringLiteral("ec1"));
QSqlError error2(QString(), QString(), QSqlError::NoError); QSqlError error2(QStringLiteral("c"), QStringLiteral("d"), QSqlError::NoError, QStringLiteral("ec1"));
QSqlError error3(QString(), QString(), QSqlError::UnknownError); QSqlError error3(QString(), QString(), QSqlError::UnknownError, QStringLiteral("ec1"));
QSqlError error4(QString(), QString(), QSqlError::NoError, QStringLiteral("ec2"));
QSqlError error5(QString(), QString(), QSqlError::UnknownError, QStringLiteral("ec2"));
QCOMPARE(error1, error2); QCOMPARE(error1, error2);
QVERIFY(error1 != error3); QVERIFY(error1 != error3);
QVERIFY(error1 != error4);
QVERIFY(error4 != error5);
} }
void tst_QSqlError::qtbug_74575() void tst_QSqlError::qtbug_74575()