Show timing of all executed SQL queries

This also coincidentally fixes logging of prepared queries, which previously
weren't logged.

Change-Id: I41b3559080662284699ac3dfa4fa4236342c61d2
Done-by: John Brooks <john.brooks@jollamobile.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Robin Burchell 2014-07-22 13:22:10 +02:00 committed by Robin Burchell
parent 4fcd5a3da9
commit 25978c7f9e

View File

@ -43,6 +43,8 @@
//#define QT_DEBUG_SQL
#include "qdebug.h"
#include "qelapsedtimer.h"
#include "qatomic.h"
#include "qsqlrecord.h"
#include "qsqlresult.h"
@ -370,6 +372,10 @@ bool QSqlQuery::isNull(const QString &name) const
bool QSqlQuery::exec(const QString& query)
{
#ifdef QT_DEBUG_SQL
QElapsedTimer t;
t.start();
#endif
if (d->ref.load() != 1) {
bool fo = isForwardOnly();
*this = QSqlQuery(driver()->createResult());
@ -391,10 +397,14 @@ bool QSqlQuery::exec(const QString& query)
qWarning("QSqlQuery::exec: empty query");
return false;
}
bool retval = d->sqlResult->reset(query);
#ifdef QT_DEBUG_SQL
qDebug("\n QSqlQuery: %s", query.toLocal8Bit().constData());
qDebug().nospace() << "Executed query (" << t.elapsed() << "ms, " << d->sqlResult->size()
<< " results, " << d->sqlResult->numRowsAffected()
<< " affected): " << d->sqlResult->lastQuery();
#endif
return d->sqlResult->reset(query);
return retval;
}
/*!
@ -989,12 +999,22 @@ bool QSqlQuery::prepare(const QString& query)
*/
bool QSqlQuery::exec()
{
#ifdef QT_DEBUG_SQL
QElapsedTimer t;
t.start();
#endif
d->sqlResult->resetBindCount();
if (d->sqlResult->lastError().isValid())
d->sqlResult->setLastError(QSqlError());
return d->sqlResult->exec();
bool retval = d->sqlResult->exec();
#ifdef QT_DEBUG_SQL
qDebug().nospace() << "Executed prepared query (" << t.elapsed() << "ms, "
<< d->sqlResult->size() << " results, " << d->sqlResult->numRowsAffected()
<< " affected): " << d->sqlResult->lastQuery();
#endif
return retval;
}
/*! \enum QSqlQuery::BatchExecutionMode