From 461ef575bcf778ba24b0be6b775098d4b80ae5e1 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 16 Jan 2018 09:54:01 +0100 Subject: Always escape the table names when creating the SQL statement Since some databases are case sensitive if part of the query is quoted, then we should ensure that all instances of the table name are escaped unless the test is delibrately testing the non-escaped case. As a result, this commit also removes some expected failures pertaining to PostgreSQL and also adds an entry to the list of tables being dropped when a test is finished. [ChangeLog][Sql][PostgreSQL] QSqlDatabase is now stricter about table names when used with record() and primaryIndex(). If the tablename was not quoted when it was created, then the table name passed to record() and primaryIndex() needs to be in lower case so that PostgreSQL is able to find it. Fixes: QTBUG-65788 Change-Id: Id1f54cb66b761c39edf858501b730ede7eec1fd3 Reviewed-by: Paul Wicking Reviewed-by: Edward Welbourne --- src/sql/kernel/qsqldatabase.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/sql/kernel/qsqldatabase.cpp') diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index 12ab9671b5..d63a9e59a8 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -1088,6 +1088,11 @@ QStringList QSqlDatabase::tables(QSql::TableType type) const Returns the primary index for table \a tablename. If no primary index exists, an empty QSqlIndex is returned. + \note Some drivers, such as the \l {QPSQL Case Sensitivity}{QPSQL} + driver, may may require you to pass \a tablename in lower case if + the table was not quoted when created. See the + \l{sql-driver.html}{Qt SQL driver} documentation for more information. + \sa tables(), record() */ @@ -1102,6 +1107,11 @@ QSqlIndex QSqlDatabase::primaryIndex(const QString& tablename) const the table (or view) called \a tablename. The order in which the fields appear in the record is undefined. If no such table (or view) exists, an empty record is returned. + + \note Some drivers, such as the \l {QPSQL Case Sensitivity}{QPSQL} + driver, may may require you to pass \a tablename in lower case if + the table was not quoted when created. See the + \l{sql-driver.html}{Qt SQL driver} documentation for more information. */ QSqlRecord QSqlDatabase::record(const QString& tablename) const -- cgit v1.2.3