Replace executedQuery when executing a new query

Only the first successful query was stored in the variable. When a new
query is executed the function QSqlResult::setActive was not replacing
the last executed query.

Fixes: QTBUG-28883
Change-Id: Ib4938c42e6264f9edd0764b4a392da7988f68fc0
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
This commit is contained in:
Jesus Fernandez 2017-12-13 13:43:49 +01:00 committed by Jesus Fernandez
parent 0bde49bd92
commit 9501e92841
2 changed files with 22 additions and 1 deletions

View File

@ -386,7 +386,7 @@ const QSqlDriver *QSqlResult::driver() const
void QSqlResult::setActive(bool active)
{
Q_D(QSqlResult);
if (active && d->executedQuery.isEmpty())
if (active)
d->executedQuery = d->sql;
d->active = active;

View File

@ -158,6 +158,8 @@ private slots:
void lastInsertId();
void lastQuery_data() { generic_data(); }
void lastQuery();
void lastQueryTwoQueries_data() { generic_data(); }
void lastQueryTwoQueries();
void bindBool_data() { generic_data(); }
void bindBool();
void psql_bindWithDoubleColonCastOperator_data() { generic_data("QPSQL"); }
@ -2813,6 +2815,25 @@ void tst_QSqlQuery::lastQuery()
QCOMPARE( q.executedQuery(), sql );
}
void tst_QSqlQuery::lastQueryTwoQueries()
{
QFETCH(QString, dbName);
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
QSqlQuery q(db);
QString sql = QLatin1String("select * from ") + qtest;
QVERIFY_SQL(q, exec(sql));
QCOMPARE(q.lastQuery(), sql);
QCOMPARE(q.executedQuery(), sql);
sql = QLatin1String("select id from ") + qtest;
QVERIFY_SQL(q, exec(sql));
QCOMPARE(q.lastQuery(), sql);
QCOMPARE(q.executedQuery(), sql);
}
void tst_QSqlQuery::psql_bindWithDoubleColonCastOperator()
{
QFETCH( QString, dbName );