diff options
Diffstat (limited to 'tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp')
-rw-r--r-- | tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 026c9becec..308940b8d0 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -226,6 +226,9 @@ private slots: void sqlite_real_data() { generic_data("QSQLITE"); } void sqlite_real(); + void prepared_query_json_row_data() { generic_data(); } + void prepared_query_json_row(); + void aggregateFunctionTypes_data() { generic_data(); } void aggregateFunctionTypes(); @@ -401,7 +404,7 @@ void tst_QSqlQuery::createTestTables(QSqlDatabase db) if (dbType == QSqlDriver::PostgreSQL) { QVERIFY_SQL(q, exec(QLatin1String( "create table %1 (id serial NOT NULL, t_varchar varchar(20), " - "t_char char(20), primary key(id)) WITH OIDS").arg(qtest))); + "t_char char(20), primary key(id))").arg(qtest))); } else { QVERIFY_SQL(q, exec(QLatin1String( "create table %1 (id int %2 NOT NULL, t_varchar varchar(20), " @@ -2221,7 +2224,7 @@ void tst_QSqlQuery::prepare_bind_exec() q.bindValue(":id", i); QVERIFY_SQL(q, exec()); const QVariantList m = q.boundValues(); - QCOMPARE(m.count(), qsizetype(2)); + QCOMPARE(m.size(), qsizetype(2)); QCOMPARE(m.at(0).toInt(), i); QCOMPARE(m.at(1).toString(), values[i]); } @@ -3602,14 +3605,14 @@ void tst_QSqlQuery::task_250026() QVERIFY_SQL(q, exec()); QVERIFY_SQL(q, exec("select * from " + tableName)); QVERIFY_SQL(q, next()); - QCOMPARE(q.value(0).toString().length(), data258.length()); + QCOMPARE(q.value(0).toString().size(), data258.size()); QVERIFY_SQL(q, next()); - QCOMPARE(q.value(0).toString().length(), data1026.length()); + QCOMPARE(q.value(0).toString().size(), data1026.size()); } void tst_QSqlQuery::crashQueryOnCloseDatabase() { - for (const auto &dbName : qAsConst(dbs.dbNames)) { + for (const auto &dbName : std::as_const(dbs.dbNames)) { const auto tidier = qScopeGuard([]() { QSqlDatabase::removeDatabase("crashTest"); }); // Note: destruction of clonedDb needs to happen before we call removeDatabase. QSqlDatabase clonedDb = QSqlDatabase::cloneDatabase( @@ -4443,6 +4446,43 @@ void tst_QSqlQuery::sqlite_real() QCOMPARE(q.value(0).toDouble(), 5.6); } +void tst_QSqlQuery::prepared_query_json_row() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + if (tst_Databases::getDatabaseType(db) != QSqlDriver::MySqlServer && + tst_Databases::getDatabaseType(db) != QSqlDriver::PostgreSQL) { + QSKIP("PostgreSQL / MySQL specific test"); + } + + const QString tableName(qTableName("tableWithJsonRow", __FILE__, db)); + tst_Databases::safeDropTable(db, tableName); + + QSqlQuery q(db); + const QLatin1String vals[] = {QLatin1String("{\"certificateNumber\": \"CERT-001\"}"), + QLatin1String("{\"certificateNumber\": \"CERT-002\"}")}; + QVERIFY_SQL(q, exec(QLatin1String("CREATE TABLE %1 (id INTEGER, value JSON)").arg(tableName))); + for (const QLatin1String &json : vals) { + QVERIFY_SQL(q, exec(QLatin1String("INSERT INTO %1 (id, value) VALUES (1, '%2')") + .arg(tableName, json))); + } + + QVERIFY_SQL(q, prepare(QLatin1String("SELECT id, value FROM %1 WHERE id = ?").arg(tableName))); + q.addBindValue(1); + QVERIFY_SQL(q, exec()); + + size_t iCount = 0; + while (q.next()) { + QVERIFY(iCount < sizeof(vals)); + const int id = q.value(0).toInt(); + const QByteArray json = q.value(1).toByteArray(); + QCOMPARE(id, 1); + QCOMPARE(json, vals[iCount].data()); + ++iCount; + } +} + void tst_QSqlQuery::aggregateFunctionTypes() { QFETCH(QString, dbName); @@ -4825,7 +4865,7 @@ void tst_QSqlQuery::dateTime_data() #endif }; - for (const QString &dbName : qAsConst(dbs.dbNames)) { + for (const QString &dbName : std::as_const(dbs.dbNames)) { QSqlDatabase db = QSqlDatabase::database(dbName); if (!db.isValid()) continue; @@ -4868,13 +4908,13 @@ void tst_QSqlQuery::dateTime() QSqlQuery q(db); QVERIFY_SQL(q, exec("CREATE TABLE " + tableName + createTableString)); - for (const QDateTime &dt : qAsConst(initialDateTimes)) { + for (const QDateTime &dt : std::as_const(initialDateTimes)) { QVERIFY_SQL(q, prepare(QLatin1String("INSERT INTO %1 values(:dt)").arg(tableName))); q.bindValue(":dt", dt); QVERIFY_SQL(q, exec()); } QVERIFY_SQL(q, exec("SELECT * FROM " + tableName)); - for (const QDateTime &dt : qAsConst(expectedDateTimes)) { + for (const QDateTime &dt : std::as_const(expectedDateTimes)) { QVERIFY(q.next()); QCOMPARE(q.value(0).toDateTime(), dt); } |