diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2019-07-21 17:38:20 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2019-07-21 18:13:21 +0200 |
commit | 2a48cc5973798c1e9243b479098c1c813b7b08c5 (patch) | |
tree | 65046ca5345488aa8d3fa5901cf288adae3f998f /dev-qt/qtsql | |
parent | dev-qt/qtwidgets: Add KDE (krita) upstream recommended backports (diff) | |
download | gentoo-2a48cc5973798c1e9243b479098c1c813b7b08c5.tar.gz gentoo-2a48cc5973798c1e9243b479098c1c813b7b08c5.tar.bz2 gentoo-2a48cc5973798c1e9243b479098c1c813b7b08c5.zip |
dev-qt/qtsql: Backport mysql dev branch fix
See also:
https://cgit.kde.org/akonadi.git/commit/?id=089ee6959fcdbe7d94ce0227c3348f1ecc70053d
Debian-bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921584
Package-Manager: Portage-2.3.69, Repoman-2.3.16
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'dev-qt/qtsql')
-rw-r--r-- | dev-qt/qtsql/files/qtsql-5.12.4-mysql_free_results_when_qsqlquery_finished_is_called.patch | 43 | ||||
-rw-r--r-- | dev-qt/qtsql/qtsql-5.12.4-r1.ebuild | 60 |
2 files changed, 103 insertions, 0 deletions
diff --git a/dev-qt/qtsql/files/qtsql-5.12.4-mysql_free_results_when_qsqlquery_finished_is_called.patch b/dev-qt/qtsql/files/qtsql-5.12.4-mysql_free_results_when_qsqlquery_finished_is_called.patch new file mode 100644 index 000000000000..6bd3d3d2b9bd --- /dev/null +++ b/dev-qt/qtsql/files/qtsql-5.12.4-mysql_free_results_when_qsqlquery_finished_is_called.patch @@ -0,0 +1,43 @@ +From 97d8be10cd97cf997286ed0ca0a5d8b360fa942e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20Vr=C3=A1til?= <dvratil@kde.org> +Date: Sat, 1 Dec 2018 17:56:41 +0100 +Subject: [PATCH] MySQL: Free the results when QSqlQuery::finished() is called + +Calling mysql_stmt_free_result() frees the results of the last +executed query while keeping the prepared statement valid. This +allows one to keep around prepared QSqlQueries without the overhead +of keeping all the results in memory. + +Change-Id: I4589e90857cc4e9a6f9612799bfca967a67e2ab2 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +Reviewed-by: Andy Shaw <andy.shaw@qt.io> +--- + src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp ++++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp +@@ -197,6 +197,7 @@ protected: + QSqlRecord record() const override; + void virtual_hook(int id, void *data) override; + bool nextResult() override; ++ void detachFromResultSet() override; + + #if MYSQL_VERSION_ID >= 40108 + bool prepare(const QString &stmt) override; +@@ -804,6 +805,15 @@ int QMYSQLResult::numRowsAffected() + return d->rowsAffected; + } + ++void QMYSQLResult::detachFromResultSet() ++{ ++ Q_D(QMYSQLResult); ++ ++ if (d->preparedQuery) { ++ mysql_stmt_free_result(d->stmt); ++ } ++} ++ + QVariant QMYSQLResult::lastInsertId() const + { + Q_D(const QMYSQLResult); diff --git a/dev-qt/qtsql/qtsql-5.12.4-r1.ebuild b/dev-qt/qtsql/qtsql-5.12.4-r1.ebuild new file mode 100644 index 000000000000..d1e4e555dd9c --- /dev/null +++ b/dev-qt/qtsql/qtsql-5.12.4-r1.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +QT5_MODULE="qtbase" +inherit qt5-build + +DESCRIPTION="SQL abstraction library for the Qt5 framework" +SLOT=5/$(ver_cut 1-3) # bug 639140 + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd" +fi + +IUSE="freetds mysql oci8 odbc postgres +sqlite" + +REQUIRED_USE=" + || ( freetds mysql oci8 odbc postgres sqlite ) +" + +DEPEND=" + ~dev-qt/qtcore-${PV} + freetds? ( dev-db/freetds ) + mysql? ( dev-db/mysql-connector-c:= ) + oci8? ( dev-db/oracle-instantclient:=[sdk] ) + odbc? ( dev-db/unixODBC ) + postgres? ( dev-db/postgresql:* ) + sqlite? ( dev-db/sqlite:3 ) +" +RDEPEND="${DEPEND}" + +QT5_TARGET_SUBDIRS=( + src/sql + src/plugins/sqldrivers +) + +QT5_GENTOO_PRIVATE_CONFIG=( + :sql +) + +PATCHES+=( + # Backport from dev branch + "${FILESDIR}/${P}-mysql_free_results_when_qsqlquery_finished_is_called.patch" +) + +src_configure() { + local myconf=( + $(qt_use freetds sql-tds plugin) + $(qt_use mysql sql-mysql plugin) + $(qt_use oci8 sql-oci plugin) + $(qt_use odbc sql-odbc plugin) + $(qt_use postgres sql-psql plugin) + $(qt_use sqlite sql-sqlite plugin) + $(usex sqlite -system-sqlite '') + ) + + use oci8 && myconf+=("-I${ORACLE_HOME}/include" "-L${ORACLE_HOME}/$(get_libdir)") + + qt5-build_src_configure +} |