QSqlDriver: use table prefix in WHERE clauses
If the WHERE clause is used in a query involving multiple tables, such as generated by QSqlRelationalTableModel, the table prefix may be necessary to disambiguate column references. It is harmless if not needed. Task-number: QTBUG-43320 Change-Id: I39e1ab7359bf748afa8bcd8578220e3abb3ee24a Reviewed-by: Mark Brand <mabrand@mabrand.nl>
This commit is contained in:
parent
ed4ef55ec5
commit
34472e946a
@ -476,31 +476,23 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
|
|||||||
s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(tableName);
|
s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(tableName);
|
||||||
break;
|
break;
|
||||||
case WhereStatement:
|
case WhereStatement:
|
||||||
if (preparedStatement) {
|
{
|
||||||
for (int i = 0; i < rec.count(); ++i) {
|
const QString tableNamePrefix = tableName.isEmpty()
|
||||||
s.append(prepareIdentifier(rec.fieldName(i), FieldName,this));
|
? QString()
|
||||||
if (rec.isNull(i))
|
: prepareIdentifier(tableName, QSqlDriver::TableName, this) + QLatin1Char('.');
|
||||||
s.append(QLatin1String(" IS NULL"));
|
for (int i = 0; i < rec.count(); ++i) {
|
||||||
else
|
s.append(QLatin1String(i? " AND " : "WHERE "));
|
||||||
s.append(QLatin1String(" = ?"));
|
s.append(tableNamePrefix);
|
||||||
s.append(QLatin1String(" AND "));
|
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this));
|
||||||
}
|
if (rec.isNull(i))
|
||||||
} else {
|
s.append(QLatin1String(" IS NULL"));
|
||||||
for (i = 0; i < rec.count(); ++i) {
|
else if (preparedStatement)
|
||||||
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this));
|
s.append(QLatin1String(" = ?"));
|
||||||
QString val = formatValue(rec.field(i));
|
else
|
||||||
if (val == QLatin1String("NULL"))
|
s.append(QLatin1String(" = ")).append(formatValue(rec.field(i)));
|
||||||
s.append(QLatin1String(" IS NULL"));
|
|
||||||
else
|
|
||||||
s.append(QLatin1String(" = ")).append(val);
|
|
||||||
s.append(QLatin1String(" AND "));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!s.isEmpty()) {
|
|
||||||
s.prepend(QLatin1String("WHERE "));
|
|
||||||
s.chop(5); // remove tailing AND
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case UpdateStatement:
|
case UpdateStatement:
|
||||||
s.append(QLatin1String("UPDATE ")).append(tableName).append(
|
s.append(QLatin1String("UPDATE ")).append(tableName).append(
|
||||||
QLatin1String(" SET "));
|
QLatin1String(" SET "));
|
||||||
|
@ -109,7 +109,7 @@ void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
|
|||||||
QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(5, 'nat', NULL, NULL)"));
|
QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(5, 'nat', NULL, NULL)"));
|
||||||
QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(6, 'ale', NULL, 2)"));
|
QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(6, 'ale', NULL, 2)"));
|
||||||
|
|
||||||
QVERIFY_SQL( q, exec("create table " + reltest2 + " (tid int not null primary key, title varchar(20))"));
|
QVERIFY_SQL( q, exec("create table " + reltest2 + " (id int not null primary key, title varchar(20))"));
|
||||||
QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(1, 'herr')"));
|
QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(1, 'herr')"));
|
||||||
QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(2, 'mister')"));
|
QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(2, 'mister')"));
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ void tst_QSqlRelationalTableModel::data()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QCOMPARE(model.columnCount(), 4);
|
QCOMPARE(model.columnCount(), 4);
|
||||||
@ -246,7 +246,7 @@ void tst_QSqlRelationalTableModel::setData()
|
|||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
|
QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
|
||||||
@ -276,7 +276,7 @@ void tst_QSqlRelationalTableModel::setData()
|
|||||||
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
|
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
|
||||||
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
||||||
|
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
|
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
|
||||||
QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
|
QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
|
||||||
@ -289,7 +289,7 @@ void tst_QSqlRelationalTableModel::setData()
|
|||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setEditStrategy(QSqlTableModel::OnFieldChange);
|
model.setEditStrategy(QSqlTableModel::OnFieldChange);
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QVERIFY(model.setData(model.index(1,1), QString("trond2")));
|
QVERIFY(model.setData(model.index(1,1), QString("trond2")));
|
||||||
@ -307,7 +307,7 @@ void tst_QSqlRelationalTableModel::setData()
|
|||||||
QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
|
QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
|
||||||
QCOMPARE(model.data(model.index(2, 2)).toInt(), 2);
|
QCOMPARE(model.data(model.index(2, 2)).toInt(), 2);
|
||||||
|
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
QCOMPARE(model.data(model.index(2, 2)).toString(), QString("mister"));
|
QCOMPARE(model.data(model.index(2, 2)).toString(), QString("mister"));
|
||||||
}
|
}
|
||||||
@ -317,12 +317,12 @@ void tst_QSqlRelationalTableModel::setData()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
|
|
||||||
//sybase doesn't allow tables with the same alias used twice as col names
|
//sybase doesn't allow tables with the same alias used twice as col names
|
||||||
//so don't set up an identical relation when using the tds driver
|
//so don't set up an identical relation when using the tds driver
|
||||||
if (dbType != QSqlDriver::Sybase)
|
if (dbType != QSqlDriver::Sybase)
|
||||||
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(3, QSqlRelation(reltest2, "id", "title"));
|
||||||
|
|
||||||
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
|
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
@ -351,9 +351,9 @@ void tst_QSqlRelationalTableModel::setData()
|
|||||||
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
||||||
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
|
QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
|
||||||
|
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
if (dbType != QSqlDriver::Sybase)
|
if (dbType != QSqlDriver::Sybase)
|
||||||
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(3, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
|
QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ void tst_QSqlRelationalTableModel::multipleRelation()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
|
model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
@ -425,7 +425,7 @@ void tst_QSqlRelationalTableModel::multipleRelation()
|
|||||||
|
|
||||||
// Redo same test in the LeftJoin mode
|
// Redo same test in the LeftJoin mode
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
|
model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
|
model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
|
||||||
@ -448,7 +448,7 @@ void tst_QSqlRelationalTableModel::insertRecord()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
@ -498,7 +498,7 @@ void tst_QSqlRelationalTableModel::setRecord()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
@ -559,11 +559,11 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
|
|
||||||
if (dbType != QSqlDriver::Sybase)
|
if (dbType != QSqlDriver::Sybase)
|
||||||
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(3, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
|
QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
|
||||||
@ -667,7 +667,7 @@ void tst_QSqlRelationalTableModel::removeColumn()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QVERIFY_SQL(model, removeColumn(3));
|
QVERIFY_SQL(model, removeColumn(3));
|
||||||
@ -693,7 +693,7 @@ void tst_QSqlRelationalTableModel::removeColumn()
|
|||||||
QSqlRelationalTableModel lmodel(0, db);
|
QSqlRelationalTableModel lmodel(0, db);
|
||||||
|
|
||||||
lmodel.setTable(reltest1);
|
lmodel.setTable(reltest1);
|
||||||
lmodel.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
lmodel.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
lmodel.setJoinMode(QSqlRelationalTableModel::LeftJoin);
|
lmodel.setJoinMode(QSqlRelationalTableModel::LeftJoin);
|
||||||
QVERIFY_SQL(lmodel, select());
|
QVERIFY_SQL(lmodel, select());
|
||||||
|
|
||||||
@ -724,7 +724,7 @@ void tst_QSqlRelationalTableModel::filter()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setFilter("title = 'herr'");
|
model.setFilter("title = 'herr'");
|
||||||
|
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
@ -751,9 +751,9 @@ void tst_QSqlRelationalTableModel::sort()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
if (dbType != QSqlDriver::Sybase)
|
if (dbType != QSqlDriver::Sybase)
|
||||||
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(3, QSqlRelation(reltest2, "id", "title"));
|
||||||
|
|
||||||
model.setSort(2, Qt::DescendingOrder);
|
model.setSort(2, Qt::DescendingOrder);
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
@ -879,7 +879,7 @@ void tst_QSqlRelationalTableModel::revert()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
|
model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
|
||||||
|
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
@ -917,10 +917,10 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
|
|||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
|
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
|
|
||||||
if (dbType != QSqlDriver::Sybase)
|
if (dbType != QSqlDriver::Sybase)
|
||||||
model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(3, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setSort(1, Qt::AscendingOrder);
|
model.setSort(1, Qt::AscendingOrder);
|
||||||
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
|
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
|
||||||
|
|
||||||
@ -1018,7 +1018,7 @@ void tst_QSqlRelationalTableModel::invalidData()
|
|||||||
|
|
||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
//try set a non-existent relational key
|
//try set a non-existent relational key
|
||||||
@ -1048,7 +1048,7 @@ void tst_QSqlRelationalTableModel::relationModel()
|
|||||||
|
|
||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QVERIFY(!model.relationModel(0));
|
QVERIFY(!model.relationModel(0));
|
||||||
@ -1142,7 +1142,7 @@ void tst_QSqlRelationalTableModel::casing()
|
|||||||
|
|
||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
model.setTable(qTableName("CASETEST1", db).toUpper());
|
model.setTable(qTableName("CASETEST1", db).toUpper());
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
|
QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
|
||||||
@ -1165,11 +1165,11 @@ void tst_QSqlRelationalTableModel::escapedRelations()
|
|||||||
//try with relation table name quoted
|
//try with relation table name quoted
|
||||||
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
||||||
model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2.toUpper(),QSqlDriver::TableName),
|
model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2.toUpper(),QSqlDriver::TableName),
|
||||||
"tid",
|
"id",
|
||||||
"title"));
|
"title"));
|
||||||
} else {
|
} else {
|
||||||
model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2,QSqlDriver::TableName),
|
model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2,QSqlDriver::TableName),
|
||||||
"tid",
|
"id",
|
||||||
"title"));
|
"title"));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1190,11 +1190,11 @@ void tst_QSqlRelationalTableModel::escapedRelations()
|
|||||||
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
|
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
|
||||||
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
||||||
model.setRelation(2, QSqlRelation(reltest2,
|
model.setRelation(2, QSqlRelation(reltest2,
|
||||||
db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName).toUpper(),
|
db.driver()->escapeIdentifier("id", QSqlDriver::FieldName).toUpper(),
|
||||||
"title"));
|
"title"));
|
||||||
} else {
|
} else {
|
||||||
model.setRelation(2, QSqlRelation(reltest2,
|
model.setRelation(2, QSqlRelation(reltest2,
|
||||||
db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName),
|
db.driver()->escapeIdentifier("id", QSqlDriver::FieldName),
|
||||||
"title"));
|
"title"));
|
||||||
}
|
}
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
@ -1215,11 +1215,11 @@ void tst_QSqlRelationalTableModel::escapedRelations()
|
|||||||
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
||||||
|
|
||||||
model.setRelation(2, QSqlRelation(reltest2,
|
model.setRelation(2, QSqlRelation(reltest2,
|
||||||
"tid",
|
"id",
|
||||||
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
|
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
|
||||||
} else {
|
} else {
|
||||||
model.setRelation(2, QSqlRelation(reltest2,
|
model.setRelation(2, QSqlRelation(reltest2,
|
||||||
"tid",
|
"id",
|
||||||
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
|
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1240,11 +1240,11 @@ void tst_QSqlRelationalTableModel::escapedRelations()
|
|||||||
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
|
model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
|
||||||
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2) {
|
||||||
model.setRelation(2, QSqlRelation(reltest2,
|
model.setRelation(2, QSqlRelation(reltest2,
|
||||||
"tid",
|
"id",
|
||||||
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
|
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
|
||||||
} else {
|
} else {
|
||||||
model.setRelation(2, QSqlRelation(reltest2,
|
model.setRelation(2, QSqlRelation(reltest2,
|
||||||
"tid",
|
"id",
|
||||||
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
|
db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
|
||||||
}
|
}
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
@ -1278,7 +1278,7 @@ void tst_QSqlRelationalTableModel::escapedTableName()
|
|||||||
model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
|
model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
|
||||||
}
|
}
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
|
QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
|
||||||
@ -1308,7 +1308,7 @@ void tst_QSqlRelationalTableModel::escapedTableName()
|
|||||||
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
|
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
|
||||||
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
||||||
|
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
|
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
|
||||||
QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
|
QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
|
||||||
@ -1325,7 +1325,7 @@ void tst_QSqlRelationalTableModel::escapedTableName()
|
|||||||
model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
|
model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
|
||||||
}
|
}
|
||||||
model.setSort(0, Qt::AscendingOrder);
|
model.setSort(0, Qt::AscendingOrder);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
|
model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
|
|
||||||
@ -1357,7 +1357,7 @@ void tst_QSqlRelationalTableModel::escapedTableName()
|
|||||||
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
|
QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
|
||||||
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
|
||||||
|
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
|
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
|
||||||
QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
|
QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
|
||||||
@ -1485,7 +1485,7 @@ void tst_QSqlRelationalTableModel::selectAfterUpdate()
|
|||||||
|
|
||||||
QSqlRelationalTableModel model(0, db);
|
QSqlRelationalTableModel model(0, db);
|
||||||
model.setTable(reltest1);
|
model.setTable(reltest1);
|
||||||
model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
|
model.setRelation(2, QSqlRelation(reltest2, "id", "title"));
|
||||||
QVERIFY_SQL(model, select());
|
QVERIFY_SQL(model, select());
|
||||||
QCOMPARE(model.relationModel(2)->rowCount(), 2);
|
QCOMPARE(model.relationModel(2)->rowCount(), 2);
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user