summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-02-15 21:34:50 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-02-22 19:00:08 +0000
commita924b4d58f66da44cd9a5ed8896f80a5121bac4a (patch)
tree7cfef13b27f90d92d1c8458697db23b7594512c0 /tests
parent988c3e4fc0ddcf154e39cc3a0b5969a84f6eff5f (diff)
psql: do not try to get table name when PQftable returns InvalidOid
When the table for a selected column can't be determined (e.g. because there is no table for it), PQftable returns InvalidOid. This was not covered and a query to determine the table name was executed every time which slowed down calls to QSqlQuery::value(QString). Task-number: QTBUG-65226 Change-Id: Idd8fbaaef7b01ca4151439f46cad2cce6f1c93e9 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp b/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
index 465dabca0e..8d7e70f8c9 100644
--- a/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
+++ b/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
@@ -50,6 +50,10 @@ public slots:
private slots:
void benchmarkRecord_data() { generic_data(); }
void benchmarkRecord();
+ void benchFieldName_data() { generic_data(); }
+ void benchFieldName();
+ void benchFieldIndex_data() { generic_data(); }
+ void benchFieldIndex();
private:
void generic_data(const QString &engine = QString());
@@ -188,4 +192,33 @@ void tst_QSqlRecord::benchmarkRecord()
tst_Databases::safeDropTables(db, QStringList() << tableName);
}
+void tst_QSqlRecord::benchFieldName()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL) {
+ QSqlQuery qry(db);
+ QVERIFY_SQL(qry, exec("SELECT GENERATE_SERIES(1,5000) AS r"));
+ QBENCHMARK {
+ while (qry.next())
+ qry.value("r");
+ }
+ }
+}
+
+void tst_QSqlRecord::benchFieldIndex()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL) {
+ QSqlQuery qry(db);
+ QVERIFY_SQL(qry, exec("SELECT GENERATE_SERIES(1,5000) AS r"));
+ qry = db.exec("SELECT GENERATE_SERIES(1,5000) AS r");
+ QBENCHMARK {
+ while (qry.next())
+ qry.value(0);
+ }
+ }
+}
+
#include "tst_qsqlrecord.moc"