Hello community,
here is the log from the commit of package python-mysqlclient for openSUSE:Factory checked in at 2019-01-03 18:06:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mysqlclient (Old)
and /work/SRC/openSUSE:Factory/.python-mysqlclient.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-mysqlclient"
Thu Jan 3 18:06:11 2019 rev:2 rq:656808 version:1.3.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mysqlclient/python-mysqlclient.changes 2018-07-10 16:14:33.189618079 +0200
+++ /work/SRC/openSUSE:Factory/.python-mysqlclient.new.28833/python-mysqlclient.changes 2019-01-03 18:06:12.604162649 +0100
@@ -1,0 +2,13 @@
+Mon Dec 10 11:39:10 UTC 2018 - Alexei Podvalsky
+
+- Update to 1.3.14:
+ * Support static linking of MariaDB Connector/C (#265)
+ * Better converter for Decimal and Float (#267, #268, #273, #286)
+ * Add Connection._get_native_connection for XTA project (#269)
+ * Fix SEGV on MariaDB Connector/C when Connection.close() is called
+ for closed connection. (#270, #272, #276)
+ * Fix Connection.client_flag (#266)
+ * Fix SSCursor may raise same exception twice (#282)
+ * Fixed SSL support is not detected when built with MySQL < 5.1 (#291)
+
+-------------------------------------------------------------------
Old:
----
mysqlclient-1.3.13.tar.gz
New:
----
mysqlclient-1.3.14.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-mysqlclient.spec ++++++
--- /var/tmp/diff_new_pack.XnoY2y/_old 2019-01-03 18:06:13.044162258 +0100
+++ /var/tmp/diff_new_pack.XnoY2y/_new 2019-01-03 18:06:13.048162254 +0100
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define oldpython python
Name: python-mysqlclient
-Version: 1.3.13
+Version: 1.3.14
Release: 0
Summary: Python interface to MySQL
License: GPL-2.0-or-later
++++++ mysqlclient-1.3.13.tar.gz -> mysqlclient-1.3.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/HISTORY.rst new/mysqlclient-1.3.14/HISTORY.rst
--- old/mysqlclient-1.3.13/HISTORY.rst 2018-06-27 13:27:48.000000000 +0200
+++ new/mysqlclient-1.3.14/HISTORY.rst 2018-12-04 10:58:37.000000000 +0100
@@ -1,4 +1,28 @@
======================
+ What's new in 1.3.14
+======================
+
+Release: 2018-12-04
+
+* Support static linking of MariaDB Connector/C (#265)
+
+* Better converter for Decimal and Float (#267, #268, #273, #286)
+
+* Add ``Connection._get_native_connection`` for XTA project (#269)
+
+* Fix SEGV on MariaDB Connector/C when ``Connection.close()`` is called
+ for closed connection. (#270, #272, #276)
+
+* Fix ``Connection.client_flag`` (#266)
+
+* Fix SSCursor may raise same exception twice (#282)
+
+* ``waiter`` option is now deprecated. (#285)
+
+* Fixed SSL support is not detected when built with MySQL < 5.1 (#291)
+
+
+======================
What's new in 1.3.13
======================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/INSTALL.rst new/mysqlclient-1.3.14/INSTALL.rst
--- old/mysqlclient-1.3.13/INSTALL.rst 2016-07-26 10:12:24.000000000 +0200
+++ new/mysqlclient-1.3.14/INSTALL.rst 2018-12-04 09:41:39.000000000 +0100
@@ -8,40 +8,17 @@
Prerequisites
-------------
-+ Python 2.6, 2.7, 3.3 or higher
-
- * http://www.python.org/
++ Python 2.7, 3.4 or higher
+ setuptools
* http://pypi.python.org/pypi/setuptools
-+ MySQL 5.0 or higher
++ MySQL 5.5 or higher
* http://www.mysql.com/downloads/
- * MySQL-4.0 and MySQL-4.1 may work, but not supported.
-
- * MySQL-5.0 is supported and tested, including stored procedures.
-
- * MySQL-5.1 is supported (currently a release candidate) but untested.
- It should work.
-
- * Red Hat Linux packages:
-
- - mysql-devel to compile
-
- - mysql and/or mysql-devel to run
-
- * MySQL.com RPM packages:
-
- - MySQL-devel to compile
-
- - MySQL-shared if you want to use their shared
- library. Otherwise you'll get a statically-linked module,
- which may or may not be what you want.
-
- - MySQL-shared to run if you compiled with MySQL-shared installed
+ * MySQL-5.0 may work, but not supported.
+ C compiler
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/MySQLdb/connections.py new/mysqlclient-1.3.14/MySQLdb/connections.py
--- old/mysqlclient-1.3.13/MySQLdb/connections.py 2018-06-27 13:17:09.000000000 +0200
+++ new/mysqlclient-1.3.14/MySQLdb/connections.py 2018-12-04 09:41:58.000000000 +0100
@@ -200,6 +200,10 @@
# PEP-249 requires autocommit to be initially off
autocommit = kwargs2.pop('autocommit', False)
self.waiter = kwargs2.pop('waiter', None)
+ if self.waiter:
+ from warnings import warn
+ warn("waiter is deprecated and will be removed in 1.4.",
+ DeprecationWarning, 2)
super(Connection, self).__init__(*args, **kwargs2)
self.cursorclass = cursorclass
@@ -325,12 +329,10 @@
return s
def begin(self):
- """Explicitly begin a connection. Non-standard.
- DEPRECATED: Will be removed in 1.3.
- Use an SQL BEGIN statement instead."""
- from warnings import warn
- warn("begin() is non-standard and will be removed in 1.4",
- DeprecationWarning, 2)
+ """Explicitly begin a connection.
+
+ This method is not used when autocommit=False (default).
+ """
self.query("BEGIN")
if not hasattr(_mysql.connection, 'warning_count'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/MySQLdb/converters.py new/mysqlclient-1.3.14/MySQLdb/converters.py
--- old/mysqlclient-1.3.13/MySQLdb/converters.py 2017-08-30 11:49:19.000000000 +0200
+++ new/mysqlclient-1.3.14/MySQLdb/converters.py 2018-12-04 09:41:58.000000000 +0100
@@ -66,7 +66,10 @@
return s.encode()
def Float2Str(o, d):
- return '%.15g' % o
+ s = repr(o)
+ if 'e' not in s:
+ s += 'e0'
+ return s
def None2NULL(o, d):
"""Convert None to NULL."""
@@ -79,6 +82,8 @@
that method when the connection is created."""
return string_literal(o, d)
+def Decimal2Literal(o, d):
+ return format(o, 'f')
def char_array(s):
return array.array('c', s)
@@ -139,5 +144,6 @@
from decimal import Decimal
conversions[FIELD_TYPE.DECIMAL] = Decimal
conversions[FIELD_TYPE.NEWDECIMAL] = Decimal
+ conversions[Decimal] = Decimal2Literal
except ImportError:
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/MySQLdb/cursors.py new/mysqlclient-1.3.14/MySQLdb/cursors.py
--- old/mysqlclient-1.3.13/MySQLdb/cursors.py 2018-04-20 09:39:06.000000000 +0200
+++ new/mysqlclient-1.3.14/MySQLdb/cursors.py 2018-11-05 13:06:10.000000000 +0100
@@ -75,6 +75,7 @@
self._result = None
self._warnings = None
self.rownumber = None
+ self._rows = None
def close(self):
"""Close the cursor. No further queries will be possible."""
@@ -172,23 +173,27 @@
nr = db.next_result()
if nr == -1:
return None
- self._do_get_result()
+ self._do_get_result(db)
self._post_get_result()
self._warning_check()
return 1
- def _post_get_result(self): pass
+ def _do_get_result(self, db):
+ self._result = result = self._get_result()
+ if result is None:
+ self.description = self.description_flags = None
+ else:
+ self.description = result.describe()
+ self.description_flags = result.field_flags()
- def _do_get_result(self):
- db = self._get_db()
- self._result = self._get_result()
self.rowcount = db.affected_rows()
self.rownumber = 0
- self.description = self._result and self._result.describe() or None
- self.description_flags = self._result and self._result.field_flags() or None
self.lastrowid = db.insert_id()
self._warnings = None
+ def _post_get_result(self):
+ pass
+
def setinputsizes(self, *args):
"""Does nothing, required by DB API."""
@@ -248,7 +253,6 @@
except Exception:
exc, value = sys.exc_info()[:2]
self.errorhandler(self, exc, value)
- self._executed = query
if not self._defer_warnings:
self._warning_check()
return res
@@ -364,21 +368,19 @@
if isinstance(q, unicode):
q = q.encode(db.encoding, 'surrogateescape')
self._query(q)
- self._executed = q
if not self._defer_warnings:
self._warning_check()
return args
- def _do_query(self, q):
+ def _query(self, q):
db = self._get_db()
- self._last_executed = q
+ self._result = None
db.query(q)
- self._do_get_result()
+ self._do_get_result(db)
+ self._post_get_result()
+ self._executed = q
return self.rowcount
- def _query(self, q):
- return self._do_query(q)
-
def _fetch_row(self, size=1):
if not self._result:
return ()
@@ -408,11 +410,6 @@
def _get_result(self):
return self._get_db().store_result()
- def _query(self, q):
- rowcount = self._do_query(q)
- self._post_get_result()
- return rowcount
-
def _post_get_result(self):
self._rows = self._fetch_row(0)
self._result = None
@@ -481,7 +478,8 @@
_defer_warnings = True
- def _get_result(self): return self._get_db().use_result()
+ def _get_result(self):
+ return self._get_db().use_result()
def fetchone(self):
"""Fetches a single row from the cursor."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/MySQLdb/release.py new/mysqlclient-1.3.14/MySQLdb/release.py
--- old/mysqlclient-1.3.13/MySQLdb/release.py 2018-06-27 13:28:40.000000000 +0200
+++ new/mysqlclient-1.3.14/MySQLdb/release.py 2018-12-04 11:06:11.000000000 +0100
@@ -1,4 +1,4 @@
__author__ = "Andy Dustman "
-version_info = (1,3,13,'final',0)
-__version__ = "1.3.13"
+version_info = (1,3,14,'final',0)
+__version__ = "1.3.14"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/PKG-INFO new/mysqlclient-1.3.14/PKG-INFO
--- old/mysqlclient-1.3.13/PKG-INFO 2018-06-27 13:28:40.000000000 +0200
+++ new/mysqlclient-1.3.14/PKG-INFO 2018-12-04 11:06:12.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: mysqlclient
-Version: 1.3.13
+Version: 1.3.14
Summary: Python interface to MySQL
Home-page: https://github.com/PyMySQL/mysqlclient-python
Author: Andy Dustman
@@ -99,6 +99,7 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Database
Classifier: Topic :: Database :: Database Engines/Servers
Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/_mysql.c new/mysqlclient-1.3.14/_mysql.c
--- old/mysqlclient-1.3.13/_mysql.c 2017-12-21 12:09:51.000000000 +0100
+++ new/mysqlclient-1.3.14/_mysql.c 2018-12-04 10:40:05.000000000 +0100
@@ -69,7 +69,11 @@
PyObject *converter;
} _mysql_ConnectionObject;
-#define check_connection(c) if (!(c->open)) return _mysql_Exception(c)
+#define check_connection(c) \
+ if (!(c->open)) { \
+ return _mysql_Exception(c); \
+ };
+
#define result_connection(r) ((_mysql_ConnectionObject *)r->conn)
#define check_result_connection(r) check_connection(result_connection(r))
@@ -90,12 +94,8 @@
static int _mysql_server_init_done = 0;
#define check_server_init(x) if (!_mysql_server_init_done) { if (mysql_server_init(0, NULL, NULL)) { _mysql_Exception(NULL); return x; } else { _mysql_server_init_done = 1;} }
-#if MYSQL_VERSION_ID >= 50500
-#define HAVE_OPENSSL 1
-#endif
-
/* According to https://dev.mysql.com/doc/refman/5.1/en/mysql-options.html
- The MYSQL_OPT_READ_TIMEOUT apear in the version 5.1.12 */
+ The MYSQL_OPT_READ_TIMEOUT appear in the version 5.1.12 */
#if MYSQL_VERSION_ID > 50112
#define HAVE_MYSQL_OPT_TIMEOUTS 1
#endif
@@ -115,7 +115,15 @@
Py_DECREF(t);
return NULL;
}
- merr = mysql_errno(&(c->connection));
+ if (!(c->open)) {
+ /* GH-270: When connection is closed, accessing the c->connection
+ * object may cause SEGV.
+ */
+ merr = CR_SERVER_GONE_ERROR;
+ }
+ else {
+ merr = mysql_errno(&(c->connection));
+ }
switch (merr) {
case 0:
e = _mysql_InterfaceError;
@@ -490,12 +498,10 @@
MYSQL *conn = NULL;
PyObject *conv = NULL;
PyObject *ssl = NULL;
-#if HAVE_OPENSSL
char *key = NULL, *cert = NULL, *ca = NULL,
*capath = NULL, *cipher = NULL;
PyObject *ssl_keepref[5] = {NULL};
int n_ssl_keepref = 0;
-#endif
char *host = NULL, *user = NULL, *passwd = NULL,
*db = NULL, *unix_socket = NULL;
unsigned int port = 0;
@@ -559,18 +565,12 @@
#endif
if (ssl) {
-#if HAVE_OPENSSL
PyObject *value = NULL;
_stringsuck(ca, value, ssl);
_stringsuck(capath, value, ssl);
_stringsuck(cert, value, ssl);
_stringsuck(key, value, ssl);
_stringsuck(cipher, value, ssl);
-#else
- PyErr_SetString(_mysql_NotSupportedError,
- "client library does not have SSL support");
- return -1;
-#endif
}
Py_BEGIN_ALLOW_THREADS ;
@@ -608,18 +608,15 @@
if (local_infile != -1)
mysql_options(&(self->connection), MYSQL_OPT_LOCAL_INFILE, (char *) &local_infile);
-#if HAVE_OPENSSL
if (ssl) {
mysql_ssl_set(&(self->connection), key, cert, ca, capath, cipher);
}
-#endif
conn = mysql_real_connect(&(self->connection), host, user, passwd, db,
port, unix_socket, client_flag);
Py_END_ALLOW_THREADS ;
-#if HAVE_OPENSSL
if (ssl) {
int i;
for (i=0; iconnection.net.fd);
}
@@ -761,16 +758,11 @@
_mysql_ConnectionObject *self,
PyObject *noargs)
{
- if (self->open) {
- Py_BEGIN_ALLOW_THREADS
- mysql_close(&(self->connection));
- Py_END_ALLOW_THREADS
- self->open = 0;
- } else {
- PyErr_SetString(_mysql_ProgrammingError,
- "closing a closed connection");
- return NULL;
- }
+ check_connection(self);
+ Py_BEGIN_ALLOW_THREADS
+ mysql_close(&(self->connection));
+ Py_END_ALLOW_THREADS
+ self->open = 0;
_mysql_ConnectionObject_clear(self);
Py_RETURN_NONE;
}
@@ -842,6 +834,7 @@
{
int flag, err;
if (!PyArg_ParseTuple(args, "i", &flag)) return NULL;
+ check_connection(self);
Py_BEGIN_ALLOW_THREADS
err = mysql_autocommit(&(self->connection), flag);
Py_END_ALLOW_THREADS
@@ -858,6 +851,7 @@
_mysql_ConnectionObject *self,
PyObject *args)
{
+ check_connection(self);
if (self->connection.server_status & SERVER_STATUS_AUTOCOMMIT) {
Py_RETURN_TRUE;
}
@@ -873,6 +867,7 @@
PyObject *noargs)
{
int err;
+ check_connection(self);
Py_BEGIN_ALLOW_THREADS
err = mysql_commit(&(self->connection));
Py_END_ALLOW_THREADS
@@ -890,13 +885,13 @@
PyObject *noargs)
{
int err;
+ check_connection(self);
Py_BEGIN_ALLOW_THREADS
err = mysql_rollback(&(self->connection));
Py_END_ALLOW_THREADS
if (err) return _mysql_Exception(self);
- Py_INCREF(Py_None);
- return Py_None;
-}
+ Py_RETURN_NONE;
+}
static char _mysql_ConnectionObject_next_result__doc__[] =
"If more query results exist, next_result() reads the next query\n\
@@ -917,6 +912,7 @@
PyObject *noargs)
{
int err;
+ check_connection(self);
Py_BEGIN_ALLOW_THREADS
err = mysql_next_result(&(self->connection));
Py_END_ALLOW_THREADS
@@ -939,6 +935,7 @@
int err, flags=0;
if (!PyArg_ParseTuple(args, "i", &flags))
return NULL;
+ check_connection(self);
Py_BEGIN_ALLOW_THREADS
err = mysql_set_server_option(&(self->connection), flags);
Py_END_ALLOW_THREADS
@@ -963,6 +960,7 @@
_mysql_ConnectionObject *self,
PyObject *noargs)
{
+ check_connection(self);
return PyString_FromString(mysql_sqlstate(&(self->connection)));
}
@@ -977,6 +975,7 @@
_mysql_ConnectionObject *self,
PyObject *noargs)
{
+ check_connection(self);
return PyInt_FromLong(mysql_warning_count(&(self->connection)));
}
@@ -1686,6 +1685,28 @@
}
#endif
+static char _mysql_ConnectionObject_get_native_connection__doc__[] =
+"Return the internal MYSQL* wrapped in a PyCapsule object.\n\
+NOTE: this is a private API introduced ONLY for XTA integration,\n\
+ don't use it for different use cases.\n\
+ This method is supported only for XTA integration and support must\n\
+ be asked to LIXA project: http://www.tiian.org/lixa/\n\
+ Please DO NOT ask support to PyMySQL/mysqlclient-python project.\n\
+";
+
+static PyObject *
+_mysql_ConnectionObject_get_native_connection(
+ _mysql_ConnectionObject *self,
+ PyObject *noargs)
+{
+ PyObject *result;
+ check_connection(self);
+ result = PyCapsule_New(&(self->connection),
+ "_mysql.connection.native_connection", NULL);
+ return result;
+}
+
+
static char _mysql_get_client_info__doc__[] =
"get_client_info() -- Returns a string that represents\n\
the client library version.";
@@ -2272,6 +2293,12 @@
},
#endif
{
+ "_get_native_connection",
+ (PyCFunction)_mysql_ConnectionObject_get_native_connection,
+ METH_NOARGS,
+ _mysql_ConnectionObject_get_native_connection__doc__
+ },
+ {
"close",
(PyCFunction)_mysql_ConnectionObject_close,
METH_NOARGS,
@@ -2455,8 +2482,8 @@
{
"client_flag",
T_UINT,
- READONLY,
offsetof(_mysql_ConnectionObject,connection.client_flag),
+ READONLY,
"Client flags; refer to MySQLdb.constants.CLIENT"
},
{NULL} /* Sentinel */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/doc/user_guide.rst new/mysqlclient-1.3.14/doc/user_guide.rst
--- old/mysqlclient-1.3.13/doc/user_guide.rst 2018-06-27 13:17:09.000000000 +0200
+++ new/mysqlclient-1.3.14/doc/user_guide.rst 2018-12-04 09:41:39.000000000 +0100
@@ -434,7 +434,7 @@
can be either:
* a callable object which takes a string argument (the MySQL
- value),' returning a Python value
+ value), returning a Python value
* a sequence of 2-tuples, where the first value is a combination
of flags from ``MySQLdb.constants.FLAG``, and the second value
@@ -653,7 +653,6 @@
Causes the cursor to return rows as a tuple of the column values.
CursorDictRowsMixIn
-
Causes the cursor to return rows as a dictionary, where the keys
are column names and the values are column values. Note that if
the column names are not unique, i.e., you are selecting from two
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/metadata.cfg new/mysqlclient-1.3.14/metadata.cfg
--- old/mysqlclient-1.3.13/metadata.cfg 2018-06-27 13:21:29.000000000 +0200
+++ new/mysqlclient-1.3.14/metadata.cfg 2018-12-04 11:00:25.000000000 +0100
@@ -1,6 +1,6 @@
[metadata]
-version: 1.3.13
-version_info: (1,3,13,'final',0)
+version: 1.3.14
+version_info: (1,3,14,'final',0)
description: Python interface to MySQL
author: Andy Dustman
author_email: farcepest@gmail.com
@@ -27,6 +27,7 @@
Programming Language :: Python :: 3.4
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
Topic :: Database
Topic :: Database :: Database Engines/Servers
py_modules:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/mysqlclient.egg-info/PKG-INFO new/mysqlclient-1.3.14/mysqlclient.egg-info/PKG-INFO
--- old/mysqlclient-1.3.13/mysqlclient.egg-info/PKG-INFO 2018-06-27 13:28:40.000000000 +0200
+++ new/mysqlclient-1.3.14/mysqlclient.egg-info/PKG-INFO 2018-12-04 11:06:11.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: mysqlclient
-Version: 1.3.13
+Version: 1.3.14
Summary: Python interface to MySQL
Home-page: https://github.com/PyMySQL/mysqlclient-python
Author: Andy Dustman
@@ -99,6 +99,7 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Database
Classifier: Topic :: Database :: Database Engines/Servers
Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/setup.py new/mysqlclient-1.3.14/setup.py
--- old/mysqlclient-1.3.13/setup.py 2018-06-27 13:22:42.000000000 +0200
+++ new/mysqlclient-1.3.14/setup.py 2018-12-04 10:59:41.000000000 +0100
@@ -2,9 +2,7 @@
import os
import io
-import sys
-import distutils.errors
import setuptools
if os.name == "posix":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/setup_posix.py new/mysqlclient-1.3.14/setup_posix.py
--- old/mysqlclient-1.3.13/setup_posix.py 2018-06-27 13:17:09.000000000 +0200
+++ new/mysqlclient-1.3.14/setup_posix.py 2018-12-04 09:41:39.000000000 +0100
@@ -72,17 +72,21 @@
include_dirs = [dequote(i[2:])
for i in mysql_config('include') if i.startswith('-I')]
+ if static:
+ # properly handle mysql client libraries that are not called libmysqlclient
+ client = None
+ CLIENT_LIST = ['mysqlclient', 'mysqlclient_r', 'mysqld', 'mariadb',
+ 'perconaserverclient', 'perconaserverclient_r']
+ for c in CLIENT_LIST:
+ if c in libraries:
+ client = c
+ break
- # properly handle mysql client libraries that are not called libmysqlclient
- client = None
- CLIENT_LIST = ['mysqlclient', 'mysqlclient_r', 'mysqld',
- 'perconaserverclient', 'perconaserverclient_r']
- for c in CLIENT_LIST:
- if c in libraries:
- client = c
- break
+ if client == 'mariadb':
+ client = 'mariadbclient'
+ if client is None:
+ raise ValueError("Couldn't identify mysql client library")
- if static:
extra_objects.append(os.path.join(library_dirs[0], 'lib%s.a' % client))
if client in libraries:
libraries.remove(client)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/tests/capabilities.py new/mysqlclient-1.3.14/tests/capabilities.py
--- old/mysqlclient-1.3.13/tests/capabilities.py 2016-07-26 10:12:24.000000000 +0200
+++ new/mysqlclient-1.3.14/tests/capabilities.py 2018-12-04 09:41:58.000000000 +0100
@@ -195,13 +195,24 @@
def test_DECIMAL(self):
# DECIMAL
+ from decimal import Decimal
def generator(row,col):
- from decimal import Decimal
return Decimal("%d.%02d" % (row, col))
self.check_data_integrity(
('col1 DECIMAL(5,2)',),
generator)
+ val = Decimal('1.11111111111111119E-7')
+ self.cursor.execute('SELECT %s', (val,))
+ result = self.cursor.fetchone()[0]
+ self.assertEqual(result, val)
+ self.assertIsInstance(result, Decimal)
+
+ self.cursor.execute('SELECT %s + %s', (Decimal('0.1'), Decimal('0.2')))
+ result = self.cursor.fetchone()[0]
+ self.assertEqual(result, Decimal('0.3'))
+ self.assertIsInstance(result, Decimal)
+
def test_DATE(self):
ticks = time()
def generator(row,col):
@@ -279,3 +290,9 @@
('col1 INT','col2 BLOB'),
generator)
+ def test_DOUBLE(self):
+ for val in (18014398509481982.0, 0.1):
+ self.cursor.execute('SELECT %s', (val,));
+ result = self.cursor.fetchone()[0]
+ self.assertEqual(result, val)
+ self.assertIsInstance(result, float)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mysqlclient-1.3.13/tests/test_MySQLdb_nonstandard.py new/mysqlclient-1.3.14/tests/test_MySQLdb_nonstandard.py
--- old/mysqlclient-1.3.13/tests/test_MySQLdb_nonstandard.py 2016-07-26 10:12:24.000000000 +0200
+++ new/mysqlclient-1.3.14/tests/test_MySQLdb_nonstandard.py 2018-11-02 11:05:48.000000000 +0100
@@ -92,3 +92,14 @@
self.assertTrue(isinstance(self.conn.get_server_info(), str),
"Should return an str.")
+ def test_client_flag(self):
+ conn = connection_factory(
+ use_unicode=True,
+ client_flag=MySQLdb.constants.CLIENT.FOUND_ROWS)
+
+ self.assertIsInstance(conn.client_flag, (int, MySQLdb.compat.long))
+ self.assertTrue(conn.client_flag & MySQLdb.constants.CLIENT.FOUND_ROWS)
+ with self.assertRaises(TypeError if MySQLdb.compat.PY2 else AttributeError):
+ conn.client_flag = 0
+
+ conn.close()