public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtsql/, dev-qt/qtsql/files/
Date: Sun, 21 Jul 2019 16:13:44 +0000 (UTC)	[thread overview]
Message-ID: <1563725601.2a48cc5973798c1e9243b479098c1c813b7b08c5.asturm@gentoo> (raw)

commit:     2a48cc5973798c1e9243b479098c1c813b7b08c5
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 21 15:38:20 2019 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Jul 21 16:13:21 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2a48cc59

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 <AT> gentoo.org>

 ...results_when_qsqlquery_finished_is_called.patch | 43 ++++++++++++++++
 dev-qt/qtsql/qtsql-5.12.4-r1.ebuild                | 60 ++++++++++++++++++++++
 2 files changed, 103 insertions(+)

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 00000000000..6bd3d3d2b9b
--- /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 00000000000..d1e4e555dd9
--- /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
+}


             reply	other threads:[~2019-07-21 16:13 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-21 16:13 Andreas Sturmlechner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-03-26 11:56 [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtsql/, dev-qt/qtsql/files/ Andreas Sturmlechner
2019-10-26 10:52 Andreas Sturmlechner
2018-02-22 20:09 Andreas Sturmlechner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1563725601.2a48cc5973798c1e9243b479098c1c813b7b08c5.asturm@gentoo \
    --to=asturm@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox