From 93069a298a81d508ac651a2c1e9ca7dc00842589 Mon Sep 17 00:00:00 2001 From: Sune Vuorela Date: Fri, 16 Nov 2012 13:19:05 +0100 Subject: create interface QSqlDriver::cancelQuery() This is useful for canceling a long running sql query. Note that it needs support from the individual drivers. Change-Id: Ia170a70487ff4ee13c85f12bc13e62fb198617fe Reviewed-by: Andy Shaw Reviewed-by: Mark Brand --- src/sql/kernel/qsqldriver.cpp | 23 +++++++++++++++++++++++ src/sql/kernel/qsqldriver.h | 5 ++++- 2 files changed, 27 insertions(+), 1 deletion(-) (limited to 'src/sql') diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index ec1628291d..62ec4e7e1f 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -789,4 +789,27 @@ QSql::NumericalPrecisionPolicy QSqlDriver::numericalPrecisionPolicy() const return d_func()->precisionPolicy; } +/*! + \since 5.0 + \internal + + Tries to cancel the running query, if the underlying driver has the + capability to cancel queries. Returns true on success, otherwise false. + + This function can be called from a different thread. + + If you use this function as a slot, you need to use a Qt::DirectConnection + from a different thread. + + Reimplement this function to support canceling running queries in + your own QSqlDriver subclass. It must be implemented in a thread-safe + manner. + + \sa QSqlDriver::hasFeature() +*/ +bool QSqlDriver::cancelQuery() +{ + return false; +} + QT_END_NAMESPACE diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h index 921e1a4993..f0176700a9 100644 --- a/src/sql/kernel/qsqldriver.h +++ b/src/sql/kernel/qsqldriver.h @@ -71,7 +71,7 @@ public: enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries, NamedPlaceholders, PositionalPlaceholders, LastInsertId, BatchOperations, SimpleLocking, LowPrecisionNumbers, - EventNotifications, FinishQuery, MultipleResultSets }; + EventNotifications, FinishQuery, MultipleResultSets, CancelQuery }; enum StatementType { WhereStatement, SelectStatement, UpdateStatement, InsertStatement, DeleteStatement }; @@ -120,6 +120,9 @@ public: void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; +public Q_SLOTS: + virtual bool cancelQuery(); + Q_SIGNALS: void notification(const QString &name); void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload); -- cgit v1.2.3