summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2018-04-04 10:47:30 +0200
committerAndy Shaw <andy.shaw@qt.io>2018-04-06 12:44:37 +0000
commitec23d96c86b43046cd2456829aca763ea6ba9935 (patch)
treed2789fa9f922577ed590d76d405e44dff02638f0 /tests
parentfd87c8da82b4bf52d395a5f9a2687e4eb7a22221 (diff)
oci: Use OCIBindByPos2 to accommodate data longer than USHRT_MAX
OCIBindByPos2 is only needed when using execBatch(), binding data that is longer than USHRT_MAX works for exec() so this is left unchanged. Change-Id: Ifdcf91939d184f225d24c13052ea0b81611ecf91 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index 9093485c40..23c8460133 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -128,6 +128,8 @@ private slots:
void mysql_outValues();
void oraClob_data() { generic_data("QOCI"); }
void oraClob();
+ void oraClobBatch_data() { generic_data("QOCI"); }
+ void oraClobBatch();
void oraLong_data() { generic_data("QOCI"); }
void oraLong();
void oraOCINumber_data() { generic_data("QOCI"); }
@@ -810,6 +812,28 @@ void tst_QSqlQuery::oraClob()
QVERIFY( q.value( 1 ).toByteArray() == loong.toLatin1() );
}
+void tst_QSqlQuery::oraClobBatch()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ const QString clobBatch(qTableName("clobBatch", __FILE__, db));
+ tst_Databases::safeDropTables(db, { clobBatch });
+ QSqlQuery q(db);
+ QVERIFY_SQL(q, exec("create table " + clobBatch + "(cl clob)"));
+
+ const QString longString(USHRT_MAX + 1, QLatin1Char('A'));
+ QVERIFY_SQL(q, prepare("insert into " + clobBatch + " (cl) values(:cl)"));
+ const QVariantList vars = { longString };
+ q.addBindValue(vars);
+ QVERIFY_SQL(q, execBatch());
+
+ QVERIFY_SQL(q, exec("select cl from " + clobBatch));
+ QVERIFY(q.next());
+ QCOMPARE(q.value(0).toString().count(), longString.size());
+ QVERIFY(q.value(0).toString() == longString);
+}
+
void tst_QSqlQuery::storedProceduresIBase()
{
QFETCH( QString, dbName );