diff options
-rw-r--r-- | src/plugins/sqldrivers/ibase/qsql_ibase.cpp | 5 | ||||
-rw-r--r-- | src/plugins/sqldrivers/psql/qsql_psql.cpp | 5 | ||||
-rw-r--r-- | src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp | 5 | ||||
-rw-r--r-- | src/sql/kernel/qsqldriver.cpp | 3 | ||||
-rw-r--r-- | src/sql/kernel/qsqldriver.h | 3 | ||||
-rw-r--r-- | tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp | 50 |
6 files changed, 45 insertions, 26 deletions
diff --git a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp index ead08dbce8..b0b5375222 100644 --- a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp +++ b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp @@ -1914,7 +1914,12 @@ void QIBaseDriver::qHandleEventNotification(void *updatedResultBuffer) if (counts[0]) { if (eBuffer->subscriptionState == QIBaseEventBuffer::Subscribed) { +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED emit notification(i.key()); +QT_WARNING_POP +#endif emit notification(i.key(), QSqlDriver::UnknownSource, QVariant()); } else if (eBuffer->subscriptionState == QIBaseEventBuffer::Starting) diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp b/src/plugins/sqldrivers/psql/qsql_psql.cpp index 28be7bdc38..5f325db81e 100644 --- a/src/plugins/sqldrivers/psql/qsql_psql.cpp +++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp @@ -1692,7 +1692,12 @@ void QPSQLDriver::_q_handleNotification(int) if (notify->extra) payload = d->isUtf8 ? QString::fromUtf8(notify->extra) : QString::fromLatin1(notify->extra); #endif +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED emit notification(name); +QT_WARNING_POP +#endif QSqlDriver::NotificationSource source = (notify->be_pid == PQbackendPID(d->connection)) ? QSqlDriver::SelfSource : QSqlDriver::OtherSource; emit notification(name, source, payload); } diff --git a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp index 001bd673fc..65d3f0a580 100644 --- a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp +++ b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp @@ -1044,7 +1044,12 @@ void QSQLiteDriver::handleNotification(const QString &tableName, qint64 rowid) { Q_D(const QSQLiteDriver); if (d->notificationid.contains(tableName)) { +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED emit notification(tableName); +QT_WARNING_POP +#endif emit notification(tableName, QSqlDriver::UnknownSource, QVariant(rowid)); } } diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index 7f7b81b05b..e0ddc4ca84 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -110,6 +110,9 @@ QSqlDriver::~QSqlDriver() that the driver subscribes to. \a name identifies the event notification. \sa subscribeToNotification() + + \obsolete use QSqlDriver::notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload) + instead */ /*! diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h index 1e03be48d3..ca9f7dc51e 100644 --- a/src/sql/kernel/qsqldriver.h +++ b/src/sql/kernel/qsqldriver.h @@ -135,7 +135,10 @@ public Q_SLOTS: virtual bool cancelQuery(); Q_SIGNALS: +#if QT_DEPRECATED_SINCE(5, 15) + QT_DEPRECATED_X("Use the 3-args version of notification() instead.") void notification(const QString &name); +#endif void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload); protected: diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index c59250e36e..6a1f46582e 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -2135,6 +2135,8 @@ void tst_QSqlDatabase::eventNotificationIBase() { QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); + if (db.driverName().compare(QLatin1String("QIBASE"), Qt::CaseInsensitive)) + QSKIP("QIBASE specific test"); CHECK_DATABASE(db); const QString procedureName(qTableName("posteventProc", __FILE__, db)); @@ -2147,13 +2149,12 @@ void tst_QSqlDatabase::eventNotificationIBase() q.exec(QString("DROP PROCEDURE %1").arg(procedureName)); q.exec(QString("CREATE PROCEDURE %1\nAS BEGIN\nPOST_EVENT '%1';\nEND;").arg(procedureName)); q.exec(QString("EXECUTE PROCEDURE %1").arg(procedureName)); - QSignalSpy spy(driver, SIGNAL(notification(QString))); + QSignalSpy spy(driver, QOverload<const QString &, QSqlDriver::NotificationSource, const QVariant &>::of(&QSqlDriver::notification)); db.commit(); // No notifications are posted until the transaction is committed. - QTest::qWait(300); // Interbase needs some time to post the notification and call the driver callback. - // This happends from another thread, and we have to process events in order for the - // event handler in the driver to be executed and emit the notification signal. - - QCOMPARE(spy.count(), 1); + // Interbase needs some time to post the notification and call the driver callback. + // This happends from another thread, and we have to process events in order for the + // event handler in the driver to be executed and emit the notification signal. + QTRY_COMPARE(spy.count(), 1); QList<QVariant> arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toString(), procedureName); QVERIFY_SQL(*driver, unsubscribeFromNotification(procedureName)); @@ -2164,52 +2165,49 @@ void tst_QSqlDatabase::eventNotificationPSQL() { QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); + if (db.driverName().compare(QLatin1String("QPSQL"), Qt::CaseInsensitive)) + QSKIP("QPSQL specific test"); CHECK_DATABASE(db); QSqlQuery query(db); const auto procedureName = qTableName("posteventProc", __FILE__, db, false); QString payload = "payload"; - QSqlDriver &driver=*(db.driver()); - QVERIFY_SQL(driver, subscribeToNotification(procedureName)); - QSignalSpy spy(db.driver(), SIGNAL(notification(QString,QSqlDriver::NotificationSource,QVariant))); + QSqlDriver *driver = db.driver(); + QVERIFY_SQL(*driver, subscribeToNotification(procedureName)); + QSignalSpy spy(driver, QOverload<const QString &, QSqlDriver::NotificationSource, const QVariant &>::of(&QSqlDriver::notification)); query.exec(QString("NOTIFY \"%1\", '%2'").arg(procedureName).arg(payload)); - QCoreApplication::processEvents(); - QCOMPARE(spy.count(), 1); + QTRY_COMPARE(spy.count(), 1); QList<QVariant> arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toString(), procedureName); QCOMPARE(qvariant_cast<QSqlDriver::NotificationSource>(arguments.at(1)), QSqlDriver::SelfSource); QCOMPARE(qvariant_cast<QVariant>(arguments.at(2)).toString(), payload); - QVERIFY_SQL(driver, unsubscribeFromNotification(procedureName)); + QVERIFY_SQL(*driver, unsubscribeFromNotification(procedureName)); } void tst_QSqlDatabase::eventNotificationSQLite() { QFETCH(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); - CHECK_DATABASE(db); - if (db.driverName().compare(QLatin1String("QSQLITE"), Qt::CaseInsensitive)) { + if (db.driverName().compare(QLatin1String("QSQLITE"), Qt::CaseInsensitive)) QSKIP("QSQLITE specific test"); - } + CHECK_DATABASE(db); + const QString tableName(qTableName("sqlitnotifytest", __FILE__, db)); const auto noEscapeTableName(qTableName("sqlitnotifytest", __FILE__, db, false)); tst_Databases::safeDropTable(db, tableName); - QSignalSpy notificationSpy(db.driver(), SIGNAL(notification(QString))); - QSignalSpy notificationSpyExt(db.driver(), SIGNAL(notification(QString,QSqlDriver::NotificationSource,QVariant))); + QSqlDriver *driver = db.driver(); + QSignalSpy spy(driver, QOverload<const QString &, QSqlDriver::NotificationSource, const QVariant &>::of(&QSqlDriver::notification)); QSqlQuery q(db); QVERIFY_SQL(q, exec("CREATE TABLE " + tableName + " (id INTEGER, realVal REAL)")); - db.driver()->subscribeToNotification(noEscapeTableName); + driver->subscribeToNotification(noEscapeTableName); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, realVal) VALUES (1, 2.3)")); - QTRY_COMPARE(notificationSpy.count(), 1); - QTRY_COMPARE(notificationSpyExt.count(), 1); - QList<QVariant> arguments = notificationSpy.takeFirst(); - QCOMPARE(arguments.at(0).toString(), noEscapeTableName); - arguments = notificationSpyExt.takeFirst(); + QTRY_COMPARE(spy.count(), 1); + QList<QVariant> arguments = spy.takeFirst(); QCOMPARE(arguments.at(0).toString(), noEscapeTableName); - db.driver()->unsubscribeFromNotification(noEscapeTableName); + driver->unsubscribeFromNotification(noEscapeTableName); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, realVal) VALUES (1, 2.3)")); - QTRY_COMPARE(notificationSpy.count(), 0); - QTRY_COMPARE(notificationSpyExt.count(), 0); + QTRY_COMPARE(spy.count(), 0); } void tst_QSqlDatabase::sqlite_bindAndFetchUInt() |