diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-03-12 19:19:30 +0100 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-04-06 05:41:16 +0100 |
commit | be8b3efae6b723266a3f4890c8aa3e0e57ab1fc4 (patch) | |
tree | 9d58e4efa21c0ff55db2a809b4e3862479ed4a07 /src/sql | |
parent | 39fab09aade3bc64cd2241764e59f9248b9588ac (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.cpp | 1 |
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]]; } |