diff options
Diffstat (limited to 'tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp')
-rw-r--r-- | tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 64 |
1 files changed, 55 insertions, 9 deletions
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 559afc4ef4..4a0eab0f83 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -211,6 +211,8 @@ private slots: void QTBUG_5765(); void QTBUG_14132_data() { generic_data("QOCI"); } void QTBUG_14132(); + void QTBUG_18435_data() { generic_data("QODBC"); } + void QTBUG_18435(); void QTBUG_21884_data() { generic_data("QSQLITE"); } void QTBUG_21884(); void QTBUG_16967_data() { generic_data("QSQLITE"); } @@ -2801,9 +2803,9 @@ void tst_QSqlQuery::task_250026() data258.fill( 'A', 258 ); data1026.fill( 'A', 1026 ); QVERIFY_SQL( q, prepare( "insert into " + tableName + "(longfield) VALUES (:longfield)" ) ); - q.bindValue( "longfield", data258 ); + q.bindValue( ":longfield", data258 ); QVERIFY_SQL( q, exec() ); - q.bindValue( "longfield", data1026 ); + q.bindValue( ":longfield", data1026 ); QVERIFY_SQL( q, exec() ); QVERIFY_SQL( q, exec( "select * from " + tableName ) ); QVERIFY_SQL( q, next() ); @@ -2999,7 +3001,7 @@ void tst_QSqlQuery::QTBUG_551() q.bindValue(":outp", outLst, QSql::Out); QVERIFY_SQL(q, execBatch(QSqlQuery::ValuesAsColumns) ); - res_outLst = qVariantValue<QVariantList>(q.boundValues()[":outp"]); + res_outLst = qvariant_cast<QVariantList>(q.boundValues()[":outp"]); QCOMPARE(res_outLst[0].toString(), QLatin1String("1. Value is 0")); QCOMPARE(res_outLst[1].toString(), QLatin1String("2. Value is 1")); QCOMPARE(res_outLst[2].toString(), QLatin1String("3. Value is 2")); @@ -3024,6 +3026,36 @@ void tst_QSqlQuery::QTBUG_14132() QCOMPARE(q.boundValue(0).toString(), QLatin1String("OUTSTRING")); } +void tst_QSqlQuery::QTBUG_18435() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + + if (!db.driverName().startsWith("QODBC") || !tst_Databases::isSqlServer(db)) + return; + + QSqlQuery q(db); + QString procName(qTableName("qtbug_18435_proc", __FILE__)); + + q.exec("DROP PROCEDURE " + procName); + const QString stmt = + "CREATE PROCEDURE " + procName + " @key nvarchar(50) OUTPUT AS\n" + "BEGIN\n" + " SET NOCOUNT ON\n" + " SET @key = 'TEST'\n" + "END\n"; + + QVERIFY_SQL(q, exec(stmt)); + QVERIFY_SQL(q, prepare("{CALL "+ procName +"(?)}")); + const QString testStr = "0123"; + q.bindValue(0, testStr, QSql::Out); + QVERIFY_SQL(q, exec()); + QCOMPARE(q.boundValue(0).toString(), QLatin1String("TEST")); + + QVERIFY_SQL(q, exec("DROP PROCEDURE " + procName)); +} + void tst_QSqlQuery::QTBUG_5251() { QFETCH( QString, dbName ); @@ -3494,7 +3526,10 @@ void tst_QSqlQuery::aggregateFunctionTypes() // First test without any entries QVERIFY_SQL(q, exec("SELECT SUM(id) FROM " + tableName)); QVERIFY(q.next()); - QCOMPARE(q.record().field(0).type(), QVariant::Invalid); + if (db.driverName().startsWith("QSQLITE")) + QCOMPARE(q.record().field(0).type(), QVariant::Invalid); + else + QCOMPARE(q.record().field(0).type(), QVariant::Int); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (1)")); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (2)")); @@ -3506,8 +3541,13 @@ void tst_QSqlQuery::aggregateFunctionTypes() QVERIFY_SQL(q, exec("SELECT AVG(id) FROM " + tableName)); QVERIFY(q.next()); - QCOMPARE(q.value(0).toDouble(), 1.5); - QCOMPARE(q.record().field(0).type(), QVariant::Double); + if (db.driverName().startsWith("QSQLITE")) { + QCOMPARE(q.value(0).toDouble(), 1.5); + QCOMPARE(q.record().field(0).type(), QVariant::Double); + } else { + QCOMPARE(q.value(0).toInt(), 1); + QCOMPARE(q.record().field(0).type(), QVariant::Int); + } QVERIFY_SQL(q, exec("SELECT COUNT(id) FROM " + tableName)); QVERIFY(q.next()); @@ -3529,12 +3569,15 @@ void tst_QSqlQuery::aggregateFunctionTypes() tst_Databases::safeDropTable( db, tableName ); QSqlQuery q(db); - QVERIFY_SQL(q, exec("CREATE TABLE " + tableName + " (id DOUBLE)")); + QVERIFY_SQL(q, exec("CREATE TABLE " + tableName + " (id REAL)")); // First test without any entries QVERIFY_SQL(q, exec("SELECT SUM(id) FROM " + tableName)); QVERIFY(q.next()); - QCOMPARE(q.record().field(0).type(), QVariant::Invalid); + if (db.driverName().startsWith("QSQLITE")) + QCOMPARE(q.record().field(0).type(), QVariant::Invalid); + else + QCOMPARE(q.record().field(0).type(), QVariant::Double); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (1.5)")); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (2.5)")); @@ -3583,7 +3626,10 @@ void tst_QSqlQuery::aggregateFunctionTypes() QVERIFY_SQL(q, exec("SELECT MAX(txt) FROM " + tableName)); QVERIFY(q.next()); - QCOMPARE(q.record().field(0).type(), QVariant::Invalid); + if (db.driverName().startsWith("QSQLITE")) + QCOMPARE(q.record().field(0).type(), QVariant::Invalid); + else + QCOMPARE(q.record().field(0).type(), QVariant::String); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, txt) VALUES (1, 'lower')")); QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, txt) VALUES (2, 'upper')")); |