summaryrefslogtreecommitdiffstats
path: root/src/sql/kernel
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-02-18 20:45:53 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-02-18 20:50:35 +0100
commit4fe2fbcf827ae6bec976b0b8dcaa5d14bd05dc33 (patch)
treed1ba753b45b09b417a9447ebdfe2fa6fc47dba69 /src/sql/kernel
parentc1da6347e8d3ba73de20ab8fb3e50ec3359b75ac (diff)
parent4889269ff0fb37130b332863e82dd7c19564116c (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
This also reverts commit 018e670a26ff5a61b949100ae080f5e654e7bee8. The change was introduced in 5.6. After the refactoring, 14960f52, in 5.7 branch and a merge, it is not needed any more. Conflicts: .qmake.conf src/corelib/io/qstandardpaths_mac.mm src/corelib/tools/qsharedpointer_impl.h tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp Change-Id: If4fdff0ebf2b9b5df9f9db93ea0022d5ee3da2a4
Diffstat (limited to 'src/sql/kernel')
-rw-r--r--src/sql/kernel/qsqldriver.cpp38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index ea44585f33..d53331fb10 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -488,31 +488,23 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(tableName);
break;
case WhereStatement:
- if (preparedStatement) {
- for (int i = 0; i < rec.count(); ++i) {
- s.append(prepareIdentifier(rec.fieldName(i), FieldName,this));
- if (rec.isNull(i))
- s.append(QLatin1String(" IS NULL"));
- else
- s.append(QLatin1String(" = ?"));
- s.append(QLatin1String(" AND "));
- }
- } else {
- for (i = 0; i < rec.count(); ++i) {
- s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this));
- QString val = formatValue(rec.field(i));
- if (val == QLatin1String("NULL"))
- 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
+ {
+ const QString tableNamePrefix = tableName.isEmpty()
+ ? QString()
+ : prepareIdentifier(tableName, QSqlDriver::TableName, this) + QLatin1Char('.');
+ for (int i = 0; i < rec.count(); ++i) {
+ s.append(QLatin1String(i? " AND " : "WHERE "));
+ s.append(tableNamePrefix);
+ s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this));
+ if (rec.isNull(i))
+ s.append(QLatin1String(" IS NULL"));
+ else if (preparedStatement)
+ s.append(QLatin1String(" = ?"));
+ else
+ s.append(QLatin1String(" = ")).append(formatValue(rec.field(i)));
}
break;
+ }
case UpdateStatement:
s.append(QLatin1String("UPDATE ")).append(tableName).append(
QLatin1String(" SET "));