summaryrefslogtreecommitdiffstats
path: root/src/sql
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2023-03-12 19:19:30 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2023-04-06 05:41:16 +0100
commitbe8b3efae6b723266a3f4890c8aa3e0e57ab1fc4 (patch)
tree9d58e4efa21c0ff55db2a809b4e3862479ed4a07 /src/sql
parent39fab09aade3bc64cd2241764e59f9248b9588ac (diff)
SQL/QSqlRelationalTableModel escape the auto-generated alias
The alias created by QSqlRelationTableModel to avoid duplicated field names was not escaped which lead to an inconsistency in the returned alias name from the database (e.g. postgres lowers all unescaped column names). Also adjust the test for QSqlRelationTableModel to use escaped table names for it's tests and fix it for QIBASE. Change-Id: I01426320c0c1a70cb9bf8e6dfa2f8b07dbb1c06b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/sql')
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp
index 88a08516a3..acd20b98da 100644
--- a/src/sql/models/qsqlrelationaltablemodel.cpp
+++ b/src/sql/models/qsqlrelationaltablemodel.cpp
@@ -559,6 +559,7 @@ QString QSqlRelationalTableModel::selectStatement() const
QString alias = QString::fromLatin1("%1_%2_%3")
.arg(relTableName, displayColumn, QString::number(fieldNames.value(fieldList[i])));
alias.truncate(d->db.driver()->maximumIdentifierLength(QSqlDriver::FieldName));
+ alias = d->db.driver()->escapeIdentifier(alias, QSqlDriver::FieldName);
displayTableField = SqlrTm::as(displayTableField, alias);
--fieldNames[fieldList[i]];
}