summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2020-08-08 23:14:13 +0200
committerAndy Shaw <andy.shaw@qt.io>2020-09-13 16:39:06 +0200
commit65afcef2173cabe297778d19dda3198595820cfa (patch)
treec9d1a59b8c3b6f0ba2524ac4c1bea44425a3e126 /tests
parent46c1e609893b09a61d70dda3589e6b8d25261468 (diff)
Interbase: Handle EXECUTE BLOCK statements correctly
Since an EXECUTE BLOCK statement can have a mix of ? and :var syntax then a special case for this needs to be added so that it does not try to convert the :var parts into positional placeholders as they need to kept as-is when preparing such a statement. Pick-to: 5.15 Fixes: QTBUG-83152 Change-Id: Iff891207ad6dea1681a1b3a335acbbbb668b465d Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index 30c2f9ac62..322c1b3b84 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -184,6 +184,8 @@ private slots:
void sqliteVirtualTable();
void mysql_timeType_data() { generic_data("QMYSQL"); }
void mysql_timeType();
+ void ibase_executeBlock_data() { generic_data("QIBASE"); }
+ void ibase_executeBlock();
void task_217003_data() { generic_data(); }
void task_217003();
@@ -4797,5 +4799,25 @@ void tst_QSqlQuery::ibaseArray()
QCOMPARE(qry.value(3).toList(), boolArray.toList());
}
+void tst_QSqlQuery::ibase_executeBlock()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ QSqlQuery qry(db);
+ QVERIFY_SQL(qry, prepare("execute block (x double precision = ?, y double precision = ?) "
+ "returns (total double precision) "
+ "as "
+ "begin "
+ "total = :x + :y; "
+ "suspend; "
+ "end"));
+ qry.bindValue(0, 2);
+ qry.bindValue(1, 2);
+ QVERIFY_SQL(qry, exec());
+ QVERIFY(qry.next());
+ QCOMPARE(qry.value(0).toInt(), 4);
+}
+
QTEST_MAIN( tst_QSqlQuery )
#include "tst_qsqlquery.moc"