diff options
author | Andy Shaw <andy.shaw@qt.io> | 2020-08-02 01:40:37 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2020-09-08 08:02:14 +0200 |
commit | 13fe0ab5de63871cdacd41a68608b97b29edb89d (patch) | |
tree | 91cd83f62fdae7bc44962e37c933a5e39ae7d536 /tests/auto/sql/kernel/qsqlquery | |
parent | 5fbb17c39785ed2c80219c9c0ea97879e371d490 (diff) |
Interbase: Correctly read/write arrays to the database
The fix ensures that it can find the column for the array correctly
when reading/writing and also handles the integer typed arrays correctly
too.
Pick-to: 5.15
Fixes: QTBUG-83409
Change-Id: I92d982bdf0927e6ebc6dce84fec9ad6c44c26c25
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Diffstat (limited to 'tests/auto/sql/kernel/qsqlquery')
-rw-r--r-- | tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 8b057ec039..9e79a25f68 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -259,6 +259,9 @@ private slots: void dateTime_data(); void dateTime(); + void ibaseArray_data() { generic_data("QIBASE"); } + void ibaseArray(); + private: // returns all database connections void generic_data(const QString &engine=QString()); @@ -4764,5 +4767,31 @@ void tst_QSqlQuery::mysql_timeType() } } +void tst_QSqlQuery::ibaseArray() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + + const auto arrayTable = qTableName("ibasearray", __FILE__, db); + tst_Databases::safeDropTable(db, arrayTable); + QSqlQuery qry(db); + QVERIFY_SQL(qry, exec("create table " + arrayTable + " (intData int[0:4], longData bigint[5], " + "charData varchar(255)[5])")); + QVERIFY_SQL(qry, prepare("insert into " + arrayTable + " (intData, longData, charData) " + "values(?, ?, ?)")); + const auto intArray = QVariant{QVariantList{1, 2, 3, 4711, 815}}; + const auto charArray = QVariant{QVariantList{"AAA", "BBB", "CCC", "DDD", "EEE"}}; + qry.bindValue(0, intArray); + qry.bindValue(1, intArray); + qry.bindValue(2, charArray); + QVERIFY_SQL(qry, exec()); + QVERIFY_SQL(qry, exec("select * from " + arrayTable)); + QVERIFY(qry.next()); + QCOMPARE(qry.value(0).toList(), intArray.toList()); + QCOMPARE(qry.value(1).toList(), intArray.toList()); + QCOMPARE(qry.value(2).toList(), charArray.toList()); +} + QTEST_MAIN( tst_QSqlQuery ) #include "tst_qsqlquery.moc" |