summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp')
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp64
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')"));