summaryrefslogtreecommitdiff
path: root/dev-qt/qtsql/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-qt/qtsql/files
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-qt/qtsql/files')
-rw-r--r--dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch b/dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch
new file mode 100644
index 000000000000..8aede46c3b4d
--- /dev/null
+++ b/dev-qt/qtsql/files/qtsql-5.7.1-mariadb.patch
@@ -0,0 +1,56 @@
+From d25346417238b7dc0fb37359a9b56eff2908a5dc Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Daniel=20Vr=C3=A1til?= <daniel.vratil@kdab.com>
+Date: Mon, 18 Sep 2017 22:33:55 +0200
+Subject: [PATCH] Only call mysql_library_end() once when using MariaDB
+
+MariaDB allows only a single call to mysql_library_end(), all subsequent calls
+to mysql_library_init() or any other API call will fail. Since QMYSQLDriver
+calls mysql_library_end() function whenever the refcount drops to 0, this
+breaks applications that close and reopen database connections.
+
+This change registers call to mysql_library_init() via qAddPostRoutine()
+when compiled against MariaDB, so that we only call it once.
+
+Task-number: QTBUG-63108
+Change-Id: I22c1f0c5b081216f12596a32748dca25cae919e9
+Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+---
+ src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+index ee439fa..6e428fb 100644
+--- a/src/sql/drivers/mysql/qsql_mysql.cpp
++++ b/src/sql/drivers/mysql/qsql_mysql.cpp
+@@ -1158,16 +1158,22 @@ static void qLibraryInit()
+ }
+ # endif // MYSQL_VERSION_ID
+ #endif // Q_NO_MYSQL_EMBEDDED
++
++#ifdef MARIADB_BASE_VERSION
++ qAddPostRoutine(mysql_server_end);
++#endif
+ }
+
+ static void qLibraryEnd()
+ {
+-#ifndef Q_NO_MYSQL_EMBEDDED
+-# if MYSQL_VERSION_ID > 40000
+-# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
+- mysql_library_end();
+-# else
+- mysql_server_end();
++#if !defined(MARIADB_BASE_VERSION)
++# if !defined(Q_NO_MYSQL_EMBEDDED)
++# if MYSQL_VERSION_ID > 40000
++# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
++ mysql_library_end();
++# else
++ mysql_server_end();
++# endif
+ # endif
+ # endif
+ #endif
+--
+2.7.4
+