From cf93005bb11272ab812c3ddbf17308ecf7322ad4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 21 Jan 2025 17:03:35 -0800 Subject: [PATCH] QSqlDatabase: provide QString defaultConnectionName() This avoids doing a conversion from 8-bit to UTF-16 and thus allocating memory on the call to these functions. Change-Id: Ibed5fc9ef19a21ea475efffdb978f45c1b9b3cc0 Reviewed-by: Christian Ehrlicher --- src/sql/kernel/qsqldatabase.h | 19 ++++++++++++------- src/sql/kernel/qsqlquery.cpp | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/sql/kernel/qsqldatabase.h b/src/sql/kernel/qsqldatabase.h index c2595ce658d..fa8ee74ff05 100644 --- a/src/sql/kernel/qsqldatabase.h +++ b/src/sql/kernel/qsqldatabase.h @@ -38,6 +38,11 @@ struct QSqlDatabaseDefaultConnectionName { // separate class because of the static inline constexpr variable static constexpr const char defaultConnection[] = "qt_sql_default_connection"; + static QString defaultConnectionName() noexcept + { + using namespace Qt::StringLiterals; + return u"qt_sql_default_connection"_s; + } }; class Q_SQL_EXPORT QSqlDatabase : public QSqlDatabaseDefaultConnectionName @@ -98,15 +103,15 @@ public: #endif static QSqlDatabase addDatabase(const QString& type, - const QString& connectionName = QLatin1StringView(defaultConnection)); + const QString &connectionName = defaultConnectionName()); static QSqlDatabase addDatabase(QSqlDriver* driver, - const QString& connectionName = QLatin1StringView(defaultConnection)); - static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString& connectionName); - static QSqlDatabase cloneDatabase(const QString &other, const QString& connectionName); - static QSqlDatabase database(const QString& connectionName = QLatin1StringView(defaultConnection), + const QString &connectionName = defaultConnectionName()); + static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName); + static QSqlDatabase cloneDatabase(const QString &other, const QString &connectionName); + static QSqlDatabase database(const QString &connectionName = defaultConnectionName(), bool open = true); - static void removeDatabase(const QString& connectionName); - static bool contains(const QString& connectionName = QLatin1StringView(defaultConnection)); + static void removeDatabase(const QString &connectionName); + static bool contains(const QString &connectionName = defaultConnectionName()); static QStringList drivers(); static QStringList connectionNames(); static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator); diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 57268e33cf0..2942cae3871 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -276,7 +276,7 @@ static void qInit(QSqlQuery *q, const QString& query, const QSqlDatabase &db) QSqlDatabase database = db; if (!database.isValid()) { database = - QSqlDatabase::database(QLatin1StringView(QSqlDatabase::defaultConnection), false); + QSqlDatabase::database(QSqlDatabase::defaultConnectionName(), false); } if (database.isValid()) *q = QSqlQuery(database.driver()->createResult());