diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-03-12 14:49:02 +0100 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-03-17 20:33:16 +0100 |
commit | acb6131a4db38196e3209470621071def45cabcc (patch) | |
tree | 52e8fa71bd78ddba10d2d0da260a99a5add55cec | |
parent | 1981ebe8ada68f600ecb10d9e9b7270cf9e19866 (diff) |
SQL/IBASE: fix tests
Fix some tests so they will correctly work with Interbase (Firebird 3.x)
Change-Id: Ib3c8ceaf31fa01af3a00a9772350b49cee8b2342
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
4 files changed, 31 insertions, 31 deletions
diff --git a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp index e52a72b470..95b994e7cd 100644 --- a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp +++ b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp @@ -1487,13 +1487,6 @@ void QIBaseDriver::close() qFreeEventBuffer(eBuffer); } d->eventBuffers.clear(); - -#if defined(FB_API_VER) - // TODO check whether this workaround for Firebird crash is still needed - QDeadlineTimer timer(500); - while (!timer.hasExpired()) - QCoreApplication::processEvents(); -#endif } isc_detach_database(d->status, &d->ibase); diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp index eaa1641b57..f34045b2a0 100644 --- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp @@ -305,7 +305,6 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db) << qTableName("qtestfields", __FILE__, db) << qTableName("qtestalter", __FILE__, db) << qTableName("qtest_temp", __FILE__, db) - << qTableName("qtest_bigint", __FILE__, db) << qTableName("qtest_xmltype", __FILE__, db) << qTableName("latin1table", __FILE__, db) << qTableName("qtest_sqlguid", __FILE__, db) @@ -1042,27 +1041,37 @@ void tst_QSqlDatabase::bigIntField() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db); - const QString qtest_bigint(qTableName("qtest_bigint", __FILE__, db)); + QString queryString; + switch (dbType) { + case QSqlDriver::MySqlServer: + queryString = "create table %1 (id int, t_s64bit bigint, t_u64bit bigint unsigned)"; + break; + case QSqlDriver::DB2: + case QSqlDriver::Interbase: + case QSqlDriver::MimerSQL: + case QSqlDriver::MSSqlServer: + case QSqlDriver::PostgreSQL: + queryString = "create table %1 (id int, t_s64bit bigint, t_u64bit bigint)"; + break; + case QSqlDriver::Oracle: + case QSqlDriver::SQLite: + queryString = "create table %1 (id int, t_s64bit int, t_u64bit int)"; + break; + case QSqlDriver::Sybase: + case QSqlDriver::UnknownDbms: + break; + } + if (queryString.isEmpty()) + QSKIP("no 64 bit integer support"); + + TableScope ts(db, "qtest_bigint", __FILE__); QSqlQuery q(db); q.setForwardOnly(true); - if (dbType == QSqlDriver::Oracle) q.setNumericalPrecisionPolicy(QSql::LowPrecisionInt64); - - if (dbType == QSqlDriver::MySqlServer) { - QVERIFY_SQL(q, exec("create table " + qtest_bigint + " (id int, t_s64bit bigint, t_u64bit bigint unsigned)")); - } else if (dbType == QSqlDriver::PostgreSQL || dbType == QSqlDriver::DB2 - || dbType == QSqlDriver::MSSqlServer || dbType == QSqlDriver::MimerSQL) { - QVERIFY_SQL(q, exec("create table " + qtest_bigint + "(id int, t_s64bit bigint, t_u64bit bigint)")); - } else if (dbType == QSqlDriver::Oracle) { - QVERIFY_SQL(q, exec("create table " + qtest_bigint + " (id int, t_s64bit int, t_u64bit int)")); - } else if (dbType == QSqlDriver::SQLite) { - QVERIFY_SQL(q, exec("create table " + qtest_bigint + " (id int, t_s64bit int, t_u64bit int)")); - } else { - QSKIP("no 64 bit integer support"); - } - QVERIFY(q.prepare("insert into " + qtest_bigint + " values (?, ?, ?)")); + QVERIFY_SQL(q, exec(queryString.arg(ts.tableName()))); + QVERIFY(q.prepare("insert into " + ts.tableName() + " values (?, ?, ?)")); qlonglong ll = Q_INT64_C(9223372036854775807); qulonglong ull = Q_UINT64_C(18446744073709551615); @@ -1086,7 +1095,7 @@ void tst_QSqlDatabase::bigIntField() q.bindValue(2, (qlonglong) ull); QVERIFY_SQL(q, exec()); } - QVERIFY(q.exec("select * from " + qtest_bigint + " order by id")); + QVERIFY(q.exec("select * from " + ts.tableName() + " order by id")); QVERIFY(q.next()); QCOMPARE(q.value(1).toDouble(), (double)ll); QCOMPARE(q.value(1).toLongLong(), ll); @@ -2027,8 +2036,6 @@ 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)); diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 5bf579bbb8..048b9b0984 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -2532,7 +2532,7 @@ void tst_QSqlQuery::batchExec() QCOMPARE(q.value(0).toInt(), intCol.at(i)); QCOMPARE(q.value(1).toString(), charCol.at(i)); QCOMPARE(q.value(2).toDate(), dateCol.at(i)); - QCOMPARE(q.value(3).toDouble(), numCol.at(i)); + QVERIFY(qFuzzyCompare(q.value(3).toDouble(), numCol.at(i).toDouble())); if (tst_Databases::getDatabaseType(db) == QSqlDriver::MySqlServer && timeStampCol.at(i).isNull()) { QEXPECT_FAIL("", "This appears to be a bug in MySQL as it converts null datetimes to " @@ -2564,7 +2564,7 @@ void tst_QSqlQuery::batchExec() QCOMPARE(q.value(0).toInt(), intCol.at(i)); QCOMPARE(q.value(1).toString(), charCol.at(i)); QCOMPARE(q.value(2).toDate(), dateCol.at(i)); - QCOMPARE(q.value(3).toDouble(), numCol.at(i)); + QVERIFY(qFuzzyCompare(q.value(3).toDouble(), numCol.at(i).toDouble())); if (tst_Databases::getDatabaseType(db) == QSqlDriver::MySqlServer && timeStampCol.at(i).isNull()) { QEXPECT_FAIL("", "This appears to be a bug in MySQL as it converts null datetimes to " diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp index 56bc32d2b0..42464a24f0 100644 --- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp +++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp @@ -1660,11 +1660,11 @@ void tst_QSqlTableModel::emptyTable() QCOMPARE(model.columnCount(), 1); // QTBUG-29108: check correct horizontal header for empty query with pending insert - QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), QString("id")); + QCOMPARE(model.headerData(0, Qt::Horizontal).toString().toLower(), QString("id")); model.setEditStrategy(QSqlTableModel::OnManualSubmit); model.insertRow(0); QCOMPARE(model.rowCount(), 1); - QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), QString("id")); + QCOMPARE(model.headerData(0, Qt::Horizontal).toString().toLower(), QString("id")); model.revertAll(); } |