From 25978c7f9e6fa66c0c6e1d0f8d196ba79e72e8d9 Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Tue, 22 Jul 2014 13:22:10 +0200 Subject: 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 Reviewed-by: Kai Koehne --- src/sql/kernel/qsqlquery.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'src/sql/kernel/qsqlquery.cpp') diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 6b13eb02ed..2b1bd5feb1 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -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 -- cgit v1.2.3