summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2019-07-21 17:38:20 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2019-07-21 18:13:21 +0200
commit2a48cc5973798c1e9243b479098c1c813b7b08c5 (patch)
tree65046ca5345488aa8d3fa5901cf288adae3f998f /dev-qt/qtsql
parentdev-qt/qtwidgets: Add KDE (krita) upstream recommended backports (diff)
downloadgentoo-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.patch43
-rw-r--r--dev-qt/qtsql/qtsql-5.12.4-r1.ebuild60
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
+}