From 054af1195d12ac9a232c218f3ca836f9f05523a6 Mon Sep 17 00:00:00 2001 From: Geert Vanderkelen Date: Wed, 13 Jul 2016 11:54:36 +0200 Subject: [PATCH 01/95] Updating CHANGES.txt --- CHANGES.txt | 10 ++++++++++ cpyint | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 1209accc..cb6da8af 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -11,6 +11,16 @@ Full release notes: v2.1.4 ====== +- BUG#22545879: Fix usage of --ssl-cipher option +- BUG#21881038: Fix duplicate entry in CHANGES.txt +- BUG#21879914: Fix using SSL without key or certificate using C/Ext +- BUG#21879859: Fix consuming results after calling procedure +- BUG#21498719: Fix conversion of Python bytearray +- BUG#21449996: Fix LOAD DATA with compression turned on +- BUG#21449207: Fix fetching compressed data bigger than 16M +- BUG#20834643: Attribute Error while promoting servers using MySQL Fabric +- BUG#20811802: Fix buffered named tuple cursor with CExtension +- BUG#20217174: Fix install command honouring --install-lib when given v2.1.3 ====== diff --git a/cpyint b/cpyint index 00975510..6316398b 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 009755101c891c428ec390d3b1aeac216c90ba43 +Subproject commit 6316398bd095a8507cc7f7f63ea5eb1dc4fa8aee From 22b474ea309a6775f8eea72075197da46378075a Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Fri, 15 Jul 2016 14:34:25 +0100 Subject: [PATCH 02/95] BUG22873551: Fix cleartext authentication issue Patch provided by contributor. Unit Tests cannot be added for this patch because it includes setting up an account to authenticate via PAM. --- lib/mysql/connector/protocol.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index 72f9369a..0ce9cfb9 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -718,7 +718,7 @@ def parse_auth_switch_request(self, packet): "Failed parsing AuthSwitchRequest packet") (packet, plugin_name) = utils.read_string(packet[5:], end=b'\x00') - if packet[-1] == 0: + if packet and packet[-1] == 0: packet = packet[:-1] return plugin_name.decode('utf8'), packet From 698ee7767897dd8d495f1e68fbe958b51164d138 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 18 Jul 2016 16:08:32 +0100 Subject: [PATCH 03/95] Change cpyint submodule to track 'master-2.1' branch --- .gitmodules | 2 +- cpyint | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 74fe0f2f..1765f49b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "cpyint"] path = cpyint url = ../connector-python-internal.git - branch = master + branch = master-2.1 diff --git a/cpyint b/cpyint index 6316398b..00975510 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 6316398bd095a8507cc7f7f63ea5eb1dc4fa8aee +Subproject commit 009755101c891c428ec390d3b1aeac216c90ba43 From c305b2360bcd5c76ec107a3b474557dab92d38ef Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 18 Jul 2016 17:09:23 +0100 Subject: [PATCH 04/95] Update CPYINT revision and CHANGES.txt --- CHANGES.txt | 1 + cpyint | 2 +- lib/mysql/connector/version.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index cb6da8af..bbac1dc6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -11,6 +11,7 @@ Full release notes: v2.1.4 ====== +- BUG#22873551: Fix cleartext authentication issue - BUG#22545879: Fix usage of --ssl-cipher option - BUG#21881038: Fix duplicate entry in CHANGES.txt - BUG#21879914: Fix using SSL without key or certificate using C/Ext diff --git a/cpyint b/cpyint index 00975510..2154ef4e 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 009755101c891c428ec390d3b1aeac216c90ba43 +Subproject commit 2154ef4e11b222fa232e589e2a4c87e5579f4128 diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index 936210df..135bd178 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most From e70ea46c3e2b1bd11e17544207f6a62a356839ec Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Thu, 28 Jul 2016 13:35:22 +0530 Subject: [PATCH 05/95] Fix Copyright year in README.txt --- README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 7fe3debf..773af0b1 100644 --- a/README.txt +++ b/README.txt @@ -28,7 +28,7 @@ doubt, this particular copy of the software is released under the version 2 of the GNU General Public License. MySQL Connector/Python is brought to you by Oracle. -Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. From 8af4931404a76edf4e82228ea4b8dbc72733e5dc Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Wed, 17 Aug 2016 15:26:00 +0100 Subject: [PATCH 06/95] Fix test_cmd_refresh test when using recent MySQL servers The test_cmd_refresh test was failing when using MySQL server versions above 5.7.10, because as of MySQL 5.7.11, the mysql_refresh() is deprecated. The test is skipped for versions above 5.7.10. --- tests/test_abstracts.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_abstracts.py b/tests/test_abstracts.py index f90b5075..ca376e46 100644 --- a/tests/test_abstracts.py +++ b/tests/test_abstracts.py @@ -27,6 +27,7 @@ from decimal import Decimal from operator import attrgetter +import unittest import tests from tests import PY2, foreach_cnx @@ -185,6 +186,8 @@ def test_reset_session(self): row = self.cnx.info_query("SELECT @@session.{0}".format(key)) self.assertEqual(value, row[0]) + @unittest.skipIf(tests.MYSQL_VERSION > (5, 7, 10), + "As of MySQL 5.7.11, mysql_refresh() is deprecated") @foreach_cnx() def test_cmd_refresh(self): refresh = RefreshOption.LOG | RefreshOption.THREADS From 4aafd5a0bf275760da0e5e6eebc32643e7df7ed8 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Wed, 17 Aug 2016 15:58:08 +0100 Subject: [PATCH 07/95] Fix warning when building C extension This patch fix the warning that is thrown when building the C extension, by removing the unused variable. --- src/mysql_capi.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mysql_capi.c b/src/mysql_capi.c index ea1fe3fd..41cece24 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1030,7 +1030,6 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) char *ssl_ca= NULL, *ssl_cert= NULL, *ssl_key= NULL; PyObject *charset_name, *compress, *ssl_verify_cert; const char* auth_plugin; - unsigned long ver; unsigned long client_flags= 0; unsigned int port= 3306, tmp_uint; unsigned int protocol= 0; @@ -1065,7 +1064,6 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) } mysql_init(&self->session); - ver= mysql_get_client_version(); #ifdef MS_WINDOWS if (NULL == host) From fd825b10f1bf1a4df3d1904c7207a365c965a2a8 Mon Sep 17 00:00:00 2001 From: Nawaz Nazeer Ahamed Date: Mon, 29 Aug 2016 23:25:15 +0530 Subject: [PATCH 08/95] Updating CHANGES.txt - removed BUG#21449207 entry --- CHANGES.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index bbac1dc6..721b2a93 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -18,7 +18,6 @@ v2.1.4 - BUG#21879859: Fix consuming results after calling procedure - BUG#21498719: Fix conversion of Python bytearray - BUG#21449996: Fix LOAD DATA with compression turned on -- BUG#21449207: Fix fetching compressed data bigger than 16M - BUG#20834643: Attribute Error while promoting servers using MySQL Fabric - BUG#20811802: Fix buffered named tuple cursor with CExtension - BUG#20217174: Fix install command honouring --install-lib when given From def354c559086dfc4cf49e26f945696f27f51e8f Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 22 Sep 2016 09:25:19 +0100 Subject: [PATCH 09/95] BUG22529828 Fix potential SQL injection This patch fixes a potential SQL injection that may occur when the parameters expansion is done in multiple steps and under some circumstances a substring in an incoming parameter value can be expanded several times. --- CHANGES.txt | 1 + lib/mysql/connector/cursor.py | 45 +++++++++++++++++++++++++++++------ tests/test_cursor.py | 42 +++++++++++++++++--------------- 3 files changed, 62 insertions(+), 26 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 721b2a93..998bceb0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -13,6 +13,7 @@ v2.1.4 - BUG#22873551: Fix cleartext authentication issue - BUG#22545879: Fix usage of --ssl-cipher option +- BUG#22529828: Fix potencial SQL injection - BUG#21881038: Fix duplicate entry in CHANGES.txt - BUG#21879914: Fix using SSL without key or certificate using C/Ext - BUG#21879859: Fix consuming results after calling procedure diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 7cc73627..8569e89d 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -44,6 +44,14 @@ re.I | re.M | re.S) RE_SQL_INSERT_VALUES = re.compile(r'.*VALUES\s*(\(.*\)).*', re.I | re.M | re.S) RE_PY_PARAM = re.compile(b'(%s)') +RE_PY_MAPPING_PARAM = re.compile( + br''' + % + \((?P[^)]+)\) + (?P[diouxXeEfFgGcrs%]) + ''', + re.X +) RE_SQL_SPLIT_STMTS = re.compile( b''';(?=(?:[^"'`]*["'`][^"'`]*["'`])*[^"'`]*$)''') RE_SQL_FIND_PARAM = re.compile( @@ -75,6 +83,29 @@ def remaining(self): return len(self.params) - self.index +def _bytestr_format_dict(bytestr, value_dict): + """ + >>> _bytestr_format_dict(b'%(a)s', {b'a': b'foobar'}) + b'foobar + >>> _bytestr_format_dict(b'%%(a)s', {b'a': b'foobar'}) + b'%%(a)s' + >>> _bytestr_format_dict(b'%%%(a)s', {b'a': b'foobar'}) + b'%%foobar' + >>> _bytestr_format_dict(b'%(x)s %(y)s', + ... {b'x': b'x=%(y)s', b'y': b'y=%(x)s'}) + b'x=%(y)s y=%(x)s' + """ + def replace(matchobj): + groups = matchobj.groupdict() + if groups["conversion_type"] == b"%": + return b"%" + if groups["conversion_type"] == b"s": + return value_dict[groups["mapping_key"]] + raise ValueError("Unsupported conversion_type: {0}" + "".format(groups["conversion_type"])) + return RE_PY_MAPPING_PARAM.sub(replace, bytestr) + + class CursorBase(MySQLCursorAbstract): """ Base for defining MySQLCursor. This class is a skeleton and defines @@ -360,9 +391,9 @@ def _process_params_dict(self, params): conv = escape(conv) conv = quote(conv) if PY2: - res["%({0})s".format(key)] = conv + res[key] = conv else: - res["%({0})s".format(key).encode()] = conv + res[key.encode()] = conv except Exception as err: raise errors.ProgrammingError( "Failed processing pyformat-parameters; %s" % err) @@ -497,8 +528,8 @@ def execute(self, operation, params=None, multi=False): if params is not None: if isinstance(params, dict): - for key, value in self._process_params_dict(params).items(): - stmt = stmt.replace(key, value) + stmt = _bytestr_format_dict( + stmt, self._process_params_dict(params)) elif isinstance(params, (list, tuple)): psub = _ParamSubstitutor(self._process_params(params)) stmt = RE_PY_PARAM.sub(psub, stmt) @@ -551,8 +582,8 @@ def remove_comments(match): for params in seq_params: tmp = fmt if isinstance(params, dict): - for key, value in self._process_params_dict(params).items(): - tmp = tmp.replace(key, value) + tmp = _bytestr_format_dict( + tmp, self._process_params_dict(params)) else: psub = _ParamSubstitutor(self._process_params(params)) tmp = RE_PY_PARAM.sub(psub, tmp) diff --git a/tests/test_cursor.py b/tests/test_cursor.py index acfd0252..94513fa7 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -421,28 +421,32 @@ def test__process_params_dict(self): 'p': datetime.time(20, 3, 23), 'q': st_now, 'r': datetime.timedelta(hours=40, minutes=30, seconds=12), + 's': 'foo %(t)s', + 't': 'foo %(s)s', } exp = { - b'%(a)s': b'NULL', - b'%(b)s': b'128', - b'%(c)s': b'1281288', - b'%(d)s': repr(float(3.14)) if PY2 else b'3.14', - b'%(e)s': b"'3.14'", - b'%(f)s': b"'back\\\\slash'", - b'%(g)s': b"'newline\\n'", - b'%(h)s': b"'return\\r'", - b'%(i)s': b"'\\'single\\''", - b'%(j)s': b'\'\\"double\\"\'', - b'%(k)s': b"'windows\\\x1a'", - b'%(l)s': b"'Strings are sexy'", - b'%(m)s': b"'\xe8\x8a\xb1'", - b'%(n)s': b"'2008-05-07 20:01:23'", - b'%(o)s': b"'2008-05-07'", - b'%(p)s': b"'20:03:23'", - b'%(q)s': b"'" + + b'a': b'NULL', + b'b': b'128', + b'c': b'1281288', + b'd': repr(float(3.14)) if PY2 else b'3.14', + b'e': b"'3.14'", + b'f': b"'back\\\\slash'", + b'g': b"'newline\\n'", + b'h': b"'return\\r'", + b'i': b"'\\'single\\''", + b'j': b'\'\\"double\\"\'', + b'k': b"'windows\\\x1a'", + b'l': b"'Strings are sexy'", + b'm': b"'\xe8\x8a\xb1'", + b'n': b"'2008-05-07 20:01:23'", + b'o': b"'2008-05-07'", + b'p': b"'20:03:23'", + b'q': b"'" + time.strftime('%Y-%m-%d %H:%M:%S', st_now).encode('ascii') + b"'", - b'%(r)s': b"'40:30:12'", + b'r': b"'40:30:12'", + b's': b"'foo %(t)s'", + b't': b"'foo %(s)s'", } self.cnx = connection.MySQLConnection(**tests.get_mysql_config()) From 80b343048e0ae3b4b8c7e6ede1ff42dd2fe0675e Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 27 Sep 2016 12:03:31 +0100 Subject: [PATCH 10/95] Fix TypeError exception found in BUG22529828 patch using Python 2 --- lib/mysql/connector/cursor.py | 17 +++++++++++------ tests/test_cursor.py | 4 ++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 8569e89d..02fa9769 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -96,15 +96,20 @@ def _bytestr_format_dict(bytestr, value_dict): b'x=%(y)s y=%(x)s' """ def replace(matchobj): + value = None groups = matchobj.groupdict() if groups["conversion_type"] == b"%": - return b"%" + value = b"%" if groups["conversion_type"] == b"s": - return value_dict[groups["mapping_key"]] - raise ValueError("Unsupported conversion_type: {0}" - "".format(groups["conversion_type"])) - return RE_PY_MAPPING_PARAM.sub(replace, bytestr) - + key = groups["mapping_key"].encode("utf-8") \ + if PY2 else groups["mapping_key"] + value = value_dict[key] + if value is None: + raise ValueError("Unsupported conversion_type: {0}" + "".format(groups["conversion_type"])) + return value.decode("utf-8") if PY2 else value + return RE_PY_MAPPING_PARAM.sub(replace, bytestr.decode("utf-8") + if PY2 else bytestr) class CursorBase(MySQLCursorAbstract): """ diff --git a/tests/test_cursor.py b/tests/test_cursor.py index 94513fa7..59e40a12 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -361,6 +361,8 @@ def test__process_params(self): datetime.time(20, 3, 23), st_now, datetime.timedelta(hours=40, minutes=30, seconds=12), + 'foo %(t)s', + 'foo %(s)s', ) exp = ( b'NULL', @@ -382,6 +384,8 @@ def test__process_params(self): b"'" + time.strftime('%Y-%m-%d %H:%M:%S', st_now).encode('ascii') + b"'", b"'40:30:12'", + b"'foo %(t)s'", + b"'foo %(s)s'", ) self.cnx = connection.MySQLConnection(**tests.get_mysql_config()) From 924482817fbfcc6ced156484a7f006665cafb16c Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 17 Nov 2016 11:37:29 +0000 Subject: [PATCH 11/95] BUG25111218: Fix duplicate logic for reading EOF packet Removed duplicate logic for reading EOF packet during query result read from the server. The code is unnecessary given the modifications to parse_eof(), which correctly reads the EOF packet for versions with the new packet as well as older versions without the modified EOF packet. --- lib/mysql/connector/protocol.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index 0ce9cfb9..aec16b4b 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -318,7 +318,6 @@ def read_text_result(self, sock, version, count=1): eof = None rowdata = None i = 0 - eof57 = version >= (5, 7, 5) while True: if eof or i == count: break @@ -334,10 +333,6 @@ def read_text_result(self, sock, version, count=1): elif (packet[4] == 254 and packet[0] < 7): eof = self.parse_eof(packet) rowdata = None - elif eof57 and (packet[4] == 0 and packet[0] > 9): - # EOF deprecation: make sure we catch it whether flag is set or not - eof = self.parse_ok(packet) - rowdata = None else: eof = None rowdata = utils.read_lc_string_list(packet[4:]) From 27066cf4d90134f9adf2ae94e58f0af36354d222 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 18 Nov 2016 10:13:56 +0000 Subject: [PATCH 12/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 2154ef4e..0c5d7f28 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 2154ef4e11b222fa232e589e2a4c87e5579f4128 +Subproject commit 0c5d7f28f461da6a737e52a3aaa83acabe08c819 From bc24dec27508877bf9f3253c5bef055b4565afb0 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 18 Nov 2016 10:20:03 +0000 Subject: [PATCH 13/95] Prepare release 2.1.5 --- CHANGES.txt | 5 +++++ lib/mysql/connector/version.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 998bceb0..20fc2c42 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,11 @@ Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. Full release notes: http://dev.mysql.com/doc/relnotes/connector-python/en/ +v2.1.5 +====== + +- BUG#25111218: Fix duplicate logic for reading EOF packet + v2.1.4 ====== diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index 135bd178..a3c311ca 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -26,7 +26,7 @@ as mysql.connector.version. """ -VERSION = (2, 1, 4, '', 0) +VERSION = (2, 1, 5, '', 0) if VERSION[3] and VERSION[4]: VERSION_TEXT = '{0}.{1}.{2}{3}{4}'.format(*VERSION) From f60ff5b04cfa94a317fbd1659a568f4cbd496178 Mon Sep 17 00:00:00 2001 From: Balasubramanian Kandasamy Date: Sat, 19 Nov 2016 09:40:36 +0530 Subject: [PATCH 14/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 2154ef4e..f7eaad53 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 2154ef4e11b222fa232e589e2a4c87e5579f4128 +Subproject commit f7eaad530f25cf413ac7a5fee7c6332cababf04b From f5629a44e0aaff723f570a9cac16beb468bfca07 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Tue, 22 Nov 2016 20:40:04 +0100 Subject: [PATCH 15/95] Wix toolset install directory override fix --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 0c5d7f28..ab58f26b 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 0c5d7f28f461da6a737e52a3aaa83acabe08c819 +Subproject commit ab58f26bd74bd06113c93487c255c3b119d50cbd From f0125b260a7679fd962effb0c0939df37958cdc2 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 25 Nov 2016 15:59:24 +0000 Subject: [PATCH 16/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index ab58f26b..3662016e 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit ab58f26bd74bd06113c93487c255c3b119d50cbd +Subproject commit 3662016ef8b22fd8c721c61d834ab1a63001bc75 From 91226c1466322d6377fd2d5a58254d06ca24aa0c Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Fri, 2 Dec 2016 15:26:44 +0530 Subject: [PATCH 17/95] BUG21530100: Fix reading option files During iteration of a dictionary, deleting of a key from the dictionary causes the following exception: RuntimeError: dictionary changed size during iteration This happens because `dict.keys` returns iterable views in python 3 instead of copies like in python 2. Using Python Dictionary Comprehension's fixes this issue. Test has been added for regression. --- lib/mysql/connector/optionfiles.py | 36 ++++++++++++--------------- tests/test_bugs.py | 40 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/lib/mysql/connector/optionfiles.py b/lib/mysql/connector/optionfiles.py index 43344812..d176b22b 100644 --- a/lib/mysql/connector/optionfiles.py +++ b/lib/mysql/connector/optionfiles.py @@ -286,19 +286,19 @@ def get_groups(self, *args): args = self._options_dict.keys() options = {} + priority = {} for group in args: try: - for option, value in self._options_dict[group].items(): - if option not in options or options[option][1] <= value[1]: - options[option] = value + for option, value in [(key, value,) for key, value in + self._options_dict[group].items() if + key != "__name__" and + not key.startswith("!")]: + if option not in options or priority[option] <= value[1]: + priority[option] = value[1] + options[option] = value[0] except KeyError: pass - for key in options.keys(): - if key == '__name__' or key.startswith('!'): - del options[key] - else: - options[key] = options[key][0] return options def get_groups_as_dict_with_priority(self, *args): # pylint: disable=C0103 @@ -321,14 +321,13 @@ def get_groups_as_dict_with_priority(self, *args): # pylint: disable=C0103 options = dict() for group in args: try: - options[group] = dict(self._options_dict[group]) + options[group] = {key: value for key, value in + self._options_dict[group].items() if + key != "__name__" and + not key.startswith("!")} except KeyError: pass - for group in options.keys(): - for key in options[group].keys(): - if key == '__name__' or key.startswith('!'): - del options[group][key] return options def get_groups_as_dict(self, *args): @@ -347,14 +346,11 @@ def get_groups_as_dict(self, *args): options = dict() for group in args: try: - options[group] = dict(self._options_dict[group]) + options[group] = {key: value[0] for key, value in + self._options_dict[group].items() if + key != "__name__" and + not key.startswith("!")} except KeyError: pass - for group in options.keys(): - for key in options[group].keys(): - if key == '__name__' or key.startswith('!'): - del options[group][key] - else: - options[group][key] = options[group][key][0] return options diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 99fda35b..2ffdb046 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -3086,6 +3086,46 @@ def test_unsupported_arguments(self): self.assertEqual(exp, new_config) +class BugOra21530100(tests.MySQLConnectorTests): + """BUG#21530100: CONNECT FAILS WHEN USING MULTIPLE OPTION_GROUPS WITH + PYTHON 3.3 + """ + def test_option_files_with_option_groups(self): + temp_cnf_file = os.path.join(os.getcwd(), 'temp.cnf') + temp_include_file = os.path.join(os.getcwd(), 'include.cnf') + + try: + cnf_file = open(temp_cnf_file, "w+") + include_file = open(temp_include_file, "w+") + + config = tests.get_mysql_config() + + cnf = "[group32]\n" + cnf += '\n'.join(['{0} = {1}'.format(key, value) + for key, value in config.items()]) + + cnf += "\n[group31]\n" + cnf += "!include {0}\n".format(temp_include_file) + + include_cnf = "[group41]\n" + include_cnf += "charset=utf8\n" + + cnf_file.write(cnf) + include_file.write(include_cnf) + + cnf_file.close() + include_file.close() + + conn = mysql.connector.connect(option_files=temp_cnf_file, + option_groups=['group31','group32','group41']) + except Exception as exc: + self.fail("Connection failed with option_files argument: {0}" + "".format(exc)) + finally: + os.remove(temp_cnf_file) + os.remove(temp_include_file) + + class BugOra19481761(tests.MySQLConnectorTests): """BUG#19481761: OPTION_FILES + !INCLUDE FAILS WITH TRAILING NEWLINE """ From e64f9a74345f21c680231af9a9642f3c0dbce4b7 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Fri, 2 Dec 2016 15:28:08 +0530 Subject: [PATCH 18/95] BUG21476495: Fix set_charset_collation() for an invalid charset provided Incase of an integer value of the charset, CharacterSet.get_charset_info() validates the charset and throws an error, but the value was assigned to charset_id variable of the Connection class before being validated. Assigning only after validating the charset id resolves this issue. Unittests have been added for regression. --- lib/mysql/connector/abstracts.py | 1 - tests/test_bugs.py | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index 6bbd2c11..c83a5271 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -634,7 +634,6 @@ def set_charset_collation(self, charset=None, collation=None): """ if charset: if isinstance(charset, int): - self._charset_id = charset (self._charset_id, charset_name, collation_name) = \ CharacterSet.get_charset_info(charset) elif isinstance(charset, str): diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 2ffdb046..da8028dc 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -3968,6 +3968,30 @@ def test_password_with_spaces(self): cnx.close() +class BugOra21476495(tests.MySQLConnectorTests): + """Bug 21476495 - CHARSET VALUE REMAINS INVALID AFTER FAILED + SET_CHARSET_COLLATION() CALL + """ + def setUp(self): + config = tests.get_mysql_config() + self.cnx = connection.MySQLConnection(**config) + + def test_bad_set_charset_number(self): + old_val = self.cnx._charset_id + self.assertRaises(mysql.connector.Error, + self.cnx.set_charset_collation, 19999) + + config = tests.get_mysql_config() + cnx = connection.MySQLConnection(**config) + cursor = cnx.cursor(raw="true",buffered="true") + cursor.execute("SHOW VARIABLES LIKE 'character_set_connection'") + row = cursor.fetchone() + self.assertEqual(row[1], u"utf8") + cursor.close() + + self.assertEqual(self.cnx._charset_id, old_val) + + class BugOra21492815(tests.MySQLConnectorTests): """BUG#21492815: CALLPROC() HANGS WHEN CONSUME_RESULTS=TRUE """ From ea64621c521de97aed90c153e573c2063bc0800d Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Fri, 2 Dec 2016 15:32:06 +0530 Subject: [PATCH 19/95] BUG21477493 Fix RE_SQL_INSERT_STMT to correctly match Insert Statement The regex matches the literal "VALUES" in the insert string and assumes that it is a batch insert, which may not be the case if this literal is used as a value itself. The regex is modified to match the complete Insert Statement and made sure it conforms to the format `INSERT INTO [table_name] (col,...) VALUES(a,...)`. Unittests have been added for regression. --- lib/mysql/connector/cursor.py | 3 +- tests/test_bugs.py | 55 +++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 02fa9769..09b7b544 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -40,7 +40,8 @@ r'''\s*ON\s+DUPLICATE\s+KEY(?:[^"'`]*["'`][^"'`]*["'`])*[^"'`]*$''', re.I | re.M | re.S) RE_SQL_INSERT_STMT = re.compile( - r"({0}|\s)*INSERT({0}|\s)*INTO.+VALUES.*".format(SQL_COMMENT), + r"({0}|\s)*INSERT({0}|\s)*INTO\s+[`'\"]?.+[`'\"]?(?:\.[`'\"]?.+[`'\"]?)" + "{{0,2}}\s+VALUES\s*\(.+(?:\s*,.+)*\)".format(SQL_COMMENT), re.I | re.M | re.S) RE_SQL_INSERT_VALUES = re.compile(r'.*VALUES\s*(\(.*\)).*', re.I | re.M | re.S) RE_PY_PARAM = re.compile(b'(%s)') diff --git a/tests/test_bugs.py b/tests/test_bugs.py index da8028dc..0052f6c0 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -3992,6 +3992,61 @@ def test_bad_set_charset_number(self): self.assertEqual(self.cnx._charset_id, old_val) +class BugOra21477493(tests.MySQLConnectorTests): + """Bug 21477493 - EXECUTEMANY() API WITH INSERT INTO .. SELECT STATEMENT + RETURNS INTERFACEERROR + """ + def setUp(self): + config = tests.get_mysql_config() + self.cnx = connection.MySQLConnection(**config) + cursor = self.cnx.cursor() + cursor.execute("DROP TABLE IF EXISTS fun1") + cursor.execute("CREATE TABLE fun1(a CHAR(50), b INT)") + data=[('A',1),('B',2)] + cursor.executemany("INSERT INTO fun1 (a, b) VALUES (%s, %s)",data) + cursor.close() + + def tearDown(self): + cursor = self.cnx.cursor() + cursor.execute("DROP TABLE IF EXISTS fun1") + cursor.close() + + def test_insert_into_select_type1(self): + data = [('A',1),('B',2)] + cursor = self.cnx.cursor() + cursor.executemany("INSERT INTO fun1 SELECT CONCAT('VALUES', %s), " + "b + %s FROM fun1", data) + cursor.close() + + cursor = self.cnx.cursor() + cursor.execute("SELECT * FROM fun1") + self.assertEqual(8, len(cursor.fetchall())) + + def test_insert_into_select_type2(self): + data = [('A',1),('B',2)] + cursor = self.cnx.cursor() + cursor.executemany("INSERT INTO fun1 SELECT CONCAT('VALUES(ab, cd)'," + "%s), b + %s FROM fun1", data) + cursor.close() + + cursor = self.cnx.cursor() + cursor.execute("SELECT * FROM fun1") + self.assertEqual(8, len(cursor.fetchall())) + + def test_insert_into_select_type3(self): + config = tests.get_mysql_config() + data = [('A',1),('B',2)] + cursor = self.cnx.cursor() + cursor.executemany("INSERT INTO `{0}`.`fun1` SELECT CONCAT('" + "VALUES(ab, cd)', %s), b + %s FROM fun1" + "".format(config["database"]), data) + cursor.close() + + cursor = self.cnx.cursor() + cursor.execute("SELECT * FROM fun1") + self.assertEqual(8, len(cursor.fetchall())) + + class BugOra21492815(tests.MySQLConnectorTests): """BUG#21492815: CALLPROC() HANGS WHEN CONSUME_RESULTS=TRUE """ From de81a7ada4ed9ad63aebdb8ce595ba26144de18e Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 2 Dec 2016 11:00:49 +0000 Subject: [PATCH 20/95] BUG21656282: Connection fails using unicode passwords with C extension The connector fails when using a password with unicode passwords with the C extension. This issue only occurs using Python 2. This patch fixes this issue by encoding the password when using Python 2. A test was added for regression. --- src/mysql_capi.c | 31 +++++++++++++++++++++------ tests/test_bugs.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 6 deletions(-) diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 41cece24..65970df3 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1025,10 +1025,9 @@ MySQL_commit(MySQL *self) PyObject* MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) { - char *host= NULL, *user= NULL, *password= NULL, *database= NULL, - *unix_socket= NULL; + char *host= NULL, *user= NULL, *database= NULL, *unix_socket= NULL; char *ssl_ca= NULL, *ssl_cert= NULL, *ssl_key= NULL; - PyObject *charset_name, *compress, *ssl_verify_cert; + PyObject *charset_name, *compress, *ssl_verify_cert, *password; const char* auth_plugin; unsigned long client_flags= 0; unsigned int port= 3306, tmp_uint; @@ -1045,7 +1044,11 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) NULL }; +#ifdef PY3 if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzzzkzkzzzO!O!", kwlist, +#else + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzOzkzkzzzO!O!", kwlist, +#endif &host, &user, &password, &database, &port, &unix_socket, &client_flags, @@ -1170,9 +1173,25 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) client_flags= client_flags & ~CLIENT_CONNECT_WITH_DB; } - res= mysql_real_connect(&self->session, - host, user, password, database, - port, unix_socket, client_flags); + +#ifdef PY3 + res= mysql_real_connect(&self->session, host, user, password, database, + port, unix_socket, client_flags); +#else + char* c_password; + if (PyUnicode_Check(password)) + { + PyObject* u_password= PyUnicode_AsUTF8String(password); + c_password= PyString_AsString(u_password); + Py_DECREF(u_password); + } + else + { + c_password= PyString_AsString(password); + } + res= mysql_real_connect(&self->session, host, user, c_password, database, + port, unix_socket, client_flags); +#endif Py_END_ALLOW_THREADS diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 0052f6c0..32ebd978 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4110,3 +4110,56 @@ def test_set(self): results.append(result.fetchall()) self.assertEqual(exp, results) cur.close() + + +@unittest.skipIf(not CMySQLConnection, ERR_NO_CEXT) +class BugOra21656282(tests.MySQLConnectorTests): + """BUG#21656282: CONNECT FAILURE WITH C-EXT WHEN PASSWORD CONTAINS UNICODE + CHARACTER + """ + def setUp(self): + config = tests.get_mysql_config() + self.cnx = connection.MySQLConnection(**config) + self.host = 'localhost' if config['unix_socket'] and os.name != 'nt' \ + else config['host'] + self.user = 'unicode_user' + self.password = u'步' + + # Use utf8mb4 character set + self.cnx.cmd_query("SET character_set_server='utf8mb4'") + + # Drop user if exists + self._drop_user(self.host, self.user) + + # Create the user with unicode password + create_user = (u"CREATE USER '{user}'@'{host}' IDENTIFIED BY " + u"'{password}'") + self.cnx.cmd_query(create_user.format(user=self.user, host=self.host, + password=self.password)) + + # Grant all to new user on database + grant = "GRANT ALL ON {database}.* TO '{user}'@'{host}'" + self.cnx.cmd_query(grant.format(database=config['database'], + user=self.user, host=self.host)) + + def tearDown(self): + self._drop_user(self.host, self.user) + + def _drop_user(self, host, user): + try: + drop_user = "DROP USER '{user}'@'{host}'" + self.cnx.cmd_query(drop_user.format(user=user, host=host)) + except errors.DatabaseError: + # It's OK when drop user fails + pass + + def test_unicode_password(self): + config = tests.get_mysql_config() + config['user'] = self.user + config['password'] = self.password + try: + cnx = CMySQLConnection(**config) + except: + self.fail('Failed using password with unicode characters') + else: + cnx.close() From 2d1a626b798f7dceba985231877770fdf86ad8b6 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 2 Dec 2016 11:14:54 +0000 Subject: [PATCH 21/95] BUG21530841: Select statement fails for results with more than 4096 columns Using SELECT statements having results with more than 4096 columns fails. MySQL has hard limit of 4096 columns per table, but when using table joins this number can increase. This patch fixes this issue by removing the test for maximum table columns. A test was added for regression. --- lib/mysql/connector/protocol.py | 2 -- tests/test_bugs.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index aec16b4b..6c75a0a9 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -227,8 +227,6 @@ def parse_column_count(self, packet): """Parse a MySQL packet with the number of columns in result set""" try: count = utils.read_lc_int(packet[4:])[1] - if count > MAX_MYSQL_TABLE_COLUMNS: - return None return count except (struct.error, ValueError): raise errors.InterfaceError("Failed parsing column count") diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 32ebd978..390b1b85 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4163,3 +4163,36 @@ def test_unicode_password(self): self.fail('Failed using password with unicode characters') else: cnx.close() + + +class BugOra21530841(tests.MySQLConnectorTests): + """BUG#21530841: SELECT FAILS WITH ILLEGAL RESULT SET ERROR WHEN COLUMN + COUNT IN RESULT > 4096 + """ + def setUp(self): + config = tests.get_mysql_config() + self.cnx = connection.MySQLConnection(**config) + self.tbl = "Bug21530841" + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) + + def tearDown(self): + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) + self.cnx.close() + + def test_big_column_count(self): + cur = self.cnx.cursor(raw=False, buffered=False) + # Create table with 512 Columns + table = "CREATE TABLE t ({0})".format( + ", ".join(["c{0} INT".format(idx) for idx in range(512)])) + cur.execute(table) + + # Insert 1 record + cur.execute("INSERT INTO t(c1) values (1) ") + self.cnx.commit() + + # Select from 10 tables + query = "SELECT * FROM {0} WHERE a1.c1 > 0".format( + ", ".join(["t a{0}".format(idx) for idx in range(10)])) + cur.execute(query) + cur.fetchone() + cur.close() From fa2374f89557d62235c21c2e602311f598be4dbb Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 2 Dec 2016 16:25:47 +0000 Subject: [PATCH 22/95] Fix segmentation fault when running test_ssl_cipher_in_option_file test --- src/mysql_capi.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 65970df3..1d2aaca0 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1032,6 +1032,7 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) unsigned long client_flags= 0; unsigned int port= 3306, tmp_uint; unsigned int protocol= 0; + unsigned int ssl_mode; my_bool abool; MYSQL *res; @@ -1118,7 +1119,8 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) #endif #if MYSQL_VERSION_ID >= 50711 { - mysql_options(&self->session, MYSQL_OPT_SSL_MODE, SSL_MODE_REQUIRED); + ssl_mode= SSL_MODE_REQUIRED; + mysql_options(&self->session, MYSQL_OPT_SSL_MODE, &ssl_mode); } #endif @@ -1126,7 +1128,8 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) { #if MYSQL_VERSION_ID >= 50711 { - mysql_options(&self->session, MYSQL_OPT_SSL_MODE, SSL_MODE_VERIFY_IDENTITY); + ssl_mode= SSL_MODE_VERIFY_IDENTITY; + mysql_options(&self->session, MYSQL_OPT_SSL_MODE, &ssl_mode); } #else { @@ -1147,7 +1150,8 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) #endif #if MYSQL_VERSION_ID >= 50711 { - mysql_options(&self->session, MYSQL_OPT_SSL_ENFORCE, SSL_MODE_DISABLED); + ssl_mode= SSL_MODE_DISABLED; + mysql_options(&self->session, MYSQL_OPT_SSL_MODE, &ssl_mode); } #endif } @@ -1173,6 +1177,10 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) client_flags= client_flags & ~CLIENT_CONNECT_WITH_DB; } + if (client_flags & CLIENT_LOCAL_FILES) { + abool= 1; + mysql_options(&self->session, MYSQL_OPT_LOCAL_INFILE, (unsigned int*)&abool); + } #ifdef PY3 res= mysql_real_connect(&self->session, host, user, password, database, From 9c6f49195559dc030722ef48cb184921e96972ba Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 2 Dec 2016 17:11:00 +0000 Subject: [PATCH 23/95] Update CHANGES.txt for release-2.1.5 --- CHANGES.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 20fc2c42..18112d17 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -12,6 +12,11 @@ v2.1.5 ====== - BUG#25111218: Fix duplicate logic for reading EOF packet +- BUG#21656282: Connection fails using unicode passwords with C extension +- BUG#21530841: Select statement fails for results with more than 4096 columns +- BUG#21530100: Fix reading option files +- BUG#21477493: Fix RE_SQL_INSERT_STMT to correctly match Insert Statement +- BUG#21476495: Fix set_charset_collation() for an invalid charset provided v2.1.4 ====== From 632b7a7e0f849f0cff6f4351d2a6eeaa23a184c4 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 9 Dec 2016 10:06:56 +0000 Subject: [PATCH 24/95] BUG25199131: A warning is thrown while installing the C extension When using MySQL server versions < 5.7.11, a warning is thrown about an unused variable while installing the C extension. This patch adds a check for the MySQL server version. --- src/mysql_capi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 1d2aaca0..e1f995bb 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1032,7 +1032,9 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) unsigned long client_flags= 0; unsigned int port= 3306, tmp_uint; unsigned int protocol= 0; - unsigned int ssl_mode; +#if MYSQL_VERSION_ID >= 50711 + unsigned int ssl_mode; +#endif my_bool abool; MYSQL *res; From cb5d73bc44315457d3739b5af359e6ed7778b38b Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Fri, 9 Dec 2016 15:37:35 +0530 Subject: [PATCH 25/95] BUG25215081: Remove dictionary comprehension lists Dictionary comprehension lists is not supported in python 2.6 which causes this error. Using the dict initializer with tuple works the same as dictionary comprehension lists and is also supported in python 2.6. --- lib/mysql/connector/optionfiles.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/mysql/connector/optionfiles.py b/lib/mysql/connector/optionfiles.py index d176b22b..d4e9c586 100644 --- a/lib/mysql/connector/optionfiles.py +++ b/lib/mysql/connector/optionfiles.py @@ -321,10 +321,10 @@ def get_groups_as_dict_with_priority(self, *args): # pylint: disable=C0103 options = dict() for group in args: try: - options[group] = {key: value for key, value in - self._options_dict[group].items() if - key != "__name__" and - not key.startswith("!")} + options[group] = dict((key, value,) for key, value in + self._options_dict[group].items() if + key != "__name__" and + not key.startswith("!")) except KeyError: pass @@ -346,10 +346,10 @@ def get_groups_as_dict(self, *args): options = dict() for group in args: try: - options[group] = {key: value[0] for key, value in - self._options_dict[group].items() if - key != "__name__" and - not key.startswith("!")} + options[group] = dict((key, value[0],) for key, value in + self._options_dict[group].items() if + key != "__name__" and + not key.startswith("!")) except KeyError: pass From f0a4cf443d695ccda1cfcc5e7c165833409b3f2a Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 14 Dec 2016 12:57:43 +0100 Subject: [PATCH 26/95] Updated wix buildfixes --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index f7eaad53..fdb6abd8 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit f7eaad530f25cf413ac7a5fee7c6332cababf04b +Subproject commit fdb6abd890daf27b37f4a29fcd2ad4ded6d28ad6 From 60b283df7b6c00b13b22748f03aeaef79a945d81 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 14 Dec 2016 13:55:09 +0100 Subject: [PATCH 27/95] Cpyint update --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index fdb6abd8..4eb351d1 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit fdb6abd890daf27b37f4a29fcd2ad4ded6d28ad6 +Subproject commit 4eb351d1a4d9a7978efc9766c70bee3c043837e0 From baa1419761484c31bb7c472b5f7435d1cc9a8b54 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 17 Mar 2017 17:56:29 +0000 Subject: [PATCH 28/95] BUG19685386: C extension tests are failing using MySQL 5.7.4 This patch fixes bugs.BugOra16217765.test_sha256_nonssl, style.LintTests.test_lint and other tests that were failing using MySQL 5.7.4. --- lib/mysql/connector/abstracts.py | 9 +++- lib/mysql/connector/connection.py | 13 ++++-- lib/mysql/connector/connection_cext.py | 9 ++-- lib/mysql/connector/constants.py | 4 +- lib/mysql/connector/cursor.py | 10 +++-- lib/mysql/connector/cursor_cext.py | 10 ++--- lib/mysql/connector/fabric/__init__.py | 20 ++++----- lib/mysql/connector/fabric/caching.py | 20 +++++---- lib/mysql/connector/fabric/connection.py | 57 ++++++++++++------------ lib/mysql/connector/locales/__init__.py | 3 +- lib/mysql/connector/network.py | 10 ++--- lib/mysql/connector/protocol.py | 14 +++--- src/mysql_capi.c | 30 +++++++++++-- support/style/pylint.rc | 3 +- tests/cext/test_cext_api.py | 2 + tests/test_abstracts.py | 10 ++++- tests/test_bugs.py | 5 ++- 17 files changed, 142 insertions(+), 87 deletions(-) diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index c83a5271..8eaad48d 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -231,6 +231,13 @@ def config(self, **kwargs): except KeyError: self._consume_results = False + # Configure auth_plugin + try: + self._auth_plugin = config['auth_plugin'] + del config['auth_plugin'] + except KeyError: + self._auth_plugin = '' + # Configure character set and collation if 'charset' in config or 'collation' in config: try: diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 453c73e6..b5c9d4b7 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -184,6 +184,7 @@ def _get_connection(self, prtcls=None): Returns subclass of MySQLBaseSocket. """ + # pylint: disable=R0204 conn = None if self.unix_socket and os.name != 'nt': conn = MySQLUnixSocket(unix_socket=self.unix_socket) @@ -191,6 +192,7 @@ def _get_connection(self, prtcls=None): conn = MySQLTCPSocket(host=self.server_host, port=self.server_port, force_ipv6=self._force_ipv6) + # pylint: enable=R0204 conn.set_connection_timeout(self._connection_timeout) return conn @@ -440,14 +442,17 @@ def get_rows(self, count=None, binary=False, columns=None): rows = self._protocol.read_binary_result( self._socket, columns, count) else: - rows = self._protocol.read_text_result(self._socket, self._server_version, count=count) + rows = self._protocol.read_text_result(self._socket, + self._server_version, + count=count) except errors.Error as err: self.unread_result = False raise err if rows[-1] is not None: - ek = rows[-1] # OK or EOF - self._handle_server_status(ek['status_flag'] if 'status_flag' in ek else ek['server_status']) + row = rows[-1] # OK or EOF + self._handle_server_status(row['status_flag'] if 'status_flag' in + row else row['server_status']) self.unread_result = False return rows diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index 9c00a9ac..e89e723c 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -54,6 +54,7 @@ HAVE_CMYSQL = True # pylint: enable=F0401,C0413 + class CMySQLConnection(MySQLConnectionAbstract): """Class initiating a MySQL Connection using Connector/C""" @@ -139,8 +140,7 @@ def in_transaction(self): def _open_connection(self): charset_name = CharacterSet.get_info(self._charset_id)[0] - - self._cmysql = _mysql_connector.MySQL( + self._cmysql = _mysql_connector.MySQL( # pylint: disable=E1101 buffered=self._buffered, raw=self._raw, charset_name=charset_name, @@ -260,6 +260,7 @@ def get_rows(self, count=None, binary=False, columns=None): raise AttributeError("count should be 1 or higher, or None") counter = 0 + # pylint: disable=R0204 try: row = self._cmysql.fetch_row() while row: @@ -278,7 +279,7 @@ def get_rows(self, count=None, binary=False, columns=None): self.free_result() raise errors.get_mysql_exception(msg=exc.msg, errno=exc.errno, sqlstate=exc.sqlstate) - + # pylint: enable=R0204 return rows def get_row(self, binary=False, columns=None): diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index 8d27cb03..709e675b 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -686,7 +686,7 @@ def get_supported(cls): return tuple(res) -class SQLMode(_Constants): # pylint: disable=R0921 +class SQLMode(_Constants): """MySQL SQL Modes The numeric values of SQL Modes are not interesting, only the names diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 09b7b544..8bcd919f 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -41,7 +41,7 @@ re.I | re.M | re.S) RE_SQL_INSERT_STMT = re.compile( r"({0}|\s)*INSERT({0}|\s)*INTO\s+[`'\"]?.+[`'\"]?(?:\.[`'\"]?.+[`'\"]?)" - "{{0,2}}\s+VALUES\s*\(.+(?:\s*,.+)*\)".format(SQL_COMMENT), + r"{{0,2}}\s+VALUES\s*\(.+(?:\s*,.+)*\)".format(SQL_COMMENT), re.I | re.M | re.S) RE_SQL_INSERT_VALUES = re.compile(r'.*VALUES\s*(\(.*\)).*', re.I | re.M | re.S) RE_PY_PARAM = re.compile(b'(%s)') @@ -97,6 +97,7 @@ def _bytestr_format_dict(bytestr, value_dict): b'x=%(y)s y=%(x)s' """ def replace(matchobj): + """Replace pattern.""" value = None groups = matchobj.groupdict() if groups["conversion_type"] == b"%": @@ -112,6 +113,7 @@ def replace(matchobj): return RE_PY_MAPPING_PARAM.sub(replace, bytestr.decode("utf-8") if PY2 else bytestr) + class CursorBase(MySQLCursorAbstract): """ Base for defining MySQLCursor. This class is a skeleton and defines @@ -749,10 +751,12 @@ def callproc(self, procname, args=()): can_consume_results = self._connection._consume_results for result in self._connection.cmd_query_iter(call): self._connection._consume_results = False + # pylint: disable=R0204 if self._raw: tmp = MySQLCursorBufferedRaw(self._connection._get_self()) else: tmp = MySQLCursorBuffered(self._connection._get_self()) + # pylint: enable=R0204 tmp._executed = "(a result of {0})".format(call) tmp._handle_result(result) if tmp._warnings is not None: @@ -760,7 +764,7 @@ def callproc(self, procname, args=()): if 'columns' in result: results.append(tmp) self._connection._consume_results = can_consume_results - #pylint: enable=W0212 + # pylint: enable=W0212 if argnames: select = "SELECT {0}".format(','.join(argtypes)) diff --git a/lib/mysql/connector/cursor_cext.py b/lib/mysql/connector/cursor_cext.py index 4dd6e9a1..90aaebbf 100644 --- a/lib/mysql/connector/cursor_cext.py +++ b/lib/mysql/connector/cursor_cext.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -28,6 +28,8 @@ import re import weakref +from _mysql_connector import MySQLInterfaceError # pylint: disable=F0401,E0611 + from .abstracts import MySQLConnectionAbstract, MySQLCursorAbstract from .catch23 import PY2, isunicode from . import errors @@ -39,7 +41,6 @@ RE_SQL_SPLIT_STMTS ) -from _mysql_connector import MySQLInterfaceError # pylint: disable=F0401 class _ParamSubstitutor(object): @@ -429,14 +430,14 @@ def callproc(self, procname, args=()): results = [] while self._cnx.result_set_available: result = self._cnx.fetch_eof_columns() - # pylint: disable=W0212 + # pylint: disable=W0212,R0204 if self._raw: cur = CMySQLCursorBufferedRaw(self._cnx._get_self()) else: cur = CMySQLCursorBuffered(self._cnx._get_self()) cur._executed = "(a result of {0})".format(call) cur._handle_result(result) - # pylint: enable=W0212 + # pylint: enable=W0212,R0204 results.append(cur) self._cnx.next_result() self._stored_results = results @@ -807,4 +808,3 @@ def __init__(self, connection): super(CMySQLCursorPrepared, self).__init__(connection) raise NotImplementedError( "Alternative: Use connection.MySQLCursorPrepared") - diff --git a/lib/mysql/connector/fabric/__init__.py b/lib/mysql/connector/fabric/__init__.py index b3d6a06c..c88fe033 100644 --- a/lib/mysql/connector/fabric/__init__.py +++ b/lib/mysql/connector/fabric/__init__.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -26,6 +26,15 @@ from collections import namedtuple +from .connection import ( + MODE_READONLY, MODE_READWRITE, + STATUS_PRIMARY, STATUS_SECONDARY, + SCOPE_GLOBAL, SCOPE_LOCAL, + Fabric, FabricConnection, + MySQLFabricConnection, + FabricSet, +) + # Order of field_names must match how Fabric is returning the data FabricMySQLServer = namedtuple( 'FabricMySQLServer', @@ -39,15 +48,6 @@ 'shard', 'shard_type', 'group', 'global_group'] ) -from .connection import ( - MODE_READONLY, MODE_READWRITE, - STATUS_PRIMARY, STATUS_SECONDARY, - SCOPE_GLOBAL, SCOPE_LOCAL, - Fabric, FabricConnection, - MySQLFabricConnection, - FabricSet, -) - def connect(**kwargs): """Create a MySQLFabricConnection object""" diff --git a/lib/mysql/connector/fabric/caching.py b/lib/mysql/connector/fabric/caching.py index a24d6b1c..9073498b 100644 --- a/lib/mysql/connector/fabric/caching.py +++ b/lib/mysql/connector/fabric/caching.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -116,32 +116,33 @@ def __getattr__(self, attr): def add_partition(self, key, group): """Add sharding information for a group""" if self.shard_type == 'RANGE': - key = int(key) + _key = int(key) elif self.shard_type == 'RANGE_DATETIME': try: if ':' in key: - key = datetime.strptime(key, "%Y-%m-%d %H:%M:%S") + # pylint: disable=R0204 + _key = datetime.strptime(key, "%Y-%m-%d %H:%M:%S") else: - key = datetime.strptime(key, "%Y-%m-%d").date() + _key = datetime.strptime(key, "%Y-%m-%d").date() except: raise ValueError( "RANGE_DATETIME key could not be parsed, was: {0}".format( key )) elif self.shard_type == 'RANGE_STRING': - pass + _key = key elif self.shard_type == "HASH": - pass + _key = key else: raise ValueError("Unsupported sharding type {0}".format( self.shard_type )) - self.partitioning[key] = { + self.partitioning[_key] = { 'group': group, } self.reset_ttl() - bisect.insort_right(self.keys, key) - insort_right_rev(self.keys_reversed, key) + bisect.insort_right(self.keys, _key) + insort_right_rev(self.keys_reversed, _key) @classmethod def hash_index(cls, part1, part2=None): @@ -175,6 +176,7 @@ def __repr__(self): group=self.group_name, ) + class FabricCache(object): """Singleton class for caching Fabric data diff --git a/lib/mysql/connector/fabric/connection.py b/lib/mysql/connector/fabric/connection.py index 44da1752..7e2f6577 100644 --- a/lib/mysql/connector/fabric/connection.py +++ b/lib/mysql/connector/fabric/connection.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -27,13 +27,34 @@ import datetime import time import uuid -from base64 import b16decode -from bisect import bisect -from hashlib import md5 import logging import socket import collections +from base64 import b16decode +from bisect import bisect +from hashlib import md5 + +import mysql.connector + +from ..connection import MySQLConnection +from ..conversion import MySQLConverter +from ..pooling import MySQLConnectionPool +from ..errors import ( + Error, InterfaceError, NotSupportedError, MySQLFabricError, InternalError, + DatabaseError +) +from ..cursor import ( + MySQLCursor, MySQLCursorBuffered, + MySQLCursorRaw, MySQLCursorBufferedRaw +) +from .. import errorcode +from . import FabricMySQLServer, FabricShard +from .caching import FabricCache +from .balancing import WeightedRoundRobin +from .. import version +from ..catch23 import PY2, isunicode, UNICODE_TYPES + # pylint: disable=F0401,E0611 try: from xmlrpclib import Fault, ServerProxy, Transport @@ -47,7 +68,7 @@ if sys.version_info[0] == 2: try: - from httplib import HTTPSConnection + from httplib import HTTPSConnection # pylint: disable=C0412 except ImportError: HAVE_SSL = False else: @@ -59,26 +80,7 @@ HAVE_SSL = False else: HAVE_SSL = True -# pylint: enable=F0401,E0611 -import mysql.connector -from ..connection import MySQLConnection -from ..conversion import MySQLConverter -from ..pooling import MySQLConnectionPool -from ..errors import ( - Error, InterfaceError, NotSupportedError, MySQLFabricError, InternalError, - DatabaseError -) -from ..cursor import ( - MySQLCursor, MySQLCursorBuffered, - MySQLCursorRaw, MySQLCursorBufferedRaw -) -from .. import errorcode -from . import FabricMySQLServer, FabricShard -from .caching import FabricCache -from .balancing import WeightedRoundRobin -from .. import version -from ..catch23 import PY2, isunicode, UNICODE_TYPES RESET_CACHE_ON_ERROR = ( errorcode.CR_SERVER_LOST, @@ -213,8 +215,7 @@ def create_params(self, *args, **kwargs): kwargs = self._process_params_dict(kwargs) params.extend(kwargs) - params = ', '.join(params) - return params + return ', '.join(params) def execute(self, group, command, *args, **kwargs): """Executes the given command with MySQL protocol @@ -460,7 +461,7 @@ def __init__(self, ssl_config): #pylint: disable=E1002 if PY2: urllib2.HTTPSHandler.__init__(self) else: - super().__init__() # pylint: disable=W0104 + super().__init__() # pylint: disable=W0104,E1004 self._ssl_config = ssl_config def https_open(self, req): @@ -488,7 +489,7 @@ def __init__(self, username, password, #pylint: disable=E1002 if PY2: Transport.__init__(self, use_datetime=False) else: - super().__init__(use_datetime=False) + super().__init__(use_datetime=False) # pylint: disable=E1004 self._username = username self._password = password self._use_datetime = use_datetime diff --git a/lib/mysql/connector/locales/__init__.py b/lib/mysql/connector/locales/__init__.py index ad784e63..cd5e54f8 100644 --- a/lib/mysql/connector/locales/__init__.py +++ b/lib/mysql/connector/locales/__init__.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -68,4 +68,3 @@ def get_client_error(error, language='eng'): return None raise ValueError("error argument needs to be either an integer or string") - diff --git a/lib/mysql/connector/network.py b/lib/mysql/connector/network.py index 1ef55a3b..7c097b79 100644 --- a/lib/mysql/connector/network.py +++ b/lib/mysql/connector/network.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -168,9 +168,9 @@ def send_compressed(self, buf, packet_number=None, tmpbuf = bytearray() for pkt in pkts: tmpbuf += pkt - tmpbuf = buffer(tmpbuf) # pylint: disable=E0602 + tmpbuf = buffer(tmpbuf) # pylint: disable=E0602,R0204 else: - tmpbuf = b''.join(pkts) + tmpbuf = b''.join(pkts) # pylint: disable=R0204 del pkts zbuf = zlib.compress(tmpbuf[:16384]) header = (struct.pack(' maxpktlen: zbuf = zlib.compress(tmpbuf[:maxpktlen]) header = (struct.pack(', like most @@ -29,7 +29,7 @@ from decimal import Decimal from .constants import ( - FieldFlag, ServerCmd, FieldType, ClientFlag, MAX_MYSQL_TABLE_COLUMNS) + FieldFlag, ServerCmd, FieldType, ClientFlag) from . import errors, utils from .authentication import get_auth_plugin from .catch23 import PY2, struct_unpack @@ -61,7 +61,7 @@ def _auth_response(self, client_flags, username, password, database, ssl_enabled=ssl_enabled) plugin_auth_response = auth.auth_response() except (TypeError, errors.InterfaceError) as exc: - raise errors.ProgrammingError( + raise errors.InterfaceError( "Failed authentication: {0}".format(str(exc))) if client_flags & ClientFlag.SECURE_CONNECTION: @@ -90,7 +90,7 @@ def make_auth(self, handshake, username=None, password=None, database=None, username_bytes = username.encode('utf8') # pylint: disable=E1103 except AttributeError: # Username is already bytes - username_bytes = username + username_bytes = username # pylint: disable=R0204 packet = struct.pack(', like most @@ -363,7 +363,7 @@ MySQL_init(MySQL *self, PyObject *args, PyObject *kwds) // Initialization expect -1 when parsing arguments failed if (!PyArg_ParseTupleAndKeywords(args, kwds, - "|O!O!O!O!O!O", kwlist, + "|O!O!O!O!O!O!", kwlist, &PyBool_Type, &self->buffered_at_connect, &PyBool_Type, &self->raw_at_connect, &PyStringType, &self->charset_name, @@ -393,6 +393,10 @@ MySQL_init(MySQL *self, PyObject *args, PyObject *kwds) if (auth_plugin) { + if (strcmp(PyStringAsString(auth_plugin), "") == 0) + { + auth_plugin= Py_None; + } if (auth_plugin != Py_None) { tmp= self->auth_plugin; @@ -1036,6 +1040,7 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) unsigned int ssl_mode; #endif my_bool abool; + my_bool ssl_enabled= 0; MYSQL *res; static char *kwlist[]= @@ -1112,8 +1117,8 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) mysql_options(&self->session, MYSQL_OPT_WRITE_TIMEOUT, (char*)&tmp_uint); if (ssl_ca || ssl_cert || ssl_key) { + ssl_enabled= 1; #if MYSQL_VERSION_ID > 50703 && MYSQL_VERSION_ID < 50711 - printf(">>>> %d\n", MYSQL_VERSION_ID); { abool= 1; mysql_options(&self->session, MYSQL_OPT_SSL_ENFORCE, (char*)&abool); @@ -1158,9 +1163,27 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) #endif } + Py_END_ALLOW_THREADS if (PyString_Check(self->auth_plugin)) { auth_plugin= PyStringAsString(self->auth_plugin); mysql_options(&self->session, MYSQL_DEFAULT_AUTH, auth_plugin); + if (strcmp(auth_plugin, "sha256_password") == 0 && !ssl_enabled) + { + PyObject *exc_type= MySQLInterfaceError; + PyObject *err_no= PyInt_FromLong(2002); + PyObject *err_msg= PyStringFromString("sha256_password requires SSL"); + PyObject *err_obj= NULL; + err_obj= PyObject_CallFunctionObjArgs(exc_type, err_msg, NULL); + PyObject_SetAttr(err_obj, PyStringFromString("sqlstate"), Py_None); + PyObject_SetAttr(err_obj, PyStringFromString("errno"), err_no); + PyObject_SetAttr(err_obj, PyStringFromString("msg"), err_msg); + PyErr_SetObject(exc_type, err_obj); + Py_XDECREF(exc_type); + Py_XDECREF(err_no); + Py_XDECREF(err_msg); + return NULL; + } + if (strcmp(auth_plugin, "mysql_clear_password") == 0) { abool= 1; @@ -1168,6 +1191,7 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) (char*)&abool); } } + Py_BEGIN_ALLOW_THREADS if (database && strlen(database) == 0) { diff --git a/support/style/pylint.rc b/support/style/pylint.rc index 7af1b422..e9d40125 100644 --- a/support/style/pylint.rc +++ b/support/style/pylint.rc @@ -9,7 +9,7 @@ load-plugins= [MESSAGES CONTROL] #enable= -disable=W0702,W0142,R0902,R0903,R0904,R0911,R0913,R0914,R0915,W0613,R0201,I0011,R0922,I0012 +disable=W0702,W0142,R0902,R0903,R0904,R0911,R0913,R0914,R0915,W0613,R0201,I0011,R0922,I0012,W1202 [REPORTS] @@ -81,6 +81,7 @@ max-parents=7 max-attributes=7 min-public-methods=2 max-public-methods=20 +max-nested-blocks=7 [IMPORTS] diff --git a/tests/cext/test_cext_api.py b/tests/cext/test_cext_api.py index fff08ed9..3a2cf741 100644 --- a/tests/cext/test_cext_api.py +++ b/tests/cext/test_cext_api.py @@ -529,6 +529,8 @@ def test_set_character_set(self): cmy1.set_character_set('big5') self.assertEqual(exp, get_variables(cmy1, variables=variables)) + @unittest.skipIf(tests.MYSQL_VERSION == (5, 7, 4), + "test_get_ssl_cipher not tested with MySQL version 5.7.4") def test_get_ssl_cipher(self): cmy1 = MySQL(buffered=True) self.assertRaises(MySQLInterfaceError, cmy1.get_ssl_cipher) diff --git a/tests/test_abstracts.py b/tests/test_abstracts.py index ca376e46..662ac222 100644 --- a/tests/test_abstracts.py +++ b/tests/test_abstracts.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -194,7 +194,13 @@ def test_cmd_refresh(self): exp = {'insert_id': 0, 'affected_rows': 0, 'field_count': 0, 'warning_count': 0, 'status_flag': 0} - self.assertEqual(exp, self.cnx.cmd_refresh(refresh)) + result = self.cnx.cmd_refresh(refresh) + for key in set(result.keys()) ^ set(exp.keys()): + try: + del result[key] + except KeyError: + del exp[key] + self.assertEqual(exp, result) query = "SHOW GLOBAL STATUS LIKE 'Uptime_since_flush_status'" pre_flush = int(self.cnx.info_query(query)[1]) diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 390b1b85..43de0dd6 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -62,6 +62,8 @@ ERR_NO_CEXT = "C Extension not available" +@unittest.skipIf(tests.MYSQL_VERSION == (5, 7, 4), + "Bug328998 not tested with MySQL version 5.7.4") class Bug328998Tests(tests.MySQLConnectorTests): """Tests where connection timeout has been set""" @@ -2381,6 +2383,7 @@ def test_sha256_nonssl(self): user = self.users['sha256user'] config['user'] = user['username'] config['password'] = user['password'] + config['auth_plugin'] = user['auth_plugin'] self.assertRaises(errors.InterfaceError, connection.MySQLConnection, **config) if CMySQLConnection: From b92eab204fd4bcd46b43b936f14f407bd99f0fe2 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Wed, 15 Mar 2017 23:05:20 +0000 Subject: [PATCH 29/95] BUG25726671: Fix compatibility issues with the latest Django versions This patch fixes some compatibility issues with the latest Django versions. The following bugs were also fixed: BUG25349918: Add proxy methods for Django 1.9+ operations - Methods for filtering time and datetime fields sql were changed in Django 1.9 from `value_to_db_datetime` to `adapt_datetimefield_value` and from `value_to_db_time` to `adapt_timefield_value`. Proxy methods were added to ensure compatibility. BUG25349912: Bug fix for incorrect Django introspection type - Removed extra encapsulation from get_constraints for foreign key parameter. BUG25349897: Fix Django 1.9 bulk insert compatibility - Added support for database backend API change introduced in Django 1.9 for `bulk_insert_sql` method. Connector/Python now only supports Django 1.8+. Test cases were added for regression. --- lib/mysql/connector/django/introspection.py | 5 +- lib/mysql/connector/django/operations.py | 20 +++- tests/test_django.py | 103 +++++++++++++++----- 3 files changed, 100 insertions(+), 28 deletions(-) diff --git a/lib/mysql/connector/django/introspection.py b/lib/mysql/connector/django/introspection.py index 77e55031..35b30182 100644 --- a/lib/mysql/connector/django/introspection.py +++ b/lib/mysql/connector/django/introspection.py @@ -279,9 +279,8 @@ def get_constraints(self, cursor, table_name): 'unique': False, 'index': False, 'check': False, - 'foreign_key': ( - (ref_table, ref_column) if ref_column else None, - ) + 'foreign_key': \ + (ref_table, ref_column) if ref_column else None } constraints[constraint]['columns'].add(column) # Now get the constraint types diff --git a/lib/mysql/connector/django/operations.py b/lib/mysql/connector/django/operations.py index 127750db..8b232906 100644 --- a/lib/mysql/connector/django/operations.py +++ b/lib/mysql/connector/django/operations.py @@ -185,6 +185,10 @@ def validate_autopk_value(self, value): 'value for AutoField.') return value + if django.VERSION > (1, 8): + def adapt_datetimefield_value(self, value): + return self.value_to_db_datetime(value) + def value_to_db_datetime(self, value): if value is None: return None @@ -202,6 +206,10 @@ def value_to_db_datetime(self, value): return datetime_to_mysql(value) return self.connection.converter.to_mysql(value) + if django.VERSION > (1, 8): + def adapt_timefield_value(self, value): + return self.value_to_db_time(value) + def value_to_db_time(self, value): if value is None: return None @@ -218,9 +226,15 @@ def value_to_db_time(self, value): def max_name_length(self): return 64 - def bulk_insert_sql(self, fields, num_values): - items_sql = "({0})".format(", ".join(["%s"] * len(fields))) - return "VALUES " + ", ".join([items_sql] * num_values) + if django.VERSION < (1, 9): + def bulk_insert_sql(self, fields, num_values): + items_sql = "({0})".format(", ".join(["%s"] * len(fields))) + return "VALUES " + ", ".join([items_sql] * num_values) + else: + def bulk_insert_sql(self, fields, placeholder_rows): + placeholder_rows_sql = (", ".join(row) for row in placeholder_rows) + values_sql = ", ".join("({0})".format(sql) for sql in placeholder_rows_sql) + return "VALUES " + values_sql if django.VERSION < (1, 8): def year_lookup_bounds(self, value): diff --git a/tests/test_django.py b/tests/test_django.py index 45c2b138..6a94f3b4 100644 --- a/tests/test_django.py +++ b/tests/test_django.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -60,6 +60,7 @@ 'TEST_COLLATION': 'utf8_general_ci', 'CONN_MAX_AGE': 0, 'AUTOCOMMIT': True, + 'TIME_ZONE': None, }, } settings.SECRET_KEY = "django_tests_secret_key" @@ -92,15 +93,11 @@ # Have to load django.db to make importing db backend work for Django < 1.6 import django.db # pylint: disable=W0611 -if tests.DJANGO_VERSION >= (1, 6): - if tests.DJANGO_VERSION >= (1, 8): - from django.db.backends.base.introspection import FieldInfo - else: - from django.db.backends import FieldInfo from django.db.backends.signals import connection_created from django.utils.safestring import SafeBytes, SafeText import mysql.connector +from mysql.connector.django.introspection import FieldInfo if DJANGO_AVAILABLE: from mysql.connector.django.base import ( @@ -147,14 +144,14 @@ def tearDownClass(cls): def test_get_table_list(self): cur = self.cnx.cursor() - exp = list(TABLES.keys()) - for exp in list(TABLES.keys()): + for exp in TABLES.keys(): if sys.version_info < (2, 7): self.assertTrue(exp in self.introspect.get_table_list(cur)) else: - self.assertIn(exp, self.introspect.get_table_list(cur), - "Table {table_name} not in table list".format( - table_name=exp)) + res = any(table.name == exp + for table in self.introspect.get_table_list(cur)) + self.assertTrue(res, "Table {table_name} not in table list" + "".format(table_name=exp)) def test_get_table_description(self): cur = self.cnx.cursor() @@ -165,24 +162,39 @@ def test_get_table_description(self): ('c1', 3, None, None, None, None, 1, 16392), ('c2', 253, None, 20, None, None, 1, 16388) ] - else: + elif tests.DJANGO_VERSION < (1, 8): exp = [ - FieldInfo(name='id', type_code=3, display_size=None, + FieldInfo(name=u'id', type_code=3, display_size=None, internal_size=None, precision=None, scale=None, null_ok=0), - FieldInfo(name='c1', type_code=3, display_size=None, + FieldInfo(name=u'c1', type_code=3, display_size=None, internal_size=None, precision=None, scale=None, null_ok=1), - FieldInfo(name='c2', type_code=253, display_size=None, + FieldInfo(name=u'c2', type_code=253, display_size=None, internal_size=20, precision=None, scale=None, null_ok=1) ] + else: + exp = [ + FieldInfo(name=u'id', type_code=3, display_size=None, + internal_size=None, precision=10, scale=None, + null_ok=0, extra=u'auto_increment'), + FieldInfo(name=u'c1', type_code=3, display_size=None, + internal_size=None, precision=10, scale=None, + null_ok=1, extra=u''), + FieldInfo(name=u'c2', type_code=253, display_size=None, + internal_size=20, precision=None, scale=None, + null_ok=1, extra=u'') + ] res = self.introspect.get_table_description(cur, 'django_t1') self.assertEqual(exp, res) def test_get_relations(self): cur = self.cnx.cursor() - exp = {1: (0, 'django_t1')} + if tests.DJANGO_VERSION < (1, 8): + exp = {1: (0, 'django_t1')} + else: + exp = {u'id_t1': (u'id', u'django_t1')} self.assertEqual(exp, self.introspect.get_relations(cur, 'django_t2')) def test_get_key_columns(self): @@ -204,6 +216,30 @@ def test_get_primary_key_column(self): res = self.introspect.get_primary_key_column(cur, 'django_t1') self.assertEqual('id', res) + def test_get_constraints(self): + cur = self.cnx.cursor() + exp = { + 'PRIMARY': {'check': False, + 'columns': ['id'], + 'foreign_key': None, + 'index': True, + 'primary_key': True, + 'unique': True}, + 'django_t2_ibfk_1': {'check': False, + 'columns': ['id_t1'], + 'foreign_key': ('django_t1', 'id'), + 'index': False, + 'primary_key': False, + 'unique': False}, + 'id_t1': {'check': False, + 'columns': ['id_t1'], + 'foreign_key': None, + 'index': True, + 'primary_key': False, + 'unique': False} + } + self.assertEqual( + exp, self.introspect.get_constraints(cur, 'django_t2')) @unittest.skipIf(not DJANGO_AVAILABLE, "Django not available") class DjangoDatabaseWrapper(tests.MySQLConnectorTests): @@ -277,26 +313,49 @@ def setUp(self): self.dbo = DatabaseOperations(self.cnx) def test_value_to_db_time(self): - self.assertEqual(None, self.dbo.value_to_db_time(None)) + if tests.DJANGO_VERSION < (1, 9): + value_to_db_time = self.dbo.value_to_db_time + else: + value_to_db_time = self.dbo.adapt_timefield_value + + self.assertEqual(None, value_to_db_time(None)) value = datetime.time(0, 0, 0) exp = self.conn.converter._time_to_mysql(value) - self.assertEqual(exp, self.dbo.value_to_db_time(value)) + self.assertEqual(exp, value_to_db_time(value)) value = datetime.time(2, 5, 7) exp = self.conn.converter._time_to_mysql(value) - self.assertEqual(exp, self.dbo.value_to_db_time(value)) + self.assertEqual(exp, value_to_db_time(value)) def test_value_to_db_datetime(self): - self.assertEqual(None, self.dbo.value_to_db_datetime(None)) + if tests.DJANGO_VERSION < (1, 9): + value_to_db_datetime = self.dbo.value_to_db_datetime + else: + value_to_db_datetime = self.dbo.adapt_datetimefield_value + + self.assertEqual(None, value_to_db_datetime(None)) value = datetime.datetime(1, 1, 1) exp = self.conn.converter._datetime_to_mysql(value) - self.assertEqual(exp, self.dbo.value_to_db_datetime(value)) + self.assertEqual(exp, value_to_db_datetime(value)) value = datetime.datetime(2, 5, 7, 10, 10) exp = self.conn.converter._datetime_to_mysql(value) - self.assertEqual(exp, self.dbo.value_to_db_datetime(value)) + self.assertEqual(exp, value_to_db_datetime(value)) + + def test_bulk_insert_sql(self): + num_values = 5 + fields = ["col1", "col2", "col3"] + placeholder_rows = [["%s"] * len(fields) for _ in range(num_values)] + exp = "VALUES {0}".format(", ".join( + ["({0})".format(", ".join(["%s"] * len(fields)))] * num_values)) + if tests.DJANGO_VERSION < (1, 9): + self.assertEqual( + exp, self.dbo.bulk_insert_sql(fields, num_values)) + else: + self.assertEqual( + exp, self.dbo.bulk_insert_sql(fields, placeholder_rows)) class DjangoMySQLConverterTests(tests.MySQLConnectorTests): From dc138a999b88a69de0897a2d478b48433dbd0fa2 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 17 Mar 2017 18:28:31 +0000 Subject: [PATCH 30/95] BUG22476689: Importing world.sql fails with cext enabled This patch fixes the importing of world.sql with the C extension enabled. A test was added for regression. --- lib/mysql/connector/cursor_cext.py | 5 ++++- tests/cext/test_cext_cursor.py | 25 ++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/mysql/connector/cursor_cext.py b/lib/mysql/connector/cursor_cext.py index 90aaebbf..df5fed39 100644 --- a/lib/mysql/connector/cursor_cext.py +++ b/lib/mysql/connector/cursor_cext.py @@ -205,7 +205,10 @@ def _execute_iter(self): if exc.errno != CR_NO_RESULT_SET: raise i += 1 - self._executed = executed_list[i].strip() + try: + self._executed = executed_list[i].strip() + except IndexError: + self._executed = executed_list[0] yield self return diff --git a/tests/cext/test_cext_cursor.py b/tests/cext/test_cext_cursor.py index 2584c575..ea809eeb 100644 --- a/tests/cext/test_cext_cursor.py +++ b/tests/cext/test_cext_cursor.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -29,6 +29,7 @@ import unittest from mysql.connector import errors, errorcode +from .. import PY2 import tests @@ -516,6 +517,28 @@ def tests_execute_multi(self): cur.close() self.cnx.rollback() + cur = self._get_cursor(self.cnx) + cur.execute("DROP PROCEDURE IF EXISTS multi_results") + procedure = ( + "CREATE PROCEDURE multi_results () " + "BEGIN SELECT 1; SELECT 'ham'; END" + ) + cur.execute(procedure) + stmt = "CALL multi_results()" + if not PY2: + stmt = b"CALL multi_results()" + exp_result = [[(1,)], [(u'ham',)]] + results = [] + for result in cur.execute(stmt, multi=True): + if result.with_rows: + self.assertEqual(stmt, result._executed) + results.append(result.fetchall()) + + self.assertEqual(exp_result, results) + cur.execute("DROP PROCEDURE multi_results") + + cur.close() + class CExtMySQLCursorBufferedTests(tests.CMySQLCursorTests): From d4921565f36830e064ce6b49ba9b03c77c2b5739 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 20 Mar 2017 14:02:52 +0530 Subject: [PATCH 31/95] BUG25397650: Verify server certificate only if ssl_verify_cert is True Setting ssl_verify_cert to False in CExt had no effect. If ssl_verify_cert is set to false, we don't pass the CA certificate to the C API, since passing CA certificate causes auto verification of the server certificate. Also, the CExt now throws InterfaceError instead of DatabaseError if server certificate verification failed to keep behaviour consistent with the Pure python connector. Tests added for regression. --- lib/mysql/connector/errors.py | 3 +- src/mysql_capi.c | 4 +- tests/data/ssl/generate.sh | 107 +++++++++++++++---- tests/data/ssl/tests_CA_cert.pem | 35 +++--- tests/data/ssl/tests_CA_key.pem | 50 ++++----- tests/data/ssl/tests_client_cert.pem | 77 ++++++++++--- tests/data/ssl/tests_client_key.pem | 50 ++++----- tests/data/ssl/tests_expired_server_cert.pem | 68 ++++++++++++ tests/data/ssl/tests_expired_server_key.pem | 27 +++++ tests/data/ssl/tests_server_cert.pem | 77 ++++++++++--- tests/data/ssl/tests_server_key.pem | 50 ++++----- tests/mysqld.py | 37 ++++--- tests/test_bugs.py | 71 ++++++++++++ unittests.py | 17 +-- 14 files changed, 511 insertions(+), 162 deletions(-) create mode 100644 tests/data/ssl/tests_expired_server_cert.pem create mode 100644 tests/data/ssl/tests_expired_server_key.pem diff --git a/lib/mysql/connector/errors.py b/lib/mysql/connector/errors.py index ea354f27..d2eedfb0 100644 --- a/lib/mysql/connector/errors.py +++ b/lib/mysql/connector/errors.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -301,4 +301,5 @@ class MySQLFabricError(Error): 2049: NotSupportedError, 2055: OperationalError, 2061: InterfaceError, + 2026: InterfaceError, } diff --git a/src/mysql_capi.c b/src/mysql_capi.c index ad04bba0..370cceb8 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1145,8 +1145,10 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (char*)&abool); } #endif + mysql_ssl_set(&self->session, ssl_key, ssl_cert, ssl_ca, NULL, NULL); + } else { + mysql_ssl_set(&self->session, ssl_key, ssl_cert, NULL, NULL, NULL); } - mysql_ssl_set(&self->session, ssl_key, ssl_cert, ssl_ca, NULL, NULL); } else { // Make sure to not enforce SSL #if MYSQL_VERSION_ID > 50703 && MYSQL_VERSION_ID < 50711 diff --git a/tests/data/ssl/generate.sh b/tests/data/ssl/generate.sh index 7cc7f25d..af736d42 100755 --- a/tests/data/ssl/generate.sh +++ b/tests/data/ssl/generate.sh @@ -1,6 +1,6 @@ #!/bin/sh # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -47,16 +47,58 @@ if [ ! -d $DESTDIR ]; then exit 2 fi +mkdir -p $DESTDIR/ca.db.certs # Signed certificates storage +touch $DESTDIR/ca.db.index # Index of signed certificates +echo 01 > $DESTDIR/ca.db.serial # Next (sequential) serial number + +# Configuration +cat>$DESTDIR/ca.conf<<'EOF' +[ ca ] +default_ca = ca_default + +[ ca_default ] +dir = REPLACE_LATER +certs = $dir +new_certs_dir = $dir/ca.db.certs +database = $dir/ca.db.index +serial = $dir/ca.db.serial +RANDFILE = $dir/ca.db.rand +certificate = $dir/ca.crt +private_key = $dir/ca.key +default_days = 365 +default_crl_days = 30 +default_md = md5 +preserve = no +policy = generic_policy +[ generic_policy ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional +EOF + +sed -i "s|REPLACE_LATER|$DESTDIR|" $DESTDIR/ca.conf + echo echo "Generating Root Certificate" echo -$OPENSSL genrsa 2048 > $DESTDIR/tests_CA_key.pem +$OPENSSL genrsa -out $DESTDIR/tests_CA_key.pem 2048 if [ $? -ne 0 ]; then exit 3 fi SUBJ="/OU=$OU Root CA/CN=MyConnPy Root CA" -$OPENSSL req -batch -new -x509 -nodes -days $DAYS -subj "$SUBJ" \ - -key $DESTDIR/tests_CA_key.pem -out $DESTDIR/tests_CA_cert.pem +$OPENSSL req -new -key $DESTDIR/tests_CA_key.pem \ + -out $DESTDIR/tests_CA_req.csr -subj "$SUBJ" +if [ $? -ne 0 ]; then + exit 3 +fi +$OPENSSL x509 -req -days $DAYS \ + -in $DESTDIR/tests_CA_req.csr \ + -out $DESTDIR/tests_CA_cert.pem \ + -signkey $DESTDIR/tests_CA_key.pem if [ $? -ne 0 ]; then exit 3 fi @@ -66,41 +108,64 @@ echo echo "Generating Server Certificate" echo SUBJ="/OU=$OU Server Cert/CN=localhost" -$OPENSSL req -batch -newkey rsa:2048 -days $DAYS -nodes -subj "$SUBJ" \ - -keyout $DESTDIR/tests_server_key.pem -out $DESTDIR/tests_server_req.pem +$OPENSSL genrsa -out $DESTDIR/tests_server_key.pem 2048 +if [ $? -ne 0 ]; then + exit 3 +fi +$OPENSSL req -new -key $DESTDIR/tests_server_key.pem \ + -out $DESTDIR/tests_server_req.csr -subj "$SUBJ" +if [ $? -ne 0 ]; then + exit 3 +fi +$OPENSSL ca -config $DESTDIR/ca.conf -in $DESTDIR/tests_server_req.csr \ + -cert $DESTDIR/tests_CA_cert.pem \ + -keyfile $DESTDIR/tests_CA_key.pem \ + -out $DESTDIR/tests_server_cert.pem -batch +if [ $? -ne 0 ]; then + exit 3 +fi + +# MySQL Expired Server Certificate: generate, remove passphrase, sign +echo +echo "Generating Expired Server Certificate" +echo +SUBJ="/OU=$OU Expired Server Cert/CN=localhost" +$OPENSSL genrsa -out $DESTDIR/tests_expired_server_key.pem 2048 if [ $? -ne 0 ]; then exit 3 fi -$OPENSSL rsa -in $DESTDIR/tests_server_key.pem \ - -out $DESTDIR/tests_server_key.pem +$OPENSSL req -new -key $DESTDIR/tests_expired_server_key.pem \ + -out $DESTDIR/tests_expired_server_req.csr -subj "$SUBJ" if [ $? -ne 0 ]; then exit 3 fi -$OPENSSL x509 -req -in $DESTDIR/tests_server_req.pem -days $DAYS \ - -CA $DESTDIR/tests_CA_cert.pem -CAkey $DESTDIR/tests_CA_key.pem \ - -set_serial 01 -out $DESTDIR/tests_server_cert.pem +$OPENSSL ca -config $DESTDIR/ca.conf -in $DESTDIR/tests_expired_server_req.csr \ + -cert $DESTDIR/tests_CA_cert.pem \ + -keyfile $DESTDIR/tests_CA_key.pem \ + -out $DESTDIR/tests_expired_server_cert.pem -batch \ + -startdate 120815080000Z -enddate 120815090000Z if [ $? -ne 0 ]; then exit 3 fi -# MySQL Client Certificate: generate, remove passphase, sign +# MySQL Client Certificate: generate, remove passphrase, sign echo echo "Generating Client Certificate" echo SUBJ="/OU=$OU Client Cert/CN=localhost" -$OPENSSL req -batch -newkey rsa:2048 -days $DAYS -nodes -subj "$SUBJ" \ - -keyout $DESTDIR/tests_client_key.pem -out $DESTDIR/tests_client_req.pem +$OPENSSL genrsa -out $DESTDIR/tests_client_key.pem 2048 if [ $? -ne 0 ]; then exit 3 fi -$OPENSSL rsa -in $DESTDIR/tests_client_key.pem \ - -out $DESTDIR/tests_client_key.pem +$OPENSSL req -new -key $DESTDIR/tests_client_key.pem \ + -out $DESTDIR/tests_client_req.csr -subj "$SUBJ" if [ $? -ne 0 ]; then exit 3 fi -$OPENSSL x509 -req -in $DESTDIR/tests_client_req.pem -days $DAYS \ - -CA $DESTDIR/tests_CA_cert.pem -CAkey $DESTDIR/tests_CA_key.pem \ - -set_serial 01 -out $DESTDIR/tests_client_cert.pem +$OPENSSL ca -config $DESTDIR/ca.conf -in $DESTDIR/tests_client_req.csr \ + -cert $DESTDIR/tests_CA_cert.pem \ + -keyfile $DESTDIR/tests_CA_key.pem \ + -out $DESTDIR/tests_client_cert.pem -batch if [ $? -ne 0 ]; then exit 3 fi @@ -109,5 +174,7 @@ fi echo echo "Cleaning up" echo -(cd $DESTDIR; rm tests_server_req.pem tests_client_req.pem) +(cd $DESTDIR; rm -rf tests_server_req.pem tests_client_req.pem \ + ca.db.certs ca.db.index* ca.db.serial* ca.conf tests_CA_req.csr \ + tests_server_req.csr tests_expired_server_req.csr tests_client_req.csr) diff --git a/tests/data/ssl/tests_CA_cert.pem b/tests/data/ssl/tests_CA_cert.pem index b2032c0e..6ce8c474 100644 --- a/tests/data/ssl/tests_CA_cert.pem +++ b/tests/data/ssl/tests_CA_cert.pem @@ -1,20 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDVzCCAj+gAwIBAgIJAIUsZ/vX9kOGMA0GCSqGSIb3DQEBBQUAMEIxJTAjBgNV -BAsMHE15U1FMQ29ubmVjdG9yUHl0aG9uIFJvb3QgQ0ExGTAXBgNVBAMMEE15Q29u -blB5IFJvb3QgQ0EwHhcNMTMwMzI2MTUzNTUyWhcNMjIwNDE0MTUzNTUyWjBCMSUw -IwYDVQQLDBxNeVNRTENvbm5lY3RvclB5dGhvbiBSb290IENBMRkwFwYDVQQDDBBN -eUNvbm5QeSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -qWcX9kD+b8c3hkPtPlIgwTsfGvhm/bJ64RHjCtQc2pi/fv9hlcryor8tWmdCCcw7 -ajg5n/QAIJ8crD5D0kheGEnWVI7dyVxZVfT3CiKuS+GBxuQP2ejJi4aDGh2McVv4 -aq1dXRqf2YWkM8PUjM0lzUD9MC9S4APtP6ux0TBhz5rv2ZWdg2EAjAl7Q56KM5m6 -odpF+Z1ExnfVpNzWnpvlYHJ+GhbVWb2F0NbqBTmz4OLEAxU/O2fo43dwVlHp+yNd -ib2V+VxeeyZmTt1CIeK6DStAiKdNLN5/N/+2FHZ9/XcA6qqxLFLeuTIySlPmuaX6 -u2C8tmOWp99TCUL+GZ2iBwIDAQABo1AwTjAdBgNVHQ4EFgQU1objOGh5rgtBTmjK -gPkN6SgXl64wHwYDVR0jBBgwFoAU1objOGh5rgtBTmjKgPkN6SgXl64wDAYDVR0T -BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAWgHZzUo8oGP7YxMn9YACdbipTRYU -IzGF+Cf0ueXktcEDbq7AIa6MsxXTp8pFOObvLiiecrMngYlqfHlYPL2HG+zOLDig -nmkO4pGwTqCDZHO4aYBdiVMlaxSpxMX9R/kFYRP1P4AGLOp66FirNO5iLNlTIjpf -PGebF+k0B1zUSUPsrZfa/d29XcJxBaw7aEOhARQYsymItasnTdcKvjZp1ahGnZYz -yCDtJjVbXK/4qEtiSA4qcV1HrNuHmhZEwWahntLqo++x3oLK7DrWfHwTX5gHMyv2 -DGTggnNfB8uzzNe3giT0j6ie9DJEnvv1hB0GpUToUNECusrKsYnWLdJkIA== +MIIDADCCAegCCQDmOCndJJOWFjANBgkqhkiG9w0BAQsFADBCMSUwIwYDVQQLDBxN +eVNRTENvbm5lY3RvclB5dGhvbiBSb290IENBMRkwFwYDVQQDDBBNeUNvbm5QeSBS +b290IENBMB4XDTE3MDMxNzE1NTAzNloXDTI2MDQwNTE1NTAzNlowQjElMCMGA1UE +CwwcTXlTUUxDb25uZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25u +UHkgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANex2fME +DGfFk6KIIjsCpXQ6Rsv7nClZ+H7iT/xBMDHtQbqVYX1HIDYGRApWIi0Mmg3hosri +6TO5wJIMMEwcSurVStyLXPpCT4Dg3iDuKToYfNNGtuH9DFWh1fnkeni0gbEh+/yT +PIe3FLZCHD+F12ST1z88i4LXOG4NuozKI2cmQcHxdVkYYzknMX4IKdP4AniPgMq0 +9YmQJjXH6y7lPzDXeUuG8YrOSuvfl4W2bjht4mGP6YUUQkwZ5qbRQfrkduQB3+pa ++7P6ckd3q91j1+H1kRCn4a1S28xzPOaey6cLQ/DRVKP9EwPVV9H3/Wm8BdTr0ZMs +1s2VQtocmzcp35kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAGvUp9Du79gpN/pBD +8eG7ZX/YMpK1cbzUwD+TqmP7QnXItRrZalbmadzZ6P161ff0QOEQPxL181+EEXFe +yC8f33EGu9n6ZlSnj/HrdMZ2sjv8QA8M4Vg2vn81qUT/EsJQOjJA6n30ybncZHWB +ovmFgBlq9miX2gDCMRosiRkzm4HAETdWQhiQ/jU4RV+pgP3/sd/mk/u2D5nqMeuT +Ni61ke1CfskuCar5knXTdw7PYfCVXrD1ndgpf7e+qdz534GMkHcFKQkEvWE+ZuWj +CHx9t32JFekCSzJCYs5YuAfuIJc0aC+RmA/lF7UUGyj++wWFAMnkmVEf5MM3WGjM +HRerEg== -----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_CA_key.pem b/tests/data/ssl/tests_CA_key.pem index bfccf214..19418509 100644 --- a/tests/data/ssl/tests_CA_key.pem +++ b/tests/data/ssl/tests_CA_key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAqWcX9kD+b8c3hkPtPlIgwTsfGvhm/bJ64RHjCtQc2pi/fv9h -lcryor8tWmdCCcw7ajg5n/QAIJ8crD5D0kheGEnWVI7dyVxZVfT3CiKuS+GBxuQP -2ejJi4aDGh2McVv4aq1dXRqf2YWkM8PUjM0lzUD9MC9S4APtP6ux0TBhz5rv2ZWd -g2EAjAl7Q56KM5m6odpF+Z1ExnfVpNzWnpvlYHJ+GhbVWb2F0NbqBTmz4OLEAxU/ -O2fo43dwVlHp+yNdib2V+VxeeyZmTt1CIeK6DStAiKdNLN5/N/+2FHZ9/XcA6qqx -LFLeuTIySlPmuaX6u2C8tmOWp99TCUL+GZ2iBwIDAQABAoIBAAKXtFMtfXdieiQQ -6BGbGis652f3Q0RAtga5ylrBEkv6KHweFnU/bOU2vc/zYpxZxtMCV0duaY4WQU8V -iN4wA1il0KTsptJNGoTpQdqi2z4IDn9nwCJaoLME9P6yUxLtEGk5jAM/xBCFLhUo -uxkIjrqMcxOIteD9zmS6EPedoPGXbBFK2jBheArszZ/fiNhi7D2w03/s/Dhu14Px -5gjG5f+A/lS0l81RC5aeUt+wghA5y7TxY20fN1QU+XX2+Oft/HBq6xNloMlmPhzN -loi952HlWLZS31QJRgEhXZ3aJMHDQ3z9I4M6RfdngW2aJTbuJq/weFgN0Z8ogDLK -k/kuTfECgYEA2F5uRlUEW/0MKPrd10q5Ln3i3o0dQmW/QaPZ+SCjGan7xiC8Hm/2 -awkZIIaHQThkgRtxgsLOY+o7NVWkzTeLBlCKl12O0TQ3ZofwXdWPdI2b7adiFnEd -6/htxQd90En7BgNls39j9bK7UVDDilJrRDKvyNzQKwHP95QRxJellJkCgYEAyG5p -lB9j78CLWL9lZZgG7Xu/+DR63gceLLBAYclIfHzIb5B49TakasEgsT6JKbqmmwcC -VXs+SSw0b1dYaFajOL9ceMkOFEn9KV5bESKcPJ2/JxBW6e5j6i4eo+oQxTTiAn75 -UEcmPx8aBCtxhj4LFPKSwzi8mJNliRH2lLAYb58CgYEAlRrGLauq3GWOurLeq92v -ra1M6YcfkcEiQu7SaI8oNqhgfBHU8bjAfNSBP1vV24ksIZiy6aSrrEkfUkrZzh4n -rUtVpqfvopW0U/D8IP3p5S0tNmIyAzsinpnNs4jNF/vThDpVHJR+YzQvSAM7LZhM -mWvAndAlmG2gToH4mJzUm4kCgYBKFk4ee4/0Uobvsifn6s88v46RT8zO/3CO8kOK -Id4Sbgmk+5FKiv0xnNvZyJTpAN6O1YNuV5UJdTaYpX+/aa8BzfJ/j0oOA995iDA/ -YDzCR0keRnLqG72BFbUrv9ydGNQmOgssOnCPyo5SVkCrb4mnH5dSZEmKWImipiow -gfs2XwKBgQDSjbMlJme1fwNEt7EvwLJ6Zd4wSLs70IWvcX3k0g4PMhSj9J1zXRP+ -wpOZCa4GW2y21t5dpHG2B+a9Sd+z0/NMSSBZ8SUfrbZza3gC6cJyPoBYy7w/PFx3 -CgHcWRVI3n6+dkMYzpu2J1zzB2y0aiBE4icDq5+Uq7kO2OIytPVnHA== +MIIEowIBAAKCAQEA17HZ8wQMZ8WToogiOwKldDpGy/ucKVn4fuJP/EEwMe1BupVh +fUcgNgZEClYiLQyaDeGiyuLpM7nAkgwwTBxK6tVK3Itc+kJPgODeIO4pOhh800a2 +4f0MVaHV+eR6eLSBsSH7/JM8h7cUtkIcP4XXZJPXPzyLgtc4bg26jMojZyZBwfF1 +WRhjOScxfggp0/gCeI+AyrT1iZAmNcfrLuU/MNd5S4bxis5K69+XhbZuOG3iYY/p +hRRCTBnmptFB+uR25AHf6lr7s/pyR3er3WPX4fWREKfhrVLbzHM85p7LpwtD8NFU +o/0TA9VX0ff9abwF1OvRkyzWzZVC2hybNynfmQIDAQABAoIBAQDMZI2KuqBiyZhQ +IT6Gusg8rmieLYzappZS7nQrLz7TYOezPpEGXRsJ9sANJ3f1RobJdrKEHagsyu3P +t9sglILtqzbobOurfqDGGNCFVgodMk0/DDiLR/ajQtt4lOj1bt+jEfgubPukA3qO +B3GrRFJKzcnf86ikUPv5VescNQR9Xca8qvy0W69SmtkSSZcC55yhWhGwReUDmywH +tu57eR07t1Jf3RdHwa98VsiEde4TcuA/wo/C3e2A1MZZW0AtqVAVrX8hq+UVAMJ8 +sMubjNqUmDjbOOL4YkLbyR237uC6V6ejmWKEjMXAYUlNnpme1EcoimSL35hCjDVU +H6MwhBiBAoGBAPNawx7lICj0qYJ3CSP5VMiiD7vTdDmtNPg6KFesZ2XKPALR/Csq +1WXSEOb4DvFOAuSWjWYPW+0gvV966LkhKXE+cXWf4RmggrpwhT1JPbkcBwbwQ5oo +aJnNByCcxoTBvJavLkrDBvZzOW2j5lvcD8qfnNYtbNihsExzkxfFm7AxAoGBAOLn +JJqLwuNK2cyi7F5mkRLhGCdtSglSoht/3xTuqdrQv0JsVjmGTOqZhh6EBeI91auu +O89KLs2ARN/KKR90ckuf/h6iwsS5/PDjiPTWOcH8LjiocPuvtvoRzq6leoC1XWBm +vqLZYjPGuZRNibvputUFIVprw38EmppZzcrBuPPpAoGAa1mIZWKRsz9qX0D/aT0d +p3vGEQcQaDj9+to83aAR5Jc3rc7PvIMiq83k4t5eSRgusoOvUGxKEuq0XyAq9S+p +xmjTSB4FAHcL9A6a2BQtBDFW8Dqgt6pHqkEFed9uuzVzac1RUG2D7seZd8IrZi5H +UQzj9J8JOu7ohHEfXAcxzKECgYA9mJ/wMGasi0JK8iOWkONrK54B/gIuO7d0Hady +qEOF+kshfgV+Qj4ZJaoqGI78VurtWzQzVqET+nE4C0pUlqj8bKdwq6CSBSdsQWiJ +hqpRReNKUDezq4TRqAnikVuLGzEJHXs8/CRTh+wTHWV5lL66W1UtlbmRfq91nVFn +bGWIGQKBgE3S/0XsB9Ox+lNyxj5TycmT9VEfn+vvB+PF3ITWLRkcDanK5ynh4Pvt +2HbwWIShQXGczn4jzWX61AwWE7Lkc1an1yiCQ2/SJItyhWJxVGO0V0BwTK9jmq+r +1DXQSTgsOtmRknMdgGTk594Nj7S4r4GDYudzAujsbsrPEItw2nRr -----END RSA PRIVATE KEY----- diff --git a/tests/data/ssl/tests_client_cert.pem b/tests/data/ssl/tests_client_cert.pem index 82fcf77f..05ae5160 100644 --- a/tests/data/ssl/tests_client_cert.pem +++ b/tests/data/ssl/tests_client_cert.pem @@ -1,18 +1,67 @@ +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 3 (0x3) + Signature Algorithm: md5WithRSAEncryption + Issuer: OU=MySQLConnectorPython Root CA, CN=MyConnPy Root CA + Validity + Not Before: Mar 17 15:50:37 2017 GMT + Not After : Mar 17 15:50:37 2018 GMT + Subject: OU=MySQLConnectorPython Client Cert, CN=localhost + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b0:7b:da:61:20:7c:13:97:fa:1e:20:83:e0:40: + e8:94:4a:ea:1c:62:22:09:4e:d3:cd:30:66:73:28: + f4:ff:2d:79:a4:b6:0b:c7:b7:20:c8:f6:c0:98:66: + 3d:46:ec:f1:8c:04:8b:d7:3c:b4:fa:69:6c:c5:47: + 1b:04:a4:a3:53:5a:0a:f2:a4:f7:94:d5:2c:d7:b6: + 24:81:e0:c2:ea:51:d1:6e:8e:d4:58:dc:5b:fc:b9: + 1b:6b:7c:52:cc:17:36:85:63:ca:f0:1f:75:2f:b8: + 97:96:d1:08:ab:46:31:31:e6:9c:8b:26:a1:1b:df: + 35:66:36:d9:ba:e1:a4:3d:88:25:7a:9d:68:d3:62: + 20:ec:14:b0:59:2c:33:40:11:cf:03:70:17:1c:de: + 65:ca:0c:2e:26:2d:f0:33:13:52:d7:0f:69:d7:c0: + d6:f8:71:03:19:f4:79:3d:66:98:56:d2:44:db:bf: + aa:a7:d6:fc:2d:0b:29:63:0a:d4:3d:5e:7e:a7:2c: + 6c:b8:2f:32:6f:51:ce:4a:2d:6a:35:54:21:33:76: + a2:64:4a:8c:1d:30:73:47:3e:90:19:68:c9:07:8f: + 14:c5:ff:93:c7:ec:b4:08:d7:30:11:f6:67:3f:7a: + 8a:57:2c:87:63:34:ff:ff:79:2b:6b:70:88:21:ca: + 4e:53 + Exponent: 65537 (0x10001) + Signature Algorithm: md5WithRSAEncryption + 2e:d2:37:97:8b:aa:05:47:8d:b4:c6:87:7d:b8:41:d6:55:12: + 84:14:8d:91:de:4f:84:15:89:a2:90:5a:0a:94:a1:c2:41:42: + 18:3c:b7:10:c7:19:b5:01:96:2e:51:83:14:2f:64:0a:96:bb: + ce:f8:28:df:ab:fe:72:05:e8:6a:fd:1d:7b:09:22:eb:26:e7: + 64:a7:a7:fe:fb:e8:e0:2f:91:e4:9e:fa:f6:ab:0b:5b:f3:82: + e0:54:d5:07:d2:05:ae:99:fd:22:d8:23:ba:e5:16:21:d7:b0: + 82:98:4a:f0:87:36:ca:1e:4e:c0:c3:6a:22:a4:37:18:5f:6f: + 6f:7b:92:e9:bb:15:77:55:6b:9a:57:35:95:4c:64:e9:bb:12: + cb:ab:67:4b:23:27:41:d3:71:15:5e:cf:6b:d6:13:05:f0:7a: + df:0f:f9:fd:bc:0d:8b:e4:cb:e7:62:67:9e:10:00:c9:9d:ea: + a7:cb:3f:ec:47:04:06:96:7f:b3:74:be:3c:cc:bd:72:05:d8: + 91:b7:d6:b1:9a:40:79:bd:eb:cb:7a:49:bc:a6:e7:61:4f:1d: + 68:79:21:ad:18:f6:13:6e:87:b6:13:a6:31:1e:f9:73:4c:ec: + 04:b4:f2:83:5a:25:ae:9c:2e:8e:3a:0a:1d:0a:fd:34:dd:d4: + 12:cc:4f:47 -----BEGIN CERTIFICATE----- -MIIC9TCCAd0CAQEwDQYJKoZIhvcNAQEFBQAwQjElMCMGA1UECwwcTXlTUUxDb25u +MIIC9TCCAd0CAQMwDQYJKoZIhvcNAQEEBQAwQjElMCMGA1UECwwcTXlTUUxDb25u ZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25uUHkgUm9vdCBDQTAe -Fw0xMzAzMjYxNTM1NTJaFw0yMjA0MTQxNTM1NTJaMD8xKTAnBgNVBAsMIE15U1FM +Fw0xNzAzMTcxNTUwMzdaFw0xODAzMTcxNTUwMzdaMD8xKTAnBgNVBAsMIE15U1FM Q29ubmVjdG9yUHl0aG9uIENsaWVudCBDZXJ0MRIwEAYDVQQDDAlsb2NhbGhvc3Qw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDXbL7sr/k/W4LwwzTKJj5i -1QtcZL0tMyBhAwuI7XQVyJBVvY7dRUM+G30ADOcUw5DscYbkkVu3L2NtsnmuyB8o -0Y5bbHpTv4xTrVfsQuDkMLe+/LwFfL7XrY1Bm13xdEn345b6edfvhre7eatCgIaG -IKfFr5JDv5oN4faGEJpqYahE/WdxM7zv6xb7Wx+yqLlezldU34VcLcghi8zfDkxb -Fb4cZSgko/9RT7lTUGBJSSgITnq3Re0qANah7UbqFkTM2wfltoXGerbWMYuzOfQo -5r0FiScjuvACkDALHAdUbX4UbXasArqpGovyVqHp4OWu3FWRfcCUnxAxfj3G3x79 -AgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAFi+U6Fyc1L0qCTCiMvUMQuXacnOMH4q -rHm7qDKkHHcMMGsspNXvLcVKEwJrX3dhP3dZ52eKyFsOjuTkO9eU5H8V2alO8iGD -Zb6vHT/pQRInoc39SVDFx1QnJ7RlC2Z99xzncHMQChSlDCC+Lft/K5am7vXFwQ3e -icfLqmR5hz6nc+opnPc7WbQu/cc7PesP5uroyKScYoqAiDJ2cKQJQFPM4Cvt/KZ3 -22H/yCyQNkplIcrlQRF+l+sInNlJZr36INF0o91GcucyuLQzOXUn0L5eAyFzA9RQ -8xkVztqRN++CgbGAhqIt8ERBtxBvCpNxuFpgm4dPKCTLm+r7fJcKwDI= +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwe9phIHwTl/oeIIPgQOiU +SuocYiIJTtPNMGZzKPT/LXmktgvHtyDI9sCYZj1G7PGMBIvXPLT6aWzFRxsEpKNT +WgrypPeU1SzXtiSB4MLqUdFujtRY3Fv8uRtrfFLMFzaFY8rwH3UvuJeW0QirRjEx +5pyLJqEb3zVmNtm64aQ9iCV6nWjTYiDsFLBZLDNAEc8DcBcc3mXKDC4mLfAzE1LX +D2nXwNb4cQMZ9Hk9ZphW0kTbv6qn1vwtCyljCtQ9Xn6nLGy4LzJvUc5KLWo1VCEz +dqJkSowdMHNHPpAZaMkHjxTF/5PH7LQI1zAR9mc/eopXLIdjNP//eStrcIghyk5T +AgMBAAEwDQYJKoZIhvcNAQEEBQADggEBAC7SN5eLqgVHjbTGh324QdZVEoQUjZHe +T4QViaKQWgqUocJBQhg8txDHGbUBli5RgxQvZAqWu874KN+r/nIF6Gr9HXsJIusm +52Snp/776OAvkeSe+varC1vzguBU1QfSBa6Z/SLYI7rlFiHXsIKYSvCHNsoeTsDD +aiKkNxhfb297kum7FXdVa5pXNZVMZOm7EsurZ0sjJ0HTcRVez2vWEwXwet8P+f28 +DYvky+diZ54QAMmd6qfLP+xHBAaWf7N0vjzMvXIF2JG31rGaQHm968t6Sbym52FP +HWh5Ia0Y9hNuh7YTpjEe+XNM7AS08oNaJa6cLo46Ch0K/TTd1BLMT0c= -----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_client_key.pem b/tests/data/ssl/tests_client_key.pem index 3c2b5c96..787bd4b9 100644 --- a/tests/data/ssl/tests_client_key.pem +++ b/tests/data/ssl/tests_client_key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA12y+7K/5P1uC8MM0yiY+YtULXGS9LTMgYQMLiO10FciQVb2O -3UVDPht9AAznFMOQ7HGG5JFbty9jbbJ5rsgfKNGOW2x6U7+MU61X7ELg5DC3vvy8 -BXy+162NQZtd8XRJ9+OW+nnX74a3u3mrQoCGhiCnxa+SQ7+aDeH2hhCaamGoRP1n -cTO87+sW+1sfsqi5Xs5XVN+FXC3IIYvM3w5MWxW+HGUoJKP/UU+5U1BgSUkoCE56 -t0XtKgDWoe1G6hZEzNsH5baFxnq21jGLszn0KOa9BYknI7rwApAwCxwHVG1+FG12 -rAK6qRqL8lah6eDlrtxVkX3AlJ8QMX49xt8e/QIDAQABAoIBAQCjSd5+cfSvvaHG -9XAyOkLXjz0JT6LFfBdy8Wfw5mwzhs9A7mo39qQ9k4BwZVdTOdnEH1lsL3IhrF3l -bH8nqLFVs2IAkn02td6cHqyifR8SWIsuzUuHrULLINYNgML4nnji2TQ7r9epy6fB -Bzx1MA7H5EDHa4mmqLkRBNJkVHl3YCGM25tXyhixC5MsNdSpTwLMvv/RVLqsHtH6 -WZ3P8VZi/iOk28TQwLcFTQz4g6RM3jO/1O9tXhob9g1iUoLNd3mLR3+sdkhHf5bU -ttEzxvfVl4Fe0463J4I/JeofGtDBkWgR4UI5ZVfC0xLvmVA4J3cxgUeAKsIwuqQT -9Gi4MDOBAoGBAP6MGCwZUmVqoaqaNF/XckwieJctYLUxhf/KA9S3pq2Y4PPFb7FO -srqn90c2Qb4o13iZzak9rPKUVKwcL+VYknrVGb1ALyWySI7WEaUzsXLIGF2w010l -TNUyL82NynGUx3/4gxvJf/K9weVkTU7KK2tfdB+ridv1ZcSn9bETMvVJAoGBANin -fdqLh8tFMqTsc+bMvlogzns9y+MluJeqz+On706sVR6XsEF8LtzcnHAwOYFef6h5 -cgrKGzfWaz88tNdgB82p/smLQcz4ouFAzTBX3y/+LG/+ybbkR9a2sO+gHA1eAukB -Ia5q/t5jI0XiTa4lVoj2IJK7/hBjIYYBLA2TKQAVAoGBAPP6k7CxFKjga9R5uXmj -p4oSAEPm2qrRrP5fQwzAeqIpxnPg6g2owObn17wJ5Tm/K8gMo3N0CjD4u6+71Kyf -GMdjOiiLPKWFHMbLqF4QDiVWZQRoWC8PcXVnhSogncoAMLgYGpKnsFuaRh745KCA -Zt2jwEoawShzLfgwhO4U2OMBAoGAULfuctsjZ79LRBj4gZfsn6WzaEU4zlNCd/di -5t2tkjEwsWowd+VtjEoBWucMtb9gboN40r5D78TKRlA2zDtyDNT2IV7p0BUeki/T -gtxqQfY/1iYmPybEASIlv9F2QiCxkuAiDVq9xFtJTAMpj+VHXVXeAu1Zlf9pAQU0 -xYX7c5UCgYA8Iux1dO7bakTlqwFUQCMM5IlzJJVT90Z8JQOCFk6a7bzTdOkyxYg2 -BxiGjiFhNer6UshTNZj2svdUvVh9yH/iRGEP6eQAZR1AXIr1YazNmaG7tjIEZ4Yw -zx8gdGTIDYBDChFQmJIB9Y7iNF8bu8JmyVuo2SJHhIVyXN/cM9T6gg== +MIIEowIBAAKCAQEAsHvaYSB8E5f6HiCD4EDolErqHGIiCU7TzTBmcyj0/y15pLYL +x7cgyPbAmGY9RuzxjASL1zy0+mlsxUcbBKSjU1oK8qT3lNUs17YkgeDC6lHRbo7U +WNxb/Lkba3xSzBc2hWPK8B91L7iXltEIq0YxMeaciyahG981ZjbZuuGkPYglep1o +02Ig7BSwWSwzQBHPA3AXHN5lygwuJi3wMxNS1w9p18DW+HEDGfR5PWaYVtJE27+q +p9b8LQspYwrUPV5+pyxsuC8yb1HOSi1qNVQhM3aiZEqMHTBzRz6QGWjJB48Uxf+T +x+y0CNcwEfZnP3qKVyyHYzT//3kra3CIIcpOUwIDAQABAoIBAQCrECHoqzgZNeJ2 +eUXahI/rzYGG6YfcRc/+v79OOJDhFw8lnF9mwhbBNIwSLGeQ6/JlqbJyeqFhZ/bK +cdW6dmrpTAn4j/Z7CPZiUGaqjVXhElVSOJeTWmS/Xh053lPTB10NhmEaxyMrkl09 +Dni8q1jb6ZArQNJA1eZIoToCbtxn1odQButsQNJa6hhNTLU9fyvkSo7FuACB0fTP +0I5je+f2Qim1WW5RVibU+AHW7qp2ImvMBTEFHrzxQrCrkbDMWnRW2nb3SnB5oAl8 +Xi2dOc7ae+AB40sa+nS3F9NnLwNcj2vuBLYGEdDH2Ns++NKhgfad1/lEOtrWdNDZ +nVBAlbyBAoGBANv6zVVtEkOSF5LjXtVoFFR4HA+H0JFcGt+MCd7NYUvDFK1eL/px +3srxLUQxHb0+dOO9cX/5eJB48H+eiLBSRCqOhIsNVInaHZ2TjdmWeoy+8xG15LbS +1lJmE4/WM5946C+ICqoqDZLZ77Z+zrQPVPb4I5wtxtEuQ6tmEXdJRA4RAoGBAM1h +xb7B53pT/YVvl4xTGJpVuEAxtkoxrTCcqoweKYbRyFh4EfeMLdLyL0xUUoWsMl0c +XfGjvy4cA7Ndr6lRf9lKKi/4g5yvo2/vF7bwnMJdCElLle5QwvDy6e5beXfab7sy +DsCpNFwxAmH1ulouRkQsy3ks/8wwwMM7K7uIHEIjAoGAcS4mLViz9+4XkOzJIzWs +mBVAIsF3DwL7lJ7hiS/Uan2Riu2V895YicPyzU4UBgU3cOFMn1KEtJh07MRtgYKi +Ld8r1LtkDpUZfbSoXBYvMXEhcLBMX8A0oyp/0BaecuNrWuE803ZVi4Pz8MpnoX7t +8S+UasumqoOKL4qRW/VnPXECgYA640jWrDRZz9FGPDvgwUaxodhll5tj5KB66sC/ +0jon7Oib7TmBmBDfhg9nvFm4+CmspuCM012Ss/efq0Idsz+MJwa3oHLkLzwWcSCE +lLLty8z/bwu7PC7Y9V17uYC3i8szimPOe/WGZYsAWXuoNdJx48InqW5itqvejo24 +hItNrwKBgDW5jgRtUQTsbbQwkyPLMKNrX12GsDR5pLNw/PiU3ywzBQe2AxoVuMbT +YRFBDG/hGB5WCI9F/XleuU4e4x3nyCRXKmNnfDBwRKZxOmPIrXZDNmmgal61Z0bS +rsJYo/Dk0kkmXYACPKwAl9KrJDguJ5XhwdPiX6VwSrjuQawm1LUG -----END RSA PRIVATE KEY----- diff --git a/tests/data/ssl/tests_expired_server_cert.pem b/tests/data/ssl/tests_expired_server_cert.pem new file mode 100644 index 00000000..cfba3025 --- /dev/null +++ b/tests/data/ssl/tests_expired_server_cert.pem @@ -0,0 +1,68 @@ +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 2 (0x2) + Signature Algorithm: md5WithRSAEncryption + Issuer: OU=MySQLConnectorPython Root CA, CN=MyConnPy Root CA + Validity + Not Before: Aug 15 08:00:00 2012 GMT + Not After : Aug 15 09:00:00 2012 GMT + Subject: OU=MySQLConnectorPython Expired Server Cert, CN=localhost + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:df:5a:5b:72:42:5f:46:e5:bb:6c:e5:76:2e:6f: + fd:b8:10:2f:04:10:55:43:0c:bf:af:f1:eb:f0:4f: + 6f:6b:d9:61:9f:2a:39:35:2d:cc:0c:05:5c:88:cc: + 98:a3:5c:78:9e:8c:6b:ba:33:3f:f2:46:96:f2:bb: + 78:63:ca:bd:72:2c:70:34:56:8b:12:e5:e9:ff:82: + d5:50:bb:28:c2:99:83:af:3f:f1:67:77:b4:41:66: + 79:ee:f7:3a:93:8c:55:da:c3:d5:3a:44:40:82:e8: + fa:4c:11:a7:13:20:31:78:48:1d:2e:95:8c:0f:4c: + ea:ac:96:9d:9e:2a:37:c5:7a:42:f2:b1:8f:9b:15: + 69:9d:1c:19:26:69:84:a9:c6:9e:08:65:c0:7c:bf: + 72:a7:b0:ae:60:78:ad:7d:ea:0b:ed:ff:45:fc:24: + 56:f5:c6:f4:b5:00:0f:90:76:3e:52:08:ec:06:c4: + 30:51:66:60:f9:c6:0b:b9:f2:96:6a:c2:39:b8:b7: + 48:b8:3f:02:26:b5:95:f8:55:8d:d3:23:f1:dc:d0: + ab:2c:05:3b:b5:99:4d:9a:81:78:27:60:0d:da:2e: + 23:e8:38:26:0b:6d:6c:f6:fd:a7:42:95:4c:d2:a5: + 7c:05:13:21:7b:c7:6d:ca:f1:e3:3d:ad:d4:32:79: + 5a:d3 + Exponent: 65537 (0x10001) + Signature Algorithm: md5WithRSAEncryption + 36:e4:ba:6c:3b:99:29:ba:33:8b:da:ef:07:b8:7e:f6:07:b6: + 79:7b:c7:b2:0c:0c:48:ff:52:25:05:34:f4:d9:f6:0a:0c:77: + 10:a7:e5:40:f4:47:bf:4c:06:7b:8a:22:53:5a:91:dd:75:32: + d3:58:97:4f:d4:01:e8:b5:8d:ca:52:23:7f:72:1b:e2:c5:9a: + 89:a4:be:e4:17:9b:fa:1f:c0:26:93:5f:c2:d2:1b:e0:c2:9e: + 36:d1:3f:95:bd:6f:af:cd:f3:8f:6a:c6:5c:b0:6b:ae:07:60: + 59:be:fa:fd:f8:43:5b:20:38:02:b8:a6:f5:eb:35:be:46:55: + 7b:84:9f:e5:cb:5d:6b:af:2a:28:d1:af:32:1f:e3:71:d8:f8: + 96:4a:f1:88:f3:10:27:ed:c5:a2:65:f4:b5:2b:58:77:93:25: + e7:36:e1:4b:cb:18:10:cd:81:fc:80:e6:24:0f:27:4c:33:22: + af:36:88:ee:f8:0d:ef:ff:47:74:87:50:e8:ea:03:da:71:a1: + 65:fd:00:8c:c8:a8:27:fa:e0:40:43:60:8f:aa:1f:25:4f:05: + d7:a5:fe:9b:a3:82:90:0b:50:bf:bd:62:a3:9e:14:20:80:18: + 8b:8c:5e:f7:97:b8:b7:a5:63:d8:22:1a:98:6c:32:da:38:7b: + fc:e6:2c:f3 +-----BEGIN CERTIFICATE----- +MIIC/TCCAeUCAQIwDQYJKoZIhvcNAQEEBQAwQjElMCMGA1UECwwcTXlTUUxDb25u +ZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25uUHkgUm9vdCBDQTAe +Fw0xMjA4MTUwODAwMDBaFw0xMjA4MTUwOTAwMDBaMEcxMTAvBgNVBAsMKE15U1FM +Q29ubmVjdG9yUHl0aG9uIEV4cGlyZWQgU2VydmVyIENlcnQxEjAQBgNVBAMMCWxv +Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN9aW3JCX0bl +u2zldi5v/bgQLwQQVUMMv6/x6/BPb2vZYZ8qOTUtzAwFXIjMmKNceJ6Ma7ozP/JG +lvK7eGPKvXIscDRWixLl6f+C1VC7KMKZg68/8Wd3tEFmee73OpOMVdrD1TpEQILo ++kwRpxMgMXhIHS6VjA9M6qyWnZ4qN8V6QvKxj5sVaZ0cGSZphKnGnghlwHy/cqew +rmB4rX3qC+3/RfwkVvXG9LUAD5B2PlII7AbEMFFmYPnGC7nylmrCObi3SLg/Aia1 +lfhVjdMj8dzQqywFO7WZTZqBeCdgDdouI+g4JgttbPb9p0KVTNKlfAUTIXvHbcrx +4z2t1DJ5WtMCAwEAATANBgkqhkiG9w0BAQQFAAOCAQEANuS6bDuZKbozi9rvB7h+ +9ge2eXvHsgwMSP9SJQU09Nn2Cgx3EKflQPRHv0wGe4oiU1qR3XUy01iXT9QB6LWN +ylIjf3Ib4sWaiaS+5Beb+h/AJpNfwtIb4MKeNtE/lb1vr83zj2rGXLBrrgdgWb76 +/fhDWyA4Arim9es1vkZVe4Sf5ctda68qKNGvMh/jcdj4lkrxiPMQJ+3FomX0tStY +d5Ml5zbhS8sYEM2B/IDmJA8nTDMirzaI7vgN7/9HdIdQ6OoD2nGhZf0AjMioJ/rg +QENgj6ofJU8F16X+m6OCkAtQv71io54UIIAYi4xe95e4t6Vj2CIamGwy2jh7/OYs +8w== +-----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_expired_server_key.pem b/tests/data/ssl/tests_expired_server_key.pem new file mode 100644 index 00000000..6b68fe2d --- /dev/null +++ b/tests/data/ssl/tests_expired_server_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA31pbckJfRuW7bOV2Lm/9uBAvBBBVQwy/r/Hr8E9va9lhnyo5 +NS3MDAVciMyYo1x4noxrujM/8kaW8rt4Y8q9cixwNFaLEuXp/4LVULsowpmDrz/x +Z3e0QWZ57vc6k4xV2sPVOkRAguj6TBGnEyAxeEgdLpWMD0zqrJadnio3xXpC8rGP +mxVpnRwZJmmEqcaeCGXAfL9yp7CuYHitfeoL7f9F/CRW9cb0tQAPkHY+UgjsBsQw +UWZg+cYLufKWasI5uLdIuD8CJrWV+FWN0yPx3NCrLAU7tZlNmoF4J2AN2i4j6Dgm +C21s9v2nQpVM0qV8BRMhe8dtyvHjPa3UMnla0wIDAQABAoIBAC7IP0U0b75q2hIa +EeHyJSOLiD2Cqkkr/2577p5cFQty8caj0m24FPgjm1kv+XymHsGeyeWrXGaDsJRQ +/gtw6LNkaXAc/G5N5/BT2Bhby1LPUsy/SPISGZhlPX73G7bR+x2iTSQyLYz9/Yc3 +X1ZbNOFrwWkDe92sj67ssUDyuNHMwLpw35/OWX2W7YsGzi7j2zbZdmhp2c3E0/bD +NL2217BsPMLD1/f0og6Ix9kvSt+2Z3XW6RlhP7LDNDRI7F8oRRVvYgQGHBHibvlG +I4n07lycLo0dPsc08PcUvJ5UyhI7VYk/MZACLNhrjgPxYz1HdL7deVoQbW6z4q19 +g1JjI2kCgYEA+eOIvGkz9wga74VVKMZIqXPaMmccNkwbzUb7Ay1CM50pdYLk6E6R +LdEIx0/qQC8Zpw47NhSFzZT8sakHqmK7VIJRdMJWSTKu/4QMooigRasFJXPWwJVa +LsTE1gg3LGL+RkuoQNIlPle6nTGcCLGfnB8Js1GA3/SunFQCoJr+stcCgYEA5NCx +BSmZz07Rso3FWzRMjR52m2JDWvMm4+eU/HxXGrPdYfBQEowxzesORRBRIlp8Z5ki +929ayJ5qONLjMFx1l/QguT9BNkbzO3gpbH3/G187wFQ0v8jXmDRjU7ftgyL6PAD+ +eJsj39+TfA+Hua6m6VkLH5XUpy3Vl8nBkM2cFGUCgYEAl1zEiWOsD1lAf48i2zTn +9IRxSZB9XUJSoM/64Zy7eeobn8tufmyAseDpUVlNyhz9i9wp74MU3Ub+nVqGgyWU +1Qau8mt4upPRvoIs6RKbCjgiQOJe1X5iBuw3UnHdgaxg2xGe08y2tIGNTwQqwHVe ++cEvLggTaRSb46NbiA76cjcCgYBGkWZG5VGecfySSM75FeQWEbMasO98+UihOSbl +x6NFhPtd3TOUxNAHZdr8yc97/NQpTz1NenZRMSopZEDVBW7u8ke1WiDOkIsraB++ +ag1nb7OJ2W57R4HWWzHW+/6wVvU91ECnCZHC1b0yoceGKKsphGC92QPAm44oRf0A +n6jnUQKBgD0MqIjngDIRMwGpkXpsJJDt9/dw6izz3sWhBDkBLKCt63nwT3pykDDF +qJ8dq9TSGwO6H1c/obKdFlx53PBDUpZV9txI8ScF2YNlfs3Ts4+oElkU/jCMJPKi +M73I0Jgg+GwToDcjC4d7oREIBlfXjBLBjCcHx1315NMUW42QkrNo +-----END RSA PRIVATE KEY----- diff --git a/tests/data/ssl/tests_server_cert.pem b/tests/data/ssl/tests_server_cert.pem index dc7938c7..3276dea0 100644 --- a/tests/data/ssl/tests_server_cert.pem +++ b/tests/data/ssl/tests_server_cert.pem @@ -1,18 +1,67 @@ +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 1 (0x1) + Signature Algorithm: md5WithRSAEncryption + Issuer: OU=MySQLConnectorPython Root CA, CN=MyConnPy Root CA + Validity + Not Before: Mar 17 15:50:37 2017 GMT + Not After : Mar 17 15:50:37 2018 GMT + Subject: OU=MySQLConnectorPython Server Cert, CN=localhost + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:0d:e6:bd:d7:5e:1e:0f:b2:0a:83:43:50:fe: + 7c:bc:32:dc:04:fd:38:97:86:1e:e0:9c:46:08:65: + ac:76:6f:0d:93:33:31:4e:02:8a:a7:e9:9a:b9:4f: + f9:d3:66:56:29:1a:e5:0f:df:7b:61:e5:3c:06:db: + ea:cd:d6:71:9d:63:b2:f9:e1:c1:ed:9a:6e:2f:2f: + be:94:76:aa:ee:24:b3:58:f0:82:25:00:ef:c8:19: + 4f:15:6f:f2:3b:b4:e4:9b:0d:36:c7:17:39:7d:35: + 45:e8:76:62:94:19:ab:64:d8:89:78:75:92:29:e2: + 35:79:dd:e1:bf:3f:52:bf:ef:4c:d1:c1:fc:d0:a6: + ee:b8:01:39:26:28:67:40:73:46:5e:55:65:3b:56: + c9:c0:e1:7a:a4:a1:0c:46:d2:1e:b3:af:c5:cc:5b: + 07:81:79:c5:d0:44:57:ed:ea:ad:d9:c2:45:70:72: + 46:d3:e2:a3:f4:d0:49:33:ac:66:89:9b:83:65:f9: + 92:07:4e:9c:bf:b0:59:90:f8:35:8f:19:d2:82:d7: + 49:46:f5:4b:6a:c0:bd:5c:5d:0f:a0:fb:29:15:a7: + 68:5e:e1:48:20:c8:14:eb:fc:17:29:d6:95:4a:27: + 70:f3:c3:52:3d:1c:a5:d4:cf:3c:87:81:d7:d9:bb: + dc:49 + Exponent: 65537 (0x10001) + Signature Algorithm: md5WithRSAEncryption + 36:58:2f:f4:95:e6:8b:ef:5b:59:91:2e:31:c2:21:64:b7:ac: + e6:bf:4e:b7:12:06:7d:8b:74:eb:82:88:65:00:4c:12:5e:6b: + dd:8b:d5:5e:cd:74:92:8a:dd:eb:fb:5b:1d:46:b0:e4:7d:55: + 1a:01:9a:82:0c:4d:91:05:e2:92:f5:17:0f:a5:8b:d9:8e:8f: + 17:55:19:83:07:2b:ea:2b:16:15:30:f7:31:7e:84:cc:b7:e0: + b1:b1:53:5d:e9:40:87:19:98:d5:f8:eb:ae:ef:b4:e7:85:12: + 38:e7:12:f4:44:03:08:a6:fc:3b:aa:26:1c:52:95:e0:7b:93: + 92:00:e2:21:b8:09:00:7d:e5:08:b4:c8:53:1d:2c:11:ea:86: + 5c:f9:14:c6:3f:73:0a:bc:e7:96:cb:e9:39:23:d7:50:0f:7d: + 2e:04:be:e9:5b:0b:bf:99:85:8c:ed:32:14:1d:09:c5:d5:d1: + e6:db:f2:54:51:3f:5f:0e:e0:06:58:c8:52:68:4e:39:25:bd: + b5:1b:8b:b2:1d:95:cb:cb:22:18:b5:d7:27:3d:32:c4:79:c4: + fa:e1:6f:00:1c:63:da:4a:ce:9e:de:0c:a4:dd:bd:d3:d6:cb: + 51:d7:e6:32:5f:5f:31:1f:a5:9d:5f:d5:2c:21:72:a7:ed:f1: + d8:31:c8:b4 -----BEGIN CERTIFICATE----- -MIIC9TCCAd0CAQEwDQYJKoZIhvcNAQEFBQAwQjElMCMGA1UECwwcTXlTUUxDb25u +MIIC9TCCAd0CAQEwDQYJKoZIhvcNAQEEBQAwQjElMCMGA1UECwwcTXlTUUxDb25u ZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25uUHkgUm9vdCBDQTAe -Fw0xMzAzMjYxNTM1NTJaFw0yMjA0MTQxNTM1NTJaMD8xKTAnBgNVBAsMIE15U1FM +Fw0xNzAzMTcxNTUwMzdaFw0xODAzMTcxNTUwMzdaMD8xKTAnBgNVBAsMIE15U1FM Q29ubmVjdG9yUHl0aG9uIFNlcnZlciBDZXJ0MRIwEAYDVQQDDAlsb2NhbGhvc3Qw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDv6WQ/Ssum4RchjXSlwbcB -au3WNccfodThBOAM27AOnJQWIjG4e5s9H7lLznI+VF5MgUbgbp/yz4D+CrSFvLgU -4xxzd1/SVbnzRJ5iD2EmaZPjoMkBmvDRd4ow6IdFN80Fpwxij6fUBHdRkyXyiYsG -FE94PQCyD1R47LSubd/gfcjXw8Bt5cWqcopiolZ01bYuMzeZIw0et9gf6Iih2Zh1 -bs9RthHfL3BfN4knljF3XmRQhfsc4w3MvdulX4mcfzS+E+keOOgPjfjo9KVCD1Zl -F00wQdbSCWzf9uCP4OpKJGURyMQEmGMFPBOP98kqns1CqaE0PxKOpbcTX86nSEO5 -AgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAFy4ONx0zFYgVNL046lfRmimyRf1gbmB -pyyug9eW6QuuTfqbzFWOYZY8pG2lzKnHNUMmgzMNMpiRLRJ38Dj5rApg+7OkiTT+ -l4DMIR/YblJryEvx6tNUq2Cu9GXKW2qrGJO3XVniuBpmg1srugdwyxS+LdFofgBc -I4cKIDuXYATUpOFhEsFbMY6tGVeOXQN2jSWtUj6+mKiUWMyr+5NYD8xhjDV7q4GH -JfQqWFzw7prtSYzwB8lc0PM2SLwxeE9cQUYN/UkW8HRxM7Ft5KyyXUk+2Jg61sZ2 -QxMCV6NAGYMX40WRDqIZbs9AbHWoCxEwoXWtcmNb0GInsk39lFMJqw4= +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjDea9114eD7IKg0NQ/ny8 +MtwE/TiXhh7gnEYIZax2bw2TMzFOAoqn6Zq5T/nTZlYpGuUP33th5TwG2+rN1nGd +Y7L54cHtmm4vL76UdqruJLNY8IIlAO/IGU8Vb/I7tOSbDTbHFzl9NUXodmKUGatk +2Il4dZIp4jV53eG/P1K/70zRwfzQpu64ATkmKGdAc0ZeVWU7VsnA4XqkoQxG0h6z +r8XMWweBecXQRFft6q3ZwkVwckbT4qP00EkzrGaJm4Nl+ZIHTpy/sFmQ+DWPGdKC +10lG9UtqwL1cXQ+g+ykVp2he4UggyBTr/Bcp1pVKJ3Dzw1I9HKXUzzyHgdfZu9xJ +AgMBAAEwDQYJKoZIhvcNAQEEBQADggEBADZYL/SV5ovvW1mRLjHCIWS3rOa/TrcS +Bn2LdOuCiGUATBJea92L1V7NdJKK3ev7Wx1GsOR9VRoBmoIMTZEF4pL1Fw+li9mO +jxdVGYMHK+orFhUw9zF+hMy34LGxU13pQIcZmNX4667vtOeFEjjnEvREAwim/Duq +JhxSleB7k5IA4iG4CQB95Qi0yFMdLBHqhlz5FMY/cwq855bL6Tkj11APfS4Evulb +C7+ZhYztMhQdCcXV0ebb8lRRP18O4AZYyFJoTjklvbUbi7IdlcvLIhi11yc9MsR5 +xPrhbwAcY9pKzp7eDKTdvdPWy1HX5jJfXzEfpZ1f1Swhcqft8dgxyLQ= -----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_server_key.pem b/tests/data/ssl/tests_server_key.pem index 13c39fea..466fc970 100644 --- a/tests/data/ssl/tests_server_key.pem +++ b/tests/data/ssl/tests_server_key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA7+lkP0rLpuEXIY10pcG3AWrt1jXHH6HU4QTgDNuwDpyUFiIx -uHubPR+5S85yPlReTIFG4G6f8s+A/gq0hby4FOMcc3df0lW580SeYg9hJmmT46DJ -AZrw0XeKMOiHRTfNBacMYo+n1AR3UZMl8omLBhRPeD0Asg9UeOy0rm3f4H3I18PA -beXFqnKKYqJWdNW2LjM3mSMNHrfYH+iIodmYdW7PUbYR3y9wXzeJJ5Yxd15kUIX7 -HOMNzL3bpV+JnH80vhPpHjjoD4346PSlQg9WZRdNMEHW0gls3/bgj+DqSiRlEcjE -BJhjBTwTj/fJKp7NQqmhND8SjqW3E1/Op0hDuQIDAQABAoIBAQCyfCuVntq2E532 -21td+ilhh6DcDfRPh0FuCwd46XQo2rqdYOEmw+bxaYmcaUG7N19UgZUuYX7j0RbB -aUt2d7ln6LMBAF2siRSndHR0tcZsIn3hCnygkhn5bHrF+iixCVuhie7/4KpWZOA0 -M0o3D7b7Vd7tsEy1LAyHTmr5nkrBosIpLXQvnjj8kF6MOQW09/72l7eiFwnRQ3yW -eUn8l+vkIRpYzI/l1MFnj1lcGeDKRDFJMXZV7OropJaQabWuGyaddizP8ihhU/Vf -VEHFJnW+AS3JpMO2Bf8ICMGu+0d4AJsNPW7KNNlqv79Nws2ijl6bcWz+E7NAG55C -DY1LU5iBAoGBAPjf0QRpdDLd9+ntAkJMfSwhl0yqarZPuaGsKWnG5C7BPcj3wLaP -GHn3CI0SF0JiwN0zOrLv821im5Wr5Ux/OoSDdIR/y9Vp8joTno0+7MUU5zuN93r+ -8EAHY5GEZoJ0ndU7xP50jEYq0AZinginyqtGyL6HpJL3VJoL14cCYYuRAoGBAPbH -4bHPWSEJY3X8Hq4KRbtyyTfT1s7zFrvDZHkWFH+tVD+DsKpmRQ5A0lWVBPhPaS1Y -GJcu9h9VKSEjBgM2ZJpB8A4zJGYIgsPXQTOQm/s9fbWj76zJ8r2z4W7P2Ry9U1e5 -cwZnQgLoPvBL7IHm4J92RfoRZO5IohRyUDaAdpGpAoGAIL3hU8FD5kVJjl7+Axbp -CNtKem2ZKG8IrvplYGMoNfZ6WGwv0FS3FaSoXVbZ9IPld7R7rnre/a8RZPl+azf5 -zOE2fRALEwKjOXzHSTHUGIGNgkpFGstbdDEEqmpOyi7pbNo2KnvO0JRlVdG3lM/u -W+YuFtLllegwGywfqMVpa+ECgYEAp4/StFv4xdDNIuh8oGnDLWLkM674FO7DydwD -FaCjbInxQWsWgq0MSIBFEO0tQbkRzkMZ91VgsqetVJ2mUHoXVxJcgBfDqDAxMe6v -i+atsqru922HqMg6tQo1kHs6jSQUOeVmr7te/ABb8+dpgE6WyE+Tdhdnc9AHlWCF -DGyvlXkCgYB2OYDiXSne2DYglcEk2pyr6h5sQRuKuYXnq7NWFTYIiLb/Bz6g9oLs -fV5LkBfCWRSg3PoR8hX3F8PC1i2G+50gXucoFdvlvS5bawPABxtYGqhyz63awNud -JnJIdqY3vLoUWeEZF3HmdBMN8jy6Am7pMynHFvoEjMBRmGNOjedZrA== +MIIEpQIBAAKCAQEAow3mvddeHg+yCoNDUP58vDLcBP04l4Ye4JxGCGWsdm8NkzMx +TgKKp+mauU/502ZWKRrlD997YeU8BtvqzdZxnWOy+eHB7ZpuLy++lHaq7iSzWPCC +JQDvyBlPFW/yO7Tkmw02xxc5fTVF6HZilBmrZNiJeHWSKeI1ed3hvz9Sv+9M0cH8 +0KbuuAE5JihnQHNGXlVlO1bJwOF6pKEMRtIes6/FzFsHgXnF0ERX7eqt2cJFcHJG +0+Kj9NBJM6xmiZuDZfmSB06cv7BZkPg1jxnSgtdJRvVLasC9XF0PoPspFadoXuFI +IMgU6/wXKdaVSidw88NSPRyl1M88h4HX2bvcSQIDAQABAoIBAQCU+Epr/6x5gpWD +jVGfWiLUPxNNa5ycs2jahWxml53txqB8cDUHtMLBjmhSDoONZN4rR+sniWLMmgcx +rRLlZJsA1Onb6yqmzoUEj3ZrZc/dK6LAC1ycOjLYemcKivChJDAIiRYW510ay+VG +8YI3FQzGYh+W8rPLmGSLJvDtLgmIWMBavXi5hhErRSotsqAICLzfhnlKbFMc12ZS +b+eYX3/Q/NQlOKHtIhChEpvm1McYOhb4+8UI0Opc1LfQOE0qcgL9upEp2UK5qUCP +71dIwVgTMp0VyA2StkPzV+wu0pl1hFUfHlZE7B8oJrkUhLzT61+RzMmeXAMrw31A +PiP+kd2RAoGBAM489b23ioAIUiqswMy1PETYjNJvaxZ2eVk+2fyvGRw9wDWDAupi ++gfcV1cBRn29OINrW7AhobCpBZcqGyvBxtcq+EZxSFIZOqioNPHyANScLg0ijHku +02lPc6jHedqj4B+gU6dWq7kDuExiV/idIrb0oTPHVo+e1sw+/WGVEJcjAoGBAMpl +iYRHr1yASL8BjOVRzNUxbAxNccYHi1R5MimAQzotTQEQxHVoxedtzEiGO0sGl1ce +gdgGAtKBCMXjiC09vEvYO/ocOxVDKmGi5sVvQvTizTdi3HNf4E1kEGnZDG4ZiqEP +vSGsZPTq9XoLPraQw9xd3BsYOAOJUHVUWsiLAGujAoGAfN5r63I1aU+gcDYohck1 +tHloygCr1e3liyOC2HsruO2qcrvgCAnlWN0QBJ3BEGCA1xEpcnrqawvrVpsn2FZ7 +Dcv2hrAQGaUs3vD5HYRo/FGTkGBarQSs/BYe8RHVtYuDJ6LrA2Z2ko6uB5GDsgNy +AVQcRj1rK4oAg6mfwHWAlgECgYEAg7ydSqViJeI192Up8SVSHr4BZuyNjmjgroYI +OW0L1PUhdv0T8pvUnLMh0V7Vfxr2LLVlrFcVRTDJpgxYWaIiSnefakcvycIi9tQS +QxYNTdnF2zQU61/PXnAwIsUsywkC65yT7TQJrkS0rNBe7HPDmE7bciNMajjZTtUu +FfQrvOMCgYEAojKV9hEJxvkwIMD7D6lvCpaMdMmv7yxgMbuNJ6je9h3faKc8tKQK +4d5F1Cl/CKXQcwSMt0IDy3jynJJDP8bN3Wp1C8lU8ZnzoGbGK2jotGtjG6UaOL7B +N4BnlJGjJUqYni2xRWk8A+/HT5zngN0Q7+Eq0vkdajewjISKiH4reaA= -----END RSA PRIVATE KEY----- diff --git a/tests/mysqld.py b/tests/mysqld.py index 6d6463d5..e0073610 100644 --- a/tests/mysqld.py +++ b/tests/mysqld.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -343,9 +343,10 @@ def get_exec(self, exec_name): class MySQLServer(MySQLServerBase): """Class for managing a MySQL server""" - def __init__(self, basedir, topdir, cnf, bind_address, port, - name, datadir=None, tmpdir=None, - unix_socket_folder=None, ssl_folder=None, sharedir=None): + def __init__(self, basedir, topdir, cnf, bind_address, port, name, + datadir=None, tmpdir=None, unix_socket_folder=None, + ssl_folder=None, ssl_ca=None, ssl_cert=None, ssl_key=None, + sharedir=None): self._cnf = cnf self._option_file = os.path.join(topdir, 'my.cnf') self._bind_address = bind_address @@ -353,6 +354,9 @@ def __init__(self, basedir, topdir, cnf, bind_address, port, self._topdir = topdir self._basedir = basedir self._ssldir = ssl_folder or topdir + self._ssl_ca = os.path.join(self._ssldir, ssl_ca) + self._ssl_cert = os.path.join(self._ssldir, ssl_cert) + self._ssl_key = os.path.join(self._ssldir, ssl_key) self._datadir = datadir or os.path.join(topdir, 'data') self._tmpdir = tmpdir or os.path.join(topdir, 'tmp') self._name = name @@ -540,13 +544,7 @@ def unix_socket(self): """Return the unix socket of the server""" return self._unix_socket - def start(self): - """Start a MySQL server""" - if self.check_running(): - LOGGER.error("MySQL server '{name}' already running".format( - name=self.name)) - return - + def update_config(self, **kwargs): options = { 'name': self._name, 'basedir': _convert_forward_slash(self._basedir), @@ -555,16 +553,31 @@ def start(self): 'bind_address': self._bind_address, 'port': self._port, 'unix_socket': _convert_forward_slash(self._unix_socket), - 'ssl_dir': _convert_forward_slash(self._ssldir), + 'ssl_ca': _convert_forward_slash(self._ssl_ca), + 'ssl_cert': _convert_forward_slash(self._ssl_cert), + 'ssl_key': _convert_forward_slash(self._ssl_key), 'pid_file': _convert_forward_slash(self._pid_file), 'serverid': self._serverid, 'lc_messages_dir': _convert_forward_slash( self._lc_messages_dir), } + options.update(**kwargs) try: fp = open(self._option_file, 'w') fp.write(self._cnf.format(**options)) fp.close() + except Exception as ex: + LOGGER.error("Failed to write config file {0}".format(ex)) + sys.exit(1) + + def start(self, **kwargs): + if self.check_running(): + LOGGER.error("MySQL server '{name}' already running".format( + name=self.name)) + return + + self.update_config(**kwargs) + try: self._start_server() for i in range(10): if self.check_running(): diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 43de0dd6..d485de81 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4199,3 +4199,74 @@ def test_big_column_count(self): cur.execute(query) cur.fetchone() cur.close() + + +class BugOra25397650(tests.MySQLConnectorTests): + """BUG#25397650: CERTIFICATE VALIDITY NOT VERIFIED + """ + def setUp(self): + self.config = tests.get_mysql_config() + self.config = tests.get_mysql_config() + self.config.update({ + 'ssl_ca': os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_CA_cert.pem')), + 'ssl_cert': os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_client_cert.pem')), + 'ssl_key': os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_client_key.pem')), + }) + self.mysql_server = tests.MYSQL_SERVERS[0] + self._use_expired_cert() + + def tearDown(self): + self._use_original_cert() + self._ensure_up() + + def _ensure_up(self): + # Start the MySQL server again + if not self.mysql_server.check_running(): + self.mysql_server.start() + + if not self.mysql_server.wait_up(): + self.fail("Failed restarting MySQL server after test") + + def _use_original_cert(self): + self.mysql_server.stop() + self.mysql_server.wait_down() + + self.mysql_server.start() + self.mysql_server.wait_up() + time.sleep(2) + + def _use_expired_cert(self): + self.mysql_server.stop() + self.mysql_server.wait_down() + + cert = os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_expired_server_cert.pem')) + key = os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_expired_server_key.pem')) + if os.name == 'nt': + cert = os.path.normpath(cert) + cert = cert.replace('\\', '\\\\') + key = os.path.normpath(key) + key = key.replace('\\', '\\\\') + self.mysql_server.start(ssl_cert=cert, ssl_key=key) + self.mysql_server.wait_up() + time.sleep(2) + + def test_pure_verify_server_certifcate(self): + self.config["use_pure"] = True + self.config['ssl_verify_cert'] = True + self.assertRaises(errors.InterfaceError, + mysql.connector.connect, **self.config) + self.config['ssl_verify_cert'] = False + mysql.connector.connect(**self.config) + + def test_cext_verify_server_certifcate(self): + self.config["use_pure"] = False + self.config['ssl_verify_cert'] = True + self.assertRaises(errors.InterfaceError, + mysql.connector.connect, **self.config) + self.config['ssl_verify_cert'] = False + mysql.connector.connect(**self.config) diff --git a/unittests.py b/unittests.py index bb852e00..bfcc19a6 100644 --- a/unittests.py +++ b/unittests.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -144,17 +144,17 @@ # Platform specifics if os.name == 'nt': MY_CNF += '\n'.join(( - "ssl-ca = {ssl_dir}\\\\tests_CA_cert.pem", - "ssl-cert = {ssl_dir}\\\\tests_server_cert.pem", - "ssl-key = {ssl_dir}\\\\tests_server_key.pem", + "ssl-ca = {ssl_ca}", + "ssl-cert = {ssl_cert}", + "ssl-key = {ssl_key}", )) MYSQL_DEFAULT_BASE = os.path.join( "C:/", "Program Files", "MySQL", "MySQL Server 5.6") else: MY_CNF += '\n'.join(( - "ssl-ca = {ssl_dir}/tests_CA_cert.pem", - "ssl-cert = {ssl_dir}/tests_server_cert.pem", - "ssl-key = {ssl_dir}/tests_server_key.pem", + "ssl-ca = {ssl_ca}", + "ssl-cert = {ssl_cert}", + "ssl-key = {ssl_key}", "innodb_flush_method = O_DIRECT", )) MYSQL_DEFAULT_BASE = os.path.join('/', 'usr', 'local', 'mysql') @@ -603,6 +603,9 @@ def init_mysql_server(port, options): port=port, unix_socket_folder=options.unix_socket_folder, ssl_folder=os.path.abspath(tests.SSL_DIR), + ssl_ca="tests_CA_cert.pem", + ssl_cert="tests_server_cert.pem", + ssl_key="tests_server_key.pem", name=name, sharedir=options.mysql_sharedir) except tests.mysqld.MySQLBootstrapError as err: From d9c5cf614048157c257978967e514d3d5faee293 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 20 Mar 2017 14:04:14 +0530 Subject: [PATCH 32/95] BUG25589496: Don't convert to unicode if non-ascii data is present In Python 2.7, decoding utf-8 of binary data with non-ascii data is attempted, decode fails. To fix this error, we attempt to convert the entire mysql statement to unicode and pass it anyway incase it fails. Tests added for regression. --- lib/mysql/connector/cursor.py | 15 +++++++++----- tests/test_bugs.py | 37 +++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 8bcd919f..3002192c 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -103,15 +103,20 @@ def replace(matchobj): if groups["conversion_type"] == b"%": value = b"%" if groups["conversion_type"] == b"s": - key = groups["mapping_key"].encode("utf-8") \ - if PY2 else groups["mapping_key"] + key = groups["mapping_key"] value = value_dict[key] if value is None: raise ValueError("Unsupported conversion_type: {0}" "".format(groups["conversion_type"])) - return value.decode("utf-8") if PY2 else value - return RE_PY_MAPPING_PARAM.sub(replace, bytestr.decode("utf-8") - if PY2 else bytestr) + return bytes(value) if PY2 else value + + stmt = RE_PY_MAPPING_PARAM.sub(replace, bytestr) + if PY2: + try: + return stmt.decode("utf-8") + except UnicodeDecodeError: + pass + return stmt class CursorBase(MySQLCursorAbstract): diff --git a/tests/test_bugs.py b/tests/test_bugs.py index d485de81..c04a9511 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -44,6 +44,7 @@ import traceback import time import unittest +import pickle import tests from tests import foreach_cnx, cnx_config @@ -4270,3 +4271,39 @@ def test_cext_verify_server_certifcate(self): mysql.connector.connect, **self.config) self.config['ssl_verify_cert'] = False mysql.connector.connect(**self.config) + + +class BugOra25589496(tests.MySQLConnectorTests): + """BUG#25589496: COMMITS RELATED TO "BUG22529828" BROKE BINARY DATA + HANDLING FOR PYTHON 2.7 + """ + def setUp(self): + config = tests.get_mysql_config() + self.cnx = connection.MySQLConnection(**config) + self.tbl = "Bug25589496" + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) + + def tearDown(self): + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) + self.cnx.close() + + def test_insert_binary(self): + table = """ + CREATE TABLE {0} ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, + `section` VARCHAR(50) NOT NULL, + `pickled` LONGBLOB NOT NULL + ) + """.format(self.tbl) + cursor = self.cnx.cursor() + cursor.execute(table) + + pickled = pickle.dumps({'a': 'b'}, pickle.HIGHEST_PROTOCOL) + add_row_q = "INSERT INTO {0} (section, pickled) " \ + "VALUES (%(section)s, %(pickled)s)".format(self.tbl) + + new_row = cursor.execute(add_row_q, {'section': 'foo', + 'pickled': pickled}) + self.cnx.commit() + self.assertEqual(1, cursor.lastrowid) + cursor.close() From 0aa4b14a84a5f6e933218c80d8442e8fcf6e2b57 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 20 Mar 2017 14:05:12 +0530 Subject: [PATCH 33/95] BUG25383644: Add connection back to pool on exception Each time the connection to the server is lost during a query, the connection is not added back to the connection pool. Eventually, there are no connections left in the connection pool and the following error message is thrown: mysql.connector.errors.PoolError: Failed getting connection; pool exhausted To fix this error, we add the connection back to the pool even if the closing of the connection was unsuccessful. Tests added for regression. --- lib/mysql/connector/pooling.py | 15 ++++++++------- tests/test_bugs.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/lib/mysql/connector/pooling.py b/lib/mysql/connector/pooling.py index 17d2f59a..b6711202 100644 --- a/lib/mysql/connector/pooling.py +++ b/lib/mysql/connector/pooling.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -112,12 +112,13 @@ def close(self): When the pool is configured to reset the session, the session state will be cleared by re-authenticating the user. """ - cnx = self._cnx - if self._cnx_pool.reset_session: - cnx.reset_session() - - self._cnx_pool.add_connection(cnx) - self._cnx = None + try: + cnx = self._cnx + if self._cnx_pool.reset_session: + cnx.reset_session() + finally: + self._cnx_pool.add_connection(cnx) + self._cnx = None def config(self, **kwargs): """Configuration is done through the pool""" diff --git a/tests/test_bugs.py b/tests/test_bugs.py index c04a9511..11f0988f 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4307,3 +4307,36 @@ def test_insert_binary(self): self.cnx.commit() self.assertEqual(1, cursor.lastrowid) cursor.close() + + +class BugOra25383644(tests.MySQLConnectorTests): + """BUG#25383644: LOST SERVER CONNECTION LEAKS POOLED CONNECTIONS + """ + def setUp(self): + config = tests.get_mysql_config() + config["pool_size"] = 3 + self.cnxpool = pooling.MySQLConnectionPool(**config) + self.mysql_server = tests.MYSQL_SERVERS[0] + + def test_pool_exhaustion(self): + sql = "SELECT * FROM dummy" + + i = 4 + while i > 0: + cnx = self.cnxpool.get_connection() + cur = cnx.cursor() + try: + self.mysql_server.stop() + self.mysql_server.wait_down() + cur.execute(sql) + except mysql.connector.errors.OperationalError: + try: + cur.close() + cnx.close() + except mysql.connector.errors.OperationalError: + pass + finally: + i -= 1 + if not self.mysql_server.check_running(): + self.mysql_server.start() + self.mysql_server.wait_up() From 3408dca1fdfbad3a38d3a15ffbfce9d5a9864257 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 20 Mar 2017 14:06:09 +0530 Subject: [PATCH 34/95] BUG25558885: Set default connection timeout to pure connector/python With any long running queries, the cext connector/python would lose connection to the server with the message: ERROR 2013 (LOST CONNECTION TO MYSQL SERVER) But the pure connector/python does not throw any such error. To make the behaviour consistent, we set the `connection_timeout` value to None. Test added for regression. --- lib/mysql/connector/abstracts.py | 2 +- lib/mysql/connector/connection.py | 1 - lib/mysql/connector/connection_cext.py | 3 +-- tests/test_bugs.py | 29 ++++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index 8eaad48d..928bd8ce 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -62,7 +62,7 @@ def __init__(self, **kwargs): self._use_unicode = True self._get_warnings = False self._raise_on_warnings = False - self._connection_timeout = None + self._connection_timeout = DEFAULT_CONFIGURATION["connect_timeout"] self._buffered = False self._unread_result = False self._have_next_result = False diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index b5c9d4b7..ebf0c385 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -78,7 +78,6 @@ def __init__(self, *args, **kwargs): self._use_unicode = True self._get_warnings = False self._raise_on_warnings = False - self._connection_timeout = None self._buffered = False self._unread_result = False self._have_next_result = False diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index e89e723c..cf29c3b8 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -65,7 +65,6 @@ def __init__(self, **kwargs): raise RuntimeError( "MySQL Connector/Python C Extension not available") self._cmysql = None - self._connection_timeout = 2 self._columns = [] self.converter = None super(CMySQLConnection, self).__init__(**kwargs) @@ -144,7 +143,7 @@ def _open_connection(self): buffered=self._buffered, raw=self._raw, charset_name=charset_name, - connection_timeout=int(self._connection_timeout or 10), + connection_timeout=(self._connection_timeout or 0), use_unicode=self._use_unicode, auth_plugin=self._auth_plugin) diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 11f0988f..d1ffd48c 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4340,3 +4340,32 @@ def test_pool_exhaustion(self): if not self.mysql_server.check_running(): self.mysql_server.start() self.mysql_server.wait_up() + + +class BugOra25558885(tests.MySQLConnectorTests): + """BUG#25558885: ERROR 2013 (LOST CONNECTION TO MYSQL SERVER) USING C + EXTENSIONS + """ + def setUp(self): + pass + + def _long_query(self, config, cursor_class): + db_conn = mysql.connector.connect(**config) + cur = db_conn.cursor(cursor_class=cursor_class) + cur.execute("select sleep(15)") + cur.close() + db_conn.disconnect() + + def test_cext_cnx(self): + config = tests.get_mysql_config() + config["use_pure"] = False + del config["connection_timeout"] + cursor_class = mysql.connector.cursor_cext.CMySQLCursorBufferedRaw + self._long_query(config, cursor_class) + + def test_pure_cnx(self): + config = tests.get_mysql_config() + config["use_pure"] = True + del config["connection_timeout"] + cursor_class = mysql.connector.cursor.MySQLCursorBufferedRaw + self._long_query(config, cursor_class) From 2998c263d9cb682924635b8d3fa72ce3d903cb72 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Wed, 22 Mar 2017 15:55:36 +0530 Subject: [PATCH 35/95] BUG20736339: Expect multiple include directories from mysql_config Patch is provided by the bug reporter. Tests added for regression. --- lib/cpy_distutils.py | 54 +++++++++++++++++++++++++------------------- tests/test_bugs.py | 29 ++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index e944ce65..04741ea6 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -136,21 +136,7 @@ def unix_lib_is64bit(lib_file): return False -def get_mysql_config_info(mysql_config): - """Get MySQL information using mysql_config tool - - Returns a dict. - """ - options = ['cflags', 'include', 'libs', 'libs_r', 'plugindir', 'version'] - - cmd = [mysql_config] + [ "--{0}".format(opt) for opt in options ] - - try: - proc = Popen(cmd, stdout=PIPE, universal_newlines=True) - stdout, _ = proc.communicate() - except OSError as exc: - raise DistutilsExecError("Failed executing mysql_config: {0}".format( - str(exc))) +def parse_mysql_config_info(options, stdout): log.debug("# stdout: {0}".format(stdout)) info = {} for option, line in zip(options, stdout.split('\n')): @@ -173,7 +159,28 @@ def get_mysql_config_info(mysql_config): info['lib_r_dir'] = libs[0].replace('-L', '') info['libs_r'] = [ lib.replace('-l', '') for lib in libs[1:] ] - info['include'] = info['include'].replace('-I', '') + info['include'] = [x.strip() for x in info['include'].split('-I')[1:]] + + return info + + +def get_mysql_config_info(mysql_config): + """Get MySQL information using mysql_config tool + + Returns a dict. + """ + options = ['cflags', 'include', 'libs', 'libs_r', 'plugindir', 'version'] + + cmd = [mysql_config] + [ "--{0}".format(opt) for opt in options ] + + try: + proc = Popen(cmd, stdout=PIPE, universal_newlines=True) + stdout, _ = proc.communicate() + except OSError as exc: + raise DistutilsExecError("Failed executing mysql_config: {0}".format( + str(exc))) + + info = parse_mysql_config_info(options, stdout) # Try to figure out the architecture info['arch'] = None @@ -316,7 +323,7 @@ def _finalize_connector_c(self, connc_loc): else: raise OSError("Unsupported platform: %s" % os.name) - include_dir = os.path.join(connc_loc, 'include') + include_dirs = [os.path.join(connc_loc, 'include')] if os.name == 'nt': libraries = ['libmysql'] else: @@ -341,19 +348,20 @@ def _finalize_connector_c(self, connc_loc): log.error(err_version) sys.exit(1) - include_dir = myc_info['include'] + include_dirs = myc_info['include'] libraries = myc_info['libs'] library_dirs = myc_info['lib_dir'] self._mysql_config_info = myc_info self.arch = self._mysql_config_info['arch'] connc_64bit = self.arch == 'x86_64' - if not os.path.exists(include_dir): - log.error(err_invalid_loc, connc_loc) - sys.exit(1) + for include_dir in include_dirs: + if not os.path.exists(include_dir): + log.error(err_invalid_loc, connc_loc) + sys.exit(1) # Set up the build_ext class - self.include_dirs.append(include_dir) + self.include_dirs.extend(include_dirs) self.libraries.extend(libraries) self.library_dirs.append(library_dirs) diff --git a/tests/test_bugs.py b/tests/test_bugs.py index d1ffd48c..fc26488e 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -53,6 +53,7 @@ errors, constants, pooling) from mysql.connector.optionfiles import read_option_files import mysql.connector +import cpy_distutils try: from mysql.connector.connection_cext import CMySQLConnection @@ -4369,3 +4370,31 @@ def test_pure_cnx(self): del config["connection_timeout"] cursor_class = mysql.connector.cursor.MySQLCursorBufferedRaw self._long_query(config, cursor_class) + + +class BugOra20736339(tests.MySQLConnectorTests): + """BUG#20736339: C EXTENSION FAILS TO COMPILE IF MYSQL_CONFIG RETURN MORE + THAN ONE INCLUDE DIR + """ + def test_parse_mysql_config(self): + options = ['cflags', 'include', 'libs', 'libs_r', 'plugindir', 'version'] + includes = ["/mysql/include", "/mysql/another_include"] + config = """ + -I/mysql/include -fabi-version=2 -fno-omit-frame-pointer + -I{0} + -L/mysql/lib -lmysqlclient -lpthread -lm -lrt -lssl -lcrypto -ldl + -L/mysql/lib -lmysqlclient -lpthread -lm -lrt -lssl -lcrypto -ldl + /mysql/lib/plugin + 5.7.17 + """ + + info = cpy_distutils.parse_mysql_config_info(options, + config.strip().format(includes[0])) + self.assertEqual(1, len(info["include"])) + self.assertEqual(includes[0], info["include"][0]) + + info = cpy_distutils.parse_mysql_config_info(options, + config.strip().format(" -I".join(includes))) + self.assertEqual(2, len(info["include"])) + self.assertEqual(includes[0], info["include"][0]) + self.assertEqual(includes[1], info["include"][1]) From ce091fac6ad100634f4086d487ae9ce8a146c0f7 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 24 Mar 2017 17:15:20 +0000 Subject: [PATCH 36/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 4eb351d1..624b21e5 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 4eb351d1a4d9a7978efc9766c70bee3c043837e0 +Subproject commit 624b21e50f0c3eb0eb572638d40cf9c9dbe8e0f0 From a3af52541cb14500f91f23b2b18c4b40bb5bccaa Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 27 Mar 2017 16:57:44 +0100 Subject: [PATCH 37/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 624b21e5..63de377d 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 624b21e50f0c3eb0eb572638d40cf9c9dbe8e0f0 +Subproject commit 63de377d4fe08cf465bd5a6731e2b4baae11401e From c506fd789072f2035d7aec2ecf3c27257eaa8ab4 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 28 Mar 2017 16:41:57 +0100 Subject: [PATCH 38/95] Prepare release 2.1.6 --- CHANGES.txt | 14 +++++++++++++- README.txt | 4 ++-- cpyint | 2 +- lib/mysql/connector/version.py | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 18112d17..6e2c797e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,11 +3,23 @@ MySQL Connector/Python 2.1 - Release Notes & Changes ==================================================== MySQL Connector/Python -Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. Full release notes: http://dev.mysql.com/doc/relnotes/connector-python/en/ +v2.1.6 +====== + +- BUG#25726671: Fix compatibility issues with the latest Django versions +- BUG#25558885: Set default connection timeout to pure connector/python +- BUG#25397650: Verify server certificate only if ssl_verify_cert is True +- BUG#25589496: Don't convert to unicode if non-ascii data is present +- BUG#25383644: Add connection back to pool on exception +- BUG#22476689: Importing world.sql fails with cext enabled +- BUG#20736339: Expect multiple include directories from mysql_config +- BUG#19685386: C extension tests are failing using MySQL 5.7.4 + v2.1.5 ====== diff --git a/README.txt b/README.txt index 773af0b1..46cce18a 100644 --- a/README.txt +++ b/README.txt @@ -3,7 +3,7 @@ MySQL Connector/Python 2.1 ========================== MySQL Connector/Python -Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. @@ -28,7 +28,7 @@ doubt, this particular copy of the software is released under the version 2 of the GNU General Public License. MySQL Connector/Python is brought to you by Oracle. -Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. diff --git a/cpyint b/cpyint index 63de377d..7dee586c 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 63de377d4fe08cf465bd5a6731e2b4baae11401e +Subproject commit 7dee586c747814e456382bcedab1a90a4ca9f830 diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index a3c311ca..f6b49d53 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -26,7 +26,7 @@ as mysql.connector.version. """ -VERSION = (2, 1, 5, '', 0) +VERSION = (2, 1, 6, '', 0) if VERSION[3] and VERSION[4]: VERSION_TEXT = '{0}.{1}.{2}{3}{4}'.format(*VERSION) From 94f2135c6b266ae85036f31336bfe2e3fa917255 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 28 Mar 2017 17:22:00 +0100 Subject: [PATCH 39/95] Add Python 3.4 and 3.5 as supported versions --- cpyint | 2 +- setupinfo.py | 8 +++++--- tests/test_setup.py | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cpyint b/cpyint index 7dee586c..c456b37f 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 7dee586c747814e456382bcedab1a90a4ca9f830 +Subproject commit c456b37f807d6f8d4351d17b2130a88429c68b76 diff --git a/setupinfo.py b/setupinfo.py index 6784a384..18998aef 100644 --- a/setupinfo.py +++ b/setupinfo.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -88,8 +88,8 @@ """ author = 'Oracle and/or its affiliates' author_email = '' -maintainer = 'Geert Vanderkelen' -maintainer_email = 'geert.vanderkelen@oracle.com' +maintainer = 'Nuno Mariz' +maintainer_email = 'nuno.mariz@oracle.com' cpy_gpl_license = "GNU GPLv2 (with FOSS License Exception)" keywords = "mysql db", url = 'http://dev.mysql.com/doc/connector-python/en/index.html' @@ -109,6 +109,8 @@ 'Programming Language :: Python :: 3.1', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', 'Topic :: Database', 'Topic :: Software Development', 'Topic :: Software Development :: Libraries :: Application Frameworks', diff --git a/tests/test_setup.py b/tests/test_setup.py index 11d03622..74a0313b 100644 --- a/tests/test_setup.py +++ b/tests/test_setup.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -132,7 +132,8 @@ def test_classifiers(self): for clsfr in setupinfo.classifiers: if 'Programming Language :: Python' in clsfr: ver = clsfr.replace('Programming Language :: Python :: ', '') - if ver not in ('2.6', '2.7', '3', '3.1', '3.2', '3.3'): + if ver not in ('2.6', '2.7', '3', '3.1', '3.2', '3.3', '3.4', + '3.5'): self.fail('Unsupported version in classifiers') if 'Development Status ::' in clsfr: status = clsfr.replace('Development Status :: ', '') From c2ce6ceb6d75f3cb4e66d773b49945acbd5a5bcd Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 10 Jul 2017 14:51:43 +0530 Subject: [PATCH 40/95] Migrate changes from master to master-2.1 --- examples/dates.py | 3 +- examples/microseconds.py | 5 +- lib/cpy_distutils.py | 119 +++++++++++++++++++++++++------ setupinfo.py | 4 +- src/exceptions.c | 5 +- src/mysql_capi.c | 14 +++- src/mysql_capi_conversion.c | 7 +- src/mysql_connector.c | 5 +- tests/__init__.py | 14 ++-- tests/cext/test_cext_api.py | 10 +-- tests/mysqld.py | 127 +++++++++++++++++++--------------- tests/test_abstracts.py | 2 + tests/test_bugs.py | 43 ++++++++++-- tests/test_cursor.py | 6 +- tests/test_mysql_datatypes.py | 16 ++--- unittests.py | 15 +++- 16 files changed, 280 insertions(+), 115 deletions(-) diff --git a/examples/dates.py b/examples/dates.py index 23469b00..af599050 100644 --- a/examples/dates.py +++ b/examples/dates.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -82,6 +82,7 @@ def main(config): except (mysql.connector.errors.Error, TypeError) as exc: output.append("Failed inserting {0}\nError: {1}\n".format( data, exc)) + cursor.execute(stmt_drop) raise # Read the names again and print them diff --git a/examples/microseconds.py b/examples/microseconds.py index 396241cc..9c30a343 100644 --- a/examples/microseconds.py +++ b/examples/microseconds.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -95,7 +95,8 @@ def main(config): except: # Ignoring the fact that it was not there pass - + + cursor.execute("DROP TABLE IF EXISTS relay_laps") cursor.close() cnx.close() diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index 04741ea6..55541a09 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -35,9 +35,11 @@ import os import shlex import struct -from subprocess import Popen, PIPE, STDOUT +from subprocess import Popen, PIPE, STDOUT, check_call import sys import platform +import shutil + ARCH_64BIT = sys.maxsize > 2**32 # Works with Python 2.6 and greater py_arch = '64-bit' if ARCH_64BIT else '32-bit' @@ -45,6 +47,10 @@ CEXT_OPTIONS = [ ('with-mysql-capi=', None, "Location of MySQL C API installation or path to mysql_config"), + ('extra-compile-args=', None, + "Extra compile args"), + ('extra-link-args=', None, + "Extra link args") ] CEXT_STATIC_OPTIONS = [ @@ -125,7 +131,11 @@ def unix_lib_is64bit(lib_file): lib_file = mysqlclient_libs[-1] log.debug("# Using file command to test lib_file {0}".format(lib_file)) - prc = Popen(['file', '-L', lib_file], stdin=PIPE, stderr=STDOUT, + if platform.uname() == 'SunOS': + cmd_list = ['file', '-L', lib_file] + else: + cmd_list = ['file', '-L', lib_file] + prc = Popen(cmd_list, stdin=PIPE, stderr=STDOUT, stdout=PIPE) stdout = prc.communicate()[0] stdout = stdout.split(':')[1] @@ -152,6 +162,9 @@ def parse_mysql_config_info(options, stdout): libs = shlex.split(info['libs']) info['lib_dir'] = libs[0].replace('-L', '') info['libs'] = [ lib.replace('-l', '') for lib in libs[1:] ] + if platform.uname()[0] == 'SunOS': + info['lib_dir'] = info['lib_dir'].replace('-R', '') + info['libs'] = [lib.replace('-R', '') for lib in info['libs']] log.debug("# info['libs']: ") for lib in info['libs']: log.debug("# {0}".format(lib)) @@ -185,7 +198,17 @@ def get_mysql_config_info(mysql_config): # Try to figure out the architecture info['arch'] = None if os.name == 'posix': - pathname = os.path.join(info['lib_dir'], 'lib' + info['libs'][0]) + '*' + if platform.uname()[0] == 'SunOS': + print("info['lib_dir']: {0}".format(info['lib_dir'])) + print("info['libs'][0]: {0}".format(info['libs'][0])) + pathname = os.path.abspath(os.path.join(info['lib_dir'], + 'lib', + info['libs'][0])) + '/*' + else: + pathname = os.path.join(info['lib_dir'], + 'lib' + info['libs'][0]) + '*' + print("# Looking mysqlclient_lib at path: {0}".format(pathname)) + log.debug("# searching mysqlclient_lib at: %s", pathname) libs = glob(pathname) mysqlclient_libs = [] for filepath in libs: @@ -205,7 +228,12 @@ def get_mysql_config_info(mysql_config): log.debug("#+ {0}".format(mysqlclient_lib)) log.debug("# tested mysqlclient_lib[-1]: " "{0}".format(mysqlclient_libs[-1])) - proc = Popen(['file', '-L', mysqlclient_libs[-1]], stdout=PIPE, + if platform.uname()[0] == 'SunOS': + print("mysqlclient_lib: {0}".format(mysqlclient_libs[-1])) + cmd_list = ['file', mysqlclient_libs[-1]] + else: + cmd_list = ['file', '-L', mysqlclient_libs[-1]] + proc = Popen(cmd_list, stdout=PIPE, universal_newlines=True) stdout, _ = proc.communicate() stdout = stdout.split(':')[1] @@ -258,6 +286,8 @@ class BuildExtDynamic(build_ext): def initialize_options(self): build_ext.initialize_options(self) + self.extra_compile_args = None + self.extra_link_args = None self.with_mysql_capi = None def _finalize_connector_c(self, connc_loc): @@ -367,10 +397,7 @@ def _finalize_connector_c(self, connc_loc): # We try to offer a nice message when the architecture of Python # is not the same as MySQL Connector/C binaries. - py_arch = '64-bit' if ARCH_64BIT else '32-bit' - log.debug("# Python architecture: {0}".format(py_arch)) - log.debug("# Python ARCH_64BIT: {0}".format(ARCH_64BIT)) - log.debug("# self.arch: {0}".format(self.arch)) + print("# self.arch: {0}".format(self.arch)) if ARCH_64BIT != connc_64bit: log.error("Python is {0}, but does not " "match MySQL C API {1} architecture, " @@ -381,11 +408,17 @@ def _finalize_connector_c(self, connc_loc): sys.exit(1) def finalize_options(self): - self.set_undefined_options('install', - ('with_mysql_capi', 'with_mysql_capi')) + self.set_undefined_options( + 'install', + ('extra_compile_args', 'extra_compile_args'), + ('extra_link_args', 'extra_link_args'), + ('with_mysql_capi', 'with_mysql_capi')) build_ext.finalize_options(self) + print("# Python architecture: {0}".format(py_arch)) + print("# Python ARCH_64BIT: {0}".format(ARCH_64BIT)) + if self.with_mysql_capi: self._finalize_connector_c(self.with_mysql_capi) @@ -430,6 +463,13 @@ def fix_compiler(self): # Add system headers to Extensions extra_compile_args sysheaders = [ '-isystem' + dir for dir in cc.include_dirs] for ext in self.extensions: + # Add extra compile args + if self.extra_compile_args: + ext.extra_compile_args.extend(self.extra_compile_args.split()) + # Add extra link args + if self.extra_link_args: + ext.extra_link_args.extend(self.extra_link_args.split()) + # Add system headers for sysheader in sysheaders: if sysheader not in ext.extra_compile_args: ext.extra_compile_args.append(sysheader) @@ -440,10 +480,16 @@ def fix_compiler(self): def run(self): """Run the command""" - if not self.with_mysql_capi: - return - if os.name == 'nt': + for ext in self.extensions: + # Use the multithread, static version of the run-time library + ext.extra_compile_args.append("/MT") + # Add extra compile args + if self.extra_compile_args: + ext.extra_compile_args.extend(self.extra_compile_args.split()) + # Add extra link args + if self.extra_link_args: + ext.extra_link_args.extend(self.extra_link_args.split()) build_ext.run(self) else: self.real_build_extensions = self.build_extensions @@ -460,11 +506,27 @@ class BuildExtStatic(BuildExtDynamic): user_options = build_ext.user_options + CEXT_OPTIONS def finalize_options(self): + install_obj = self.distribution.get_command_obj('install') + install_obj.with_mysql_capi = self.with_mysql_capi + install_obj.extra_compile_args = self.extra_compile_args + install_obj.extra_link_args = self.extra_link_args + install_obj.static = True + + options_pairs = [] + if not self.extra_compile_args: + options_pairs.append(('extra_compile_args', 'extra_compile_args')) + if not self.extra_link_args: + options_pairs.append(('extra_link_args', 'extra_link_args')) if not self.with_mysql_capi: - self.set_undefined_options('install', - ('with_mysql_capi', 'with_mysql_capi')) + options_pairs.append(('with_mysql_capi', 'with_mysql_capi')) + if options_pairs: + self.set_undefined_options('install', *options_pairs) build_ext.finalize_options(self) + + print("# Python architecture: {0}".format(py_arch)) + print("# Python ARCH_64BIT: {0}".format(ARCH_64BIT)) + self.connc_lib = os.path.join(self.build_temp, 'connc', 'lib') self.connc_include = os.path.join(self.build_temp, 'connc', 'include') @@ -500,7 +562,8 @@ def fix_compiler(self): if os.name == 'posix': include_dirs.append(self.connc_include) library_dirs.append(self.connc_lib) - libraries.append("mysqlclient") + if self.with_mysql_capi: + libraries.append("mysqlclient") # As we statically link and the "libmysqlclient.a" library # carry no information what it depends on, we need to @@ -512,6 +575,12 @@ def fix_compiler(self): ext.include_dirs.extend(include_dirs) ext.library_dirs.extend(library_dirs) ext.libraries.extend(libraries) + # Add extra compile args + if self.extra_compile_args: + ext.extra_compile_args.extend(self.extra_compile_args.split()) + # Add extra link args + if self.extra_link_args: + ext.extra_link_args.extend(self.extra_link_args.split()) class InstallLib(install_lib): @@ -560,23 +629,27 @@ class Install(install): def initialize_options(self): install.initialize_options(self) + self.extra_compile_args = None + self.extra_link_args = None self.with_mysql_capi = None self.byte_code_only = None self.static = None def finalize_options(self): if self.static: - log.info("Linking CExtension statically with MySQL libraries") + log.info("Linking C Extension statically with libraries") self.distribution.cmdclass['build_ext'] = BuildExtStatic if self.byte_code_only is None: self.byte_code_only = False + build_ext_obj = self.distribution.get_command_obj('build_ext') + build_ext_obj.with_mysql_capi = self.with_mysql_capi + build_ext_obj.extra_compile_args = self.extra_compile_args + build_ext_obj.extra_link_args = self.extra_link_args + build_ext_obj.static = self.static + if self.with_mysql_capi: - build_ext = self.distribution.get_command_obj('build_ext') - build_ext.with_mysql_capi = self.with_mysql_capi - build = self.distribution.get_command_obj('build_ext') - build.with_mysql_capi = self.with_mysql_capi self.need_ext = True if not self.need_ext: @@ -586,7 +659,7 @@ def finalize_options(self): def run(self): if not self.need_ext: - log.info("Not Installing C Extension") + log.info("Not Installing MySQL C Extension") else: - log.info("Installing C Extension") + log.info("Installing MySQL C Extension") install.run(self) diff --git a/setupinfo.py b/setupinfo.py index 18998aef..fe4602ec 100644 --- a/setupinfo.py +++ b/setupinfo.py @@ -59,7 +59,6 @@ package_dir = {'': 'lib'} name = 'mysql-connector-python' version = '{0}.{1}.{2}'.format(*VERSION[0:3]) - extensions = [ Extension("_mysql_connector", sources=[ @@ -69,8 +68,7 @@ "src/mysql_connector.c", "src/force_cpp_linkage.cc", ], - include_dirs=['src/include'], - ) + include_dirs=['src/include']), ] packages = [ diff --git a/src/exceptions.c b/src/exceptions.c index 5fa144fe..2009cff8 100644 --- a/src/exceptions.c +++ b/src/exceptions.c @@ -1,6 +1,6 @@ /* # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -25,6 +25,9 @@ #include +#ifdef MS_WINDOWS +#include +#endif #include #include "catch23.h" diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 370cceb8..36aa2995 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -30,6 +30,9 @@ #include #include +#ifdef MS_WINDOWS +#include +#endif #include #include "catch23.h" @@ -1039,8 +1042,13 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) #if MYSQL_VERSION_ID >= 50711 unsigned int ssl_mode; #endif - my_bool abool; - my_bool ssl_enabled= 0; +#if MYSQL_VERSION_ID >= 80001 + bool abool; + bool ssl_enabled= 0; +#else + my_bool abool; + my_bool ssl_enabled= 0; +#endif MYSQL *res; static char *kwlist[]= @@ -1214,6 +1222,7 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) res= mysql_real_connect(&self->session, host, user, password, database, port, unix_socket, client_flags); #else +{ char* c_password; if (PyUnicode_Check(password)) { @@ -1227,6 +1236,7 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) } res= mysql_real_connect(&self->session, host, user, c_password, database, port, unix_socket, client_flags); +} #endif Py_END_ALLOW_THREADS diff --git a/src/mysql_capi_conversion.c b/src/mysql_capi_conversion.c index d2d16556..56178ebd 100644 --- a/src/mysql_capi_conversion.c +++ b/src/mysql_capi_conversion.c @@ -1,6 +1,6 @@ /* # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -29,6 +29,9 @@ #include #include +#ifdef MS_WINDOWS +#include +#endif #include #include "catch23.h" @@ -760,4 +763,4 @@ mytopy_string(const char *data, const unsigned long length, return PyBytes_FromStringAndSize(data, length); #endif } -} \ No newline at end of file +} diff --git a/src/mysql_connector.c b/src/mysql_connector.c index bd6efd6f..8f991251 100644 --- a/src/mysql_connector.c +++ b/src/mysql_connector.c @@ -1,6 +1,6 @@ /* # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -30,6 +30,9 @@ #include "datetime.h" #include "structmember.h" +#ifdef MS_WINDOWS +#include +#endif #include #include "catch23.h" diff --git a/tests/__init__.py b/tests/__init__.py index bc753543..1eb5f129 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -41,7 +41,6 @@ from functools import wraps from pkgutil import walk_packages - LOGGER_NAME = "myconnpy_tests" LOGGER = logging.getLogger(LOGGER_NAME) PY2 = sys.version_info[0] == 2 @@ -752,7 +751,8 @@ def setup_logger(logger, debug=False, logfile=None): LOGGER.addHandler(handler) -def install_connector(root_dir, install_dir, connc_location=None): +def install_connector(root_dir, install_dir, connc_location=None, + extra_compile_args=None): """Install Connector/Python in working directory """ logfile = 'myconnpy_install.log' @@ -775,11 +775,15 @@ def install_connector(root_dir, install_dir, connc_location=None): cmd.extend([ 'install', '--root', install_dir, - '--install-lib', '.' + '--install-lib', '.', + '--static', ]) if connc_location: - cmd.extend(['--static', '--with-mysql-capi', connc_location]) + cmd.extend(['--with-mysql-capi', connc_location]) + + if extra_compile_args: + cmd.extend(['--extra-compile-args', extra_compile_args]) prc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, diff --git a/tests/cext/test_cext_api.py b/tests/cext/test_cext_api.py index 3a2cf741..a2545373 100644 --- a/tests/cext/test_cext_api.py +++ b/tests/cext/test_cext_api.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -301,10 +301,10 @@ def test_get_server_version(self): version = cmy.get_server_version() self.assertIsInstance(version, tuple) self.assertEqual(3, len(version)) - self.assertTrue(all([isinstance(v, int) and v > 0 for v in version])) + self.assertTrue(all([isinstance(v, int) for v in version])) - self.assertTrue(3 < version[0] < 7) - self.assertTrue(0 < version[1] < 20) + self.assertTrue(3 < version[0] < 9) + self.assertTrue(0 <= version[1] < 20) self.assertTrue(0 < version[2] < 99) def test_thread_id(self): @@ -426,6 +426,7 @@ def test_autocommit(self): cmy2.query("SELECT * FROM {0} WHERE c1 > 3".format(table)) self.assertEqual([(4,), (5,), (6,)], fetch_rows(cmy2)) + cmy1.query("DROP TABLE IF EXISTS {0}".format(table)) cmy1.close() cmy2.close() @@ -770,3 +771,4 @@ def test_next_result(self): have_more = cmy.next_result() self.assertEqual(exp, result) + cmy.query("DROP TABLE IF EXISTS {0}".format(table)) diff --git a/tests/mysqld.py b/tests/mysqld.py index e0073610..6c762b8a 100644 --- a/tests/mysqld.py +++ b/tests/mysqld.py @@ -343,10 +343,11 @@ def get_exec(self, exec_name): class MySQLServer(MySQLServerBase): """Class for managing a MySQL server""" - def __init__(self, basedir, topdir, cnf, bind_address, port, name, - datadir=None, tmpdir=None, unix_socket_folder=None, - ssl_folder=None, ssl_ca=None, ssl_cert=None, ssl_key=None, - sharedir=None): + def __init__(self, basedir, topdir, cnf, bind_address, port, + name, datadir=None, tmpdir=None, extra_args={}, + unix_socket_folder=None, ssl_folder=None, ssl_ca=None, + ssl_cert=None, ssl_key=None, sharedir=None): + self._extra_args = extra_args self._cnf = cnf self._option_file = os.path.join(topdir, 'my.cnf') self._bind_address = bind_address @@ -375,6 +376,7 @@ def __init__(self, basedir, topdir, cnf, bind_address, port, name, super(MySQLServer, self).__init__(self._basedir, self._option_file, sharedir=self._sharedir) + self._init_sql = os.path.join(self._topdir, 'init.sql') def _create_directories(self): """Create directory structure for bootstrapping @@ -388,9 +390,12 @@ def _create_directories(self): dirs = [ self._topdir, os.path.join(self._topdir, 'tmp'), - self._datadir, - os.path.join(self._datadir, 'mysql') ] + + if self._version[0:3] < (8, 0, 1): + dirs.append(self._datadir) + dirs.append(os.path.join(self._datadir, 'mysql')) + for adir in dirs: LOGGER.debug("Creating directory %s", adir) os.mkdir(adir) @@ -406,7 +411,6 @@ def _get_bootstrap_cmd(self): cmd = [ os.path.join(self._sbindir, EXEC_MYSQLD), '--no-defaults', - '--bootstrap', '--basedir=%s' % self._basedir, '--datadir=%s' % self._datadir, '--log-warnings=0', @@ -416,6 +420,13 @@ def _get_bootstrap_cmd(self): '--tmpdir=%s' % self._tmpdir, '--innodb_log_file_size=1Gb', ] + + if self._version[0:2] >= (8, 0): + cmd.append("--initialize-insecure") + cmd.append("--init-file={0}".format(self._init_sql)) + else: + cmd.append("--bootstrap") + if self._version[0:2] < (5, 5): cmd.append('--language={0}/english'.format(self._lc_messages_dir)) else: @@ -452,63 +463,61 @@ def bootstrap(self): extra_sql = [ "CREATE DATABASE myconnpy;" ] - insert = ( - "INSERT INTO mysql.user VALUES ('localhost','root'{0}," - "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," - "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," - "'Y','Y','Y','Y','Y','','','','',0,0,0,0," - "@@default_authentication_plugin,'','N'," - "CURRENT_TIMESTAMP,NULL{1});" - ) - # MySQL 5.7.5+ creates no user while bootstrapping - if self._version[0:3] >= (5, 7, 6): - # MySQL 5.7.6+ have extra account_locked col and no password col - extra_sql.append(insert.format("", ",'N'")) - elif self._version[0:3] >= (5, 7, 5): - extra_sql.append(insert.format(",''", "")) - - insert_localhost = ( - "INSERT INTO mysql.user SELECT '127.0.0.1', `User`{0}," - " `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`," - " `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`," - " `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`," - " `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`," - " `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`," - " `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`," - " `Show_view_priv`, `Create_routine_priv`, " - "`Alter_routine_priv`," - " `Create_user_priv`, `Event_priv`, `Trigger_priv`, " - "`Create_tablespace_priv`, `ssl_type`, `ssl_cipher`," - "`x509_issuer`, `x509_subject`, `max_questions`, `max_updates`," - "`max_connections`, `max_user_connections`, `plugin`," - "`authentication_string`, `password_expired`," - "`password_last_changed`, `password_lifetime`{1} FROM mysql.user " - "WHERE `user` = 'root' and `host` = 'localhost';" - ) - # MySQL 5.7.4+ only creates root@localhost - if self._version[0:3] >= (5, 7, 6): - extra_sql.append(insert_localhost.format("", ",`account_locked`")) + defaults = ("'root'{0}, " + "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," + "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," + "'Y','Y','Y','Y','Y','','','','',0,0,0,0," + "@@default_authentication_plugin,'','N'," + "CURRENT_TIMESTAMP,NULL{1}") + + hosts = ["::1", "127.0.0.1"] + if self._version[0:3] < (8, 0, 1): + # because we use --initialize-insecure for 8.0 above + # which already creates root @ localhost + hosts.append("localhost") + + insert = "INSERT INTO mysql.user VALUES {0};".format( + ", ".join("('{0}', {{0}})".format(host) for host in hosts)) + + if self._version[0:3] >= (8, 0, 1): + # No password column, has account_locked, Create_role_priv and + # Drop_role_priv columns + extra_sql.append(insert.format(defaults.format("", ", 'N', 'Y', 'Y'"))) + elif self._version[0:3] >= (5, 7, 6): + # No password column, has account_locked column + extra_sql.append(insert.format(defaults.format("", ", 'N'"))) elif self._version[0:3] >= (5, 7, 4): - extra_sql.append(insert_localhost.format(",`Password`", "")) + # The password column + extra_sql.append(insert.format(defaults.format(", ''", ""))) bootstrap_log = os.path.join(self._topdir, 'bootstrap.log') try: self._create_directories() cmd = self._get_bootstrap_cmd() sql = ["USE mysql;"] - for filename in script_files: - full_path = os.path.join(self._scriptdir, filename) - LOGGER.debug("Reading SQL from '%s'", full_path) - with open(full_path, 'r') as fp: - sql.extend([line.strip() for line in fp.readlines()]) - sql.extend(extra_sql) + + if self._version[0:2] >= (8, 0): + test_sql = open(self._init_sql, "w") + test_sql.write("\n".join(extra_sql)) + test_sql.close() + else: + for filename in script_files: + full_path = os.path.join(self._scriptdir, filename) + LOGGER.debug("Reading SQL from '%s'", full_path) + with open(full_path, 'r') as fp: + sql.extend([line.strip() for line in fp.readlines()]) + fp_log = open(bootstrap_log, 'w') - prc = subprocess.Popen(cmd, stdin=subprocess.PIPE, - stderr=subprocess.STDOUT, stdout=fp_log) - if sys.version_info[0] == 2: - prc.communicate('\n'.join(sql)) + if self._version[0:2] < (8, 0): + sql.extend(extra_sql) + prc = subprocess.Popen(cmd, stdin=subprocess.PIPE, + stderr=subprocess.STDOUT, + stdout=fp_log) + prc.communicate('\n'.join(sql) if sys.version_info[0] == 2 + else bytearray('\n'.join(sql), 'utf8')) else: - prc.communicate(bytearray('\n'.join(sql), 'utf8')) + prc = subprocess.call(cmd, stderr=subprocess.STDOUT, + stdout=fp_log) fp_log.close() except OSError as err: raise MySQLBootstrapError( @@ -553,6 +562,7 @@ def update_config(self, **kwargs): 'bind_address': self._bind_address, 'port': self._port, 'unix_socket': _convert_forward_slash(self._unix_socket), + 'ssl_dir': _convert_forward_slash(self._ssldir), 'ssl_ca': _convert_forward_slash(self._ssl_ca), 'ssl_cert': _convert_forward_slash(self._ssl_cert), 'ssl_key': _convert_forward_slash(self._ssl_key), @@ -561,6 +571,13 @@ def update_config(self, **kwargs): 'lc_messages_dir': _convert_forward_slash( self._lc_messages_dir), } + + for arg in self._extra_args: + if self._version < arg["version"]: + options.update(dict([(key, '') for key in + arg["options"].keys()])) + else: + options.update(arg["options"]) options.update(**kwargs) try: fp = open(self._option_file, 'w') diff --git a/tests/test_abstracts.py b/tests/test_abstracts.py index 662ac222..872db62d 100644 --- a/tests/test_abstracts.py +++ b/tests/test_abstracts.py @@ -213,6 +213,8 @@ def test_cmd_quit(self): self.cnx.cmd_quit() self.assertFalse(self.cnx.is_connected()) + @unittest.skipIf(tests.MYSQL_VERSION >= (8, 0, 1), + "As of MySQL 8.0.1, CMD_SHUTDOWN is not recognized.") @foreach_cnx() def test_cmd_shutdown(self): server = tests.MYSQL_SERVERS[0] diff --git a/tests/test_bugs.py b/tests/test_bugs.py index fc26488e..59825e8e 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -113,6 +113,8 @@ def test_execute_return(self): self.assertEqual(6, cur.rowcount) res = cur.execute("UPDATE %s SET id = id + %%s" % tbl, (10,)) self.assertEqual(8, cur.rowcount) + + cur.execute("DROP TABLE IF EXISTS {0}".format(tbl)) cur.close() self.cnx.close() @@ -661,6 +663,13 @@ class BugOra13395083(tests.MySQLConnectorTests): def setUp(self): self.table_name = 'BugOra13395083' + def tearDown(self): + config = tests.get_mysql_config() + cnx = connection.MySQLConnection(**config) + cur = cnx.cursor() + + cur.execute("DROP TABLE IF EXISTS {0}".format(self.table_name)) + @cnx_config(time_zone="+00:00") @foreach_cnx() def test_time_zone(self): @@ -860,6 +869,12 @@ def _setup(self): self.cnx.cmd_query("DROP TABLE IF EXISTS %s" % self.table) self.cnx.cmd_query("CREATE TABLE %s (id INT)" % self.table) + def tearDown(self): + config = tests.get_mysql_config() + self.cnx = connection.MySQLConnection(**config) + + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.table)) + @foreach_cnx(connection.MySQLConnection) def test_cmd_query(self): self._setup() @@ -947,6 +962,12 @@ def _setup(self): "PRIMARY KEY (`id`,`c1`))" % (self.tbl)) cur.execute(create) + def tearDown(self): + config = tests.get_mysql_config() + cnx = connection.MySQLConnection(**config) + cur = cnx.cursor() + cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl)) + @foreach_cnx() def test_executemany(self): self._setup() @@ -1804,6 +1825,8 @@ def test_load_csv(self): self.assertEqual(self.exp_rows, cur.fetchone()[0]) +@unittest.skipIf(tests.MYSQL_VERSION >= (8, 0, 1), + "BugOra17422299 not tested with MySQL version >= 8.0.1") class BugOra17422299(tests.MySQLConnectorTests): """BUG#17422299: cmd_shutdown fails with malformed connection packet """ @@ -2114,6 +2137,10 @@ def setUp(self): "PRIMARY KEY (`id`))" % (self.city_tbl)) self.cursor.execute(create) + def tearDown(self): + self.cursor.execute("DROP TABLE IF EXISTS {0}".format(self.city_tbl)) + self.cursor.execute("DROP TABLE IF EXISTS {0}".format(self.emp_tbl)) + def test_executemany(self): stmt = "INSERT INTO {0} (id,name) VALUES (%s,%s)".format( self.city_tbl) @@ -2453,6 +2480,15 @@ def _setup(self): cur.execute(create) cnx.close() + def tearDown(self): + config = tests.get_mysql_config() + config['use_unicode'] = True + cnx = connection.MySQLConnection(**config) + cur = cnx.cursor() + + cur.execute("DROP TABLE IF EXISTS {0}".format(self.table)) + cur.execute("DROP TABLE IF EXISTS {0}".format(self.table_cp1251)) + @cnx_config(use_unicode=True) @foreach_cnx(connection.MySQLConnection) def test_prepared_statement(self): @@ -2658,7 +2694,6 @@ def setUp(self): self.cnx.cmd_query(create) def tearDown(self): - return if self.cnx: self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) @@ -4187,17 +4222,17 @@ def tearDown(self): def test_big_column_count(self): cur = self.cnx.cursor(raw=False, buffered=False) # Create table with 512 Columns - table = "CREATE TABLE t ({0})".format( + table = "CREATE TABLE {0} ({1})".format(self.tbl, ", ".join(["c{0} INT".format(idx) for idx in range(512)])) cur.execute(table) # Insert 1 record - cur.execute("INSERT INTO t(c1) values (1) ") + cur.execute("INSERT INTO {0}(c1) values (1) ".format(self.tbl)) self.cnx.commit() # Select from 10 tables query = "SELECT * FROM {0} WHERE a1.c1 > 0".format( - ", ".join(["t a{0}".format(idx) for idx in range(10)])) + ", ".join(["{0} a{1}".format(self.tbl, idx) for idx in range(10)])) cur.execute(query) cur.fetchone() cur.close() diff --git a/tests/test_cursor.py b/tests/test_cursor.py index 59e40a12..2f60827e 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -1340,6 +1340,7 @@ def setUp(self): 'name VARCHAR(20), city VARCHAR(20))') def tearDown(self): + self.cur.execute('DROP TABLE IF EXISTS MySQLCursorBufferedDictTests') self.cur.close() self.connection.close() @@ -1414,6 +1415,9 @@ def setUp(self): 'id INT(10), name VARCHAR(20), city VARCHAR(20))') def tearDown(self): + self.cur.execute('DROP TABLE IF EXISTS ' + 'MySQLCursorBufferedNamedTupleTests') + self.cur.close() self.connection.close() diff --git a/tests/test_mysql_datatypes.py b/tests/test_mysql_datatypes.py index 11730d9d..7c4f5797 100644 --- a/tests/test_mysql_datatypes.py +++ b/tests/test_mysql_datatypes.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -84,16 +84,14 @@ def drop_tables(self, cnx): class TestsCursor(TestsDataTypes): def setUp(self): - pass - #self.config = tests.get_mysql_config() - #cnx = connection.MySQLConnection(**self.config) - #self.drop_tables(cnx) + self.config = tests.get_mysql_config() + cnx = connection.MySQLConnection(**self.config) + self.drop_tables(cnx) def tearDown(self): - pass - #cnx = connection.MySQLConnection(**self.config) - #self.drop_tables(cnx) - #cnx.close() + cnx = connection.MySQLConnection(**self.config) + self.drop_tables(cnx) + cnx.close() @foreach_cnx() def test_numeric_int(self): diff --git a/unittests.py b/unittests.py index bfcc19a6..2b3c7a44 100644 --- a/unittests.py +++ b/unittests.py @@ -96,10 +96,12 @@ tests.TEST_BUILD_DIR = os.path.join(_TOPDIR, 'build', 'testing') sys.path.insert(0, tests.TEST_BUILD_DIR) - # MySQL option file template. Platform specifics dynamically added later. MY_CNF = """ # MySQL option file for MySQL Connector/Python tests +[mysqld-8.0] +information-schema-stats=LATEST + [mysqld-5.6] innodb_compression_level = 0 innodb_compression_failure_threshold_pct = 0 @@ -330,6 +332,12 @@ 'default': 'xmlrpc', 'help': ("Protocol to talk to MySQL Fabric") }, + + ('', '--extra-compile-args'): { + 'dest': 'extra_compile_args', 'metavar': 'NAME', + 'default': None, + 'help': ("Extra compile args for the C extension") + }, } @@ -593,6 +601,7 @@ def setup_stats_db(cnx): def init_mysql_server(port, options): """Initialize a MySQL Server""" name = 'server{0}'.format(len(tests.MYSQL_SERVERS) + 1) + extra_args = [] try: mysql_server = mysqld.MySQLServer( @@ -607,6 +616,7 @@ def init_mysql_server(port, options): ssl_cert="tests_server_cert.pem", ssl_key="tests_server_key.pem", name=name, + extra_args=extra_args, sharedir=options.mysql_sharedir) except tests.mysqld.MySQLBootstrapError as err: LOGGER.error("Failed initializing MySQL server " @@ -758,7 +768,8 @@ def main(): tests.MYSQL_CAPI = options.mysql_capi if not options.skip_install: tests.install_connector(_TOPDIR, tests.TEST_BUILD_DIR, - options.mysql_capi) + options.mysql_capi, + options.extra_compile_args) # Which tests cases to run testcases = [] From 1ede77a1f19860462314e793a9656736db9dabc5 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 10 Jul 2017 14:52:20 +0530 Subject: [PATCH 41/95] BUG22825962: fix memory leak on escape_string() When a unicode string is escaped using the `escape_string` method in the CAPI, a PyString object is created from the PyUnicode object. This object's reference is not decremented, which causes the memory leak. --- src/mysql_capi.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 36aa2995..94253bda 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1318,20 +1318,20 @@ MySQL_escape_string(MySQL *self, PyObject *value) { return NULL; } + from_size= BytesSize(from); + from_str= PyBytesAsString(from); } #ifndef PY3 // Python v2 str else if (PyString_Check(value)) - { - from= value; - } #else // Python v3 bytes else if (PyBytes_Check(value)) +#endif { - from= value; + from_size= BytesSize(value); + from_str= PyBytesAsString(value); } -#endif else { #ifdef PY3 @@ -1342,10 +1342,8 @@ MySQL_escape_string(MySQL *self, PyObject *value) return NULL; } - from_size= BytesSize(from); to= BytesFromStringAndSize(NULL, from_size * 2 + 1); to_str= PyBytesAsString(to); - from_str= PyBytesAsString(from); Py_BEGIN_ALLOW_THREADS escaped_size= (Py_ssize_t)mysql_real_escape_string(&self->session, to_str, @@ -1354,6 +1352,7 @@ MySQL_escape_string(MySQL *self, PyObject *value) Py_END_ALLOW_THREADS BytesResize(&to, escaped_size); + Py_XDECREF(from); if (!to) { From 6391ccb190d2d37f0d8f59e594cca2887b76eedc Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 10 Jul 2017 14:52:46 +0530 Subject: [PATCH 42/95] BUG22880163: Fix memory leak on using Named Tuple Cursors Currently separate namedtuple class is created for each single row retrieved from DB. That is each single row has **its own** namedtuple class. Recreating of separate namedtuple classes not only reduces performance, but also results in higher memory usage and memory leaks. This patch fixes the issue for both Pure python and C Extension. --- lib/mysql/connector/abstracts.py | 3 +++ lib/mysql/connector/cursor.py | 11 ++++++++--- lib/mysql/connector/cursor_cext.py | 10 ++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index 928bd8ce..ce4cf38e 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -26,6 +26,7 @@ from abc import ABCMeta, abstractmethod, abstractproperty import re import time +import weakref from .catch23 import make_abc, BYTE_TYPES from .conversion import MySQLConverterBase @@ -33,6 +34,8 @@ from .optionfiles import MySQLOptionsParser from . import errors +NAMED_TUPLE_CACHE = weakref.WeakValueDictionary() + @make_abc(ABCMeta) class MySQLConnectionAbstract(object): diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 3002192c..c4942671 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -29,7 +29,7 @@ import weakref from . import errors -from .abstracts import MySQLCursorAbstract +from .abstracts import MySQLCursorAbstract, NAMED_TUPLE_CACHE from .catch23 import PY2 SQL_COMMENT = r"\/\*.*?\*\/" @@ -1293,9 +1293,14 @@ def _row_to_python(self, rowdata, desc=None): if row: # pylint: disable=W0201 - self.named_tuple = namedtuple('Row', self.column_names) + columns = tuple(self.column_names) + try: + named_tuple = NAMED_TUPLE_CACHE[columns] + except KeyError: + named_tuple = namedtuple('Row', columns) + NAMED_TUPLE_CACHE[columns] = named_tuple # pylint: enable=W0201 - return self.named_tuple(*row) + return named_tuple(*row) def fetchone(self): """Returns next row of a query result set diff --git a/lib/mysql/connector/cursor_cext.py b/lib/mysql/connector/cursor_cext.py index df5fed39..41f120ff 100644 --- a/lib/mysql/connector/cursor_cext.py +++ b/lib/mysql/connector/cursor_cext.py @@ -30,7 +30,8 @@ from _mysql_connector import MySQLInterfaceError # pylint: disable=F0401,E0611 -from .abstracts import MySQLConnectionAbstract, MySQLCursorAbstract +from .abstracts import (MySQLConnectionAbstract, MySQLCursorAbstract, + NAMED_TUPLE_CACHE) from .catch23 import PY2, isunicode from . import errors from .errorcode import CR_NO_RESULT_SET @@ -757,7 +758,12 @@ def _handle_resultset(self): """Handle a result set""" super(CMySQLCursorNamedTuple, self)._handle_resultset() # pylint: disable=W0201 - self.named_tuple = namedtuple('Row', self.column_names) + columns = tuple(self.column_names) + try: + self.named_tuple = NAMED_TUPLE_CACHE[columns] + except KeyError: + self.named_tuple = namedtuple('Row', columns) + NAMED_TUPLE_CACHE[columns] = self.named_tuple # pylint: enable=W0201 def fetchone(self): From 636a7e51cb06aa457c780ccfac28d84fc2eb4b91 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Mon, 10 Jul 2017 14:56:00 +0530 Subject: [PATCH 43/95] BUG26376334: Fix prepared statements in MySQL 8.0 In MySQL 8.0, all prepared statements hang on calling `fetchall` on a cursor. This happens because the server expects a CMD_STMT_FETCH command from the client to send the results of the prepared query. This patch adds new flags to the `MySQLCursorPrepared` class to check for `SERVER_STATUS_CURSOR_EXISTS` and `SERVER_STATUS_LAST_ROW_SENT` flags in the EOF/OK packets and then send `CMD_STMT_FETCH` command accordingly. Tests failing with MySQL 8.0 will now pass with this patch. --- lib/mysql/connector/connection.py | 11 ++++++ lib/mysql/connector/constants.py | 30 ++++++++++++++- lib/mysql/connector/cursor.py | 61 ++++++++++++++++++++++++++----- lib/mysql/connector/protocol.py | 4 ++ 4 files changed, 94 insertions(+), 12 deletions(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index ebf0c385..74f36313 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -933,6 +933,17 @@ def _handle_binary_result(self, packet): eof = self._handle_eof(self._socket.recv()) return (column_count, columns, eof) + def cmd_stmt_fetch(self, statement_id, rows=1): + """Fetch a MySQL statement Result Set + + This method will send the FETCH command to MySQL together with the + given statement id and the number of rows to fetch. + """ + packet = self._protocol.make_stmt_fetch(statement_id, rows) + self.unread_result = False + self._send_cmd(ServerCmd.STMT_FETCH, packet, expect_response=False) + self.unread_result = True + def cmd_stmt_prepare(self, statement): """Prepare a MySQL statement diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index 709e675b..4b4e4bd7 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -472,6 +472,11 @@ class ServerFlag(_Flags): STATUS_LAST_ROW_SENT = 1 << 7 STATUS_DB_DROPPED = 1 << 8 STATUS_NO_BACKSLASH_ESCAPES = 1 << 9 + SERVER_STATUS_METADATA_CHANGED = 1 << 10 + SERVER_QUERY_WAS_SLOW = 1 << 11 + SERVER_PS_OUT_PARAMS = 1 << 12 + SERVER_STATUS_IN_TRANS_READONLY = 1 << 13 + SERVER_SESSION_STATE_CHANGED = 1 << 14 desc = { 'SERVER_STATUS_IN_TRANS': (1 << 0, @@ -483,10 +488,31 @@ class ServerFlag(_Flags): 'next query exists'), 'SERVER_QUERY_NO_GOOD_INDEX_USED': (1 << 4, ''), 'SERVER_QUERY_NO_INDEX_USED': (1 << 5, ''), - 'SERVER_STATUS_CURSOR_EXISTS': (1 << 6, ''), - 'SERVER_STATUS_LAST_ROW_SENT': (1 << 7, ''), + 'SERVER_STATUS_CURSOR_EXISTS': (1 << 6, + 'Set when server opened a read-only ' + 'non-scrollable cursor for a query.'), + 'SERVER_STATUS_LAST_ROW_SENT': (1 << 7, + 'Set when a read-only cursor is ' + 'exhausted'), 'SERVER_STATUS_DB_DROPPED': (1 << 8, 'A database was dropped'), 'SERVER_STATUS_NO_BACKSLASH_ESCAPES': (1 << 9, ''), + 'SERVER_STATUS_METADATA_CHANGED': (1024, + 'Set if after a prepared statement ' + 'reprepare we discovered that the ' + 'new statement returns a different ' + 'number of result set columns.'), + 'SERVER_QUERY_WAS_SLOW': (2048, ''), + 'SERVER_PS_OUT_PARAMS': (4096, + 'To mark ResultSet containing output ' + 'parameter values.'), + 'SERVER_STATUS_IN_TRANS_READONLY': (8192, + 'Set if multi-statement ' + 'transaction is a read-only ' + 'transaction.'), + 'SERVER_SESSION_STATE_CHANGED': (1 << 14, + 'Session state has changed on the ' + 'server because of the execution of ' + 'the last statement'), } diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index c4942671..b9549b98 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -31,6 +31,7 @@ from . import errors from .abstracts import MySQLCursorAbstract, NAMED_TUPLE_CACHE from .catch23 import PY2 +from .constants import ServerFlag SQL_COMMENT = r"\/\*.*?\*\/" RE_SQL_COMMENT = re.compile( @@ -60,6 +61,7 @@ ERR_NO_RESULT_TO_FETCH = "No result set to fetch from" +MAX_RESULTS = 4294967295 class _ParamSubstitutor(object): """ @@ -1080,6 +1082,36 @@ def __init__(self, connection=None): self._prepared = None self._binary = True self._have_result = None + self._last_row_sent = False + self._cursor_exists = False + + def reset(self, free=True): + if self._prepared: + try: + self._connection.cmd_stmt_close(self._prepared['statement_id']) + except errors.Error: + # We tried to deallocate, but it's OK when we fail. + pass + self._prepared = None + self._last_row_sent = False + self._cursor_exists = False + + def _handle_noresultset(self, res): + self._handle_server_status(res.get('status_flag', + res.get('server_status', 0))) + super(MySQLCursorPrepared, self)._handle_noresultset(res) + + def _handle_server_status(self, flags): + """Check for SERVER_STATUS_CURSOR_EXISTS and + SERVER_STATUS_LAST_ROW_SENT flags set by the server. + """ + self._cursor_exists = flags & ServerFlag.STATUS_CURSOR_EXISTS != 0 + self._last_row_sent = flags & ServerFlag.STATUS_LAST_ROW_SENT != 0 + + def _handle_eof(self, eof): + self._handle_server_status(eof.get('status_flag', + eof.get('server_status', 0))) + super(MySQLCursorPrepared, self)._handle_eof(eof) def callproc(self, *args, **kwargs): """Calls a stored procedue @@ -1094,13 +1126,7 @@ def close(self): This method will try to deallocate the prepared statement and close the cursor. """ - if self._prepared: - try: - self._connection.cmd_stmt_close(self._prepared['statement_id']) - except errors.Error: - # We tried to deallocate, but it's OK when we fail. - pass - self._prepared = None + self.reset() super(MySQLCursorPrepared, self).close() def _row_to_python(self, rowdata, desc=None): @@ -1122,6 +1148,11 @@ def _handle_result(self, res): self._connection.unread_result = True self._have_result = True + if 'status_flag' in res[2]: + self._handle_server_status(res[2]['status_flag']) + elif 'server_status' in res[2]: + self._handle_server_status(res[2]['server_status']) + def execute(self, operation, params=(), multi=False): # multi is unused """Prepare and execute a MySQL Prepared Statement @@ -1199,6 +1230,8 @@ def fetchone(self): Returns a tuple or None. """ + if self._cursor_exists: + self._connection.cmd_stmt_fetch(self._prepared['statement_id']) return self._fetch_row() or None def fetchmany(self, size=None): @@ -1214,10 +1247,18 @@ def fetchmany(self, size=None): def fetchall(self): if not self._have_unread_result(): raise errors.InterfaceError("No result set to fetch from.") - (rows, eof) = self._connection.get_rows( - binary=self._binary, columns=self.description) + rows = [] + if self._nextrow[0]: + rows.append(self._nextrow[0]) + while self._have_unread_result(): + if self._cursor_exists: + self._connection.cmd_stmt_fetch( + self._prepared['statement_id'], MAX_RESULTS) + (tmp, eof) = self._connection.get_rows( + binary=self._binary, columns=self.description) + rows.extend(tmp) + self._handle_eof(eof) self._rowcount = len(rows) - self._handle_eof(eof) return rows diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index 90148970..ff7331c1 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -123,6 +123,10 @@ def make_command(self, command, argument=None): data += argument return data + def make_stmt_fetch(self, statement_id, rows=1): + """Make a MySQL packet with Fetch Statement command""" + return utils.int4store(statement_id) + utils.int4store(rows) + def make_change_user(self, handshake, username=None, password=None, database=None, charset=33, client_flags=0, ssl_enabled=False, auth_plugin=None): From 1015a887910209978152329a5e478c6436b0d40a Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 4 Jul 2017 12:04:06 +0100 Subject: [PATCH 44/95] BUG22564149: Fix cmd_query_iter() when using bytestrings with Python 2 Executing cmd_query_iter() raises an exception when using bytestrings statements with Python 2. This patch verifies if the statements are already bytestrings before attempting to encode them. A test was added for regression. --- lib/mysql/connector/connection.py | 9 ++++----- tests/test_bugs.py | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 74f36313..d9b3e9d6 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -29,7 +29,7 @@ import time from .authentication import get_auth_plugin -from .catch23 import PY2, isstr +from .catch23 import PY2, isstr, UNICODE_TYPES from .constants import ( ClientFlag, ServerCmd, ServerFlag, flag_is_set, ShutdownType, NET_BUFFER_LENGTH @@ -517,10 +517,9 @@ def cmd_query_iter(self, statements): Returns a generator. """ if not isinstance(statements, bytearray): - if isstr(statements): - statements = bytearray(statements.encode('utf-8')) - else: - statements = bytearray(statements) + if isstr(statements) and isinstance(statements, UNICODE_TYPES): + statements = statements.encode('utf8') + statements = bytearray(statements) # Handle the first query result yield self._handle_result(self._send_cmd(ServerCmd.QUERY, statements)) diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 59825e8e..f27303e9 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4433,3 +4433,30 @@ def test_parse_mysql_config(self): self.assertEqual(2, len(info["include"])) self.assertEqual(includes[0], info["include"][0]) self.assertEqual(includes[1], info["include"][1]) + + +class BugOra22564149(tests.MySQLConnectorTests): + """BUG#22564149: CMD_QUERY_ITER ERRONEOUSLY CALLS ".ENCODE('UTF8')" ON + BYTESTRINGS + """ + def setUp(self): + config = tests.get_mysql_config() + self.tbl = "BugOra22564149" + self.cnx = connection.MySQLConnection(**config) + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) + self.cnx.cmd_query("CREATE TABLE {0} (id INT, name VARCHAR(50))" + "".format(self.tbl)) + + def tearDown(self): + self.cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(self.tbl)) + self.cnx.close() + + def test_cmd_query_iter(self): + stmt = (u"SELECT 1; INSERT INTO {0} VALUES (1, 'João'),(2, 'André'); " + u"SELECT 3") + results = [] + for result in self.cnx.cmd_query_iter( + stmt.format(self.tbl).encode("utf-8")): + results.append(result) + if "columns" in result: + results.append(self.cnx.get_rows()) From dc7d71a071e8529d7712ca7daed5b5ea5ba732e5 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 30 Jun 2017 16:29:27 +0100 Subject: [PATCH 45/95] BUG24342757: Fix unclosed socket on connection failure Creating a Connection instance with use_pure=True and specifying an invalid password causes a ResourceWarning, when using Python 3.5.2 with -b -Wall, as the underlying socket is not closed in such a case. This patch fixes this issue by closing the socket upon exception raised. --- lib/mysql/connector/connection.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index d9b3e9d6..15a2338d 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -91,7 +91,12 @@ def __init__(self, *args, **kwargs): self._pool_config_version = None if len(kwargs) > 0: - self.connect(**kwargs) + try: + self.connect(**kwargs) + except: + # Tidy-up underlying socket on failure + self.close() + raise def _do_handshake(self): """Get the handshake from the MySQL server""" @@ -224,6 +229,7 @@ def shutdown(self): self._socket.shutdown() except (AttributeError, errors.Error): pass # Getting an exception would mean we are disconnected. + self._socket = None def close(self): """Disconnect from the MySQL server""" @@ -235,6 +241,8 @@ def close(self): self._socket.close_connection() except (AttributeError, errors.Error): pass # Getting an exception would mean we are disconnected. + self._socket = None + disconnect = close def _send_cmd(self, command, argument=None, packet_number=0, packet=None, From 14a177ad0429bd04659b314e3fbf469203668a8e Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 10 Jul 2017 11:56:12 +0100 Subject: [PATCH 46/95] BUG24659561: Fix MySQLCursor.executemany() when using utf8mb4 charset Inserting multiple rows into a table will fail with a LookupError when using a connection with utf8mb4 charset. This patch changes the charset used in MySQLCursor.executemany() to the Python charset for current connection. A test case was added for regression. --- lib/mysql/connector/cursor.py | 4 ++-- tests/test_bugs.py | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index b9549b98..2b549f9f 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -589,11 +589,11 @@ def remove_comments(match): "Failed rewriting statement for multi-row INSERT. " "Check SQL syntax." ) - fmt = matches.group(1).encode(self._connection.charset) + fmt = matches.group(1).encode(self._connection.python_charset) values = [] try: - stmt = operation.encode(self._connection.charset) + stmt = operation.encode(self._connection.python_charset) for params in seq_params: tmp = fmt if isinstance(params, dict): diff --git a/tests/test_bugs.py b/tests/test_bugs.py index f27303e9..57b6ee9a 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4460,3 +4460,27 @@ def test_cmd_query_iter(self): results.append(result) if "columns" in result: results.append(self.cnx.get_rows()) + + +class BugOra24659561(tests.MySQLConnectorTests): + """BUG#24659561: LOOKUPERROR: UNKNOWN ENCODING: UTF8MB4 + """ + def setUp(self): + config = tests.get_mysql_config() + config["charset"] = "utf8mb4" + self.tbl = "BugOra24659561" + self.cnx = connection.MySQLConnection(**config) + self.cur = self.cnx.cursor() + self.cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl)) + self.cur.execute("CREATE TABLE {0} (id INT, name VARCHAR(100))" + "".format(self.tbl)) + + def tearDown(self): + self.cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl)) + self.cur.close() + + def test_executemany_utf8mb4(self): + self.cur.executemany( + "INSERT INTO {0} VALUES (%s, %s)".format(self.tbl), + [(1, "Nuno"), (2, "Amitabh"), (3, "Rafael")] + ) From 4bfe304bad29bb2a4e335792a10b0819a139d779 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 30 Jun 2017 09:24:44 +0100 Subject: [PATCH 47/95] BUG25965922: Add support for Django 1.11 This patch fixes the following issues with Django 1.11: - Added optional name parameter to create_cursor in base.py to allow for name variable being passed in base backend _cursor method. - Added DatabaseWrapper class attributes to base.py required in Django 1.11 base backend. - Added column default in DatabaseIntrospection. Tests were modified for regression. --- lib/mysql/connector/django/base.py | 26 +++++++---- lib/mysql/connector/django/introspection.py | 48 ++++++++++++++++++++- tests/test_django.py | 22 ++++++++-- 3 files changed, 83 insertions(+), 13 deletions(-) diff --git a/lib/mysql/connector/django/base.py b/lib/mysql/connector/django/base.py index 7ffc2223..fcdbbe01 100644 --- a/lib/mysql/connector/django/base.py +++ b/lib/mysql/connector/django/base.py @@ -22,6 +22,7 @@ import warnings import django +from django.core.exceptions import ImproperlyConfigured from django.utils.functional import cached_property try: @@ -29,7 +30,6 @@ from mysql.connector.conversion import MySQLConverter, MySQLConverterBase from mysql.connector.catch23 import PY2 except ImportError as err: - from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured( "Error loading mysql.connector module: {0}".format(err)) @@ -47,7 +47,6 @@ HAVE_CEXT = True if version < (1, 1): - from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured( "MySQL Connector/Python v1.1.0 or newer " "is required; you have %s" % mysql.connector.__version__) @@ -332,6 +331,14 @@ def data_types(self): SchemaEditorClass = DatabaseSchemaEditor Database = mysql.connector + if django.VERSION >= (1, 11): + client_class = DatabaseClient + creation_class = DatabaseCreation + features_class = DatabaseFeatures + introspection_class = DatabaseIntrospection + ops_class = DatabaseOperations + validation_class = DatabaseValidation + def __init__(self, *args, **kwargs): super(DatabaseWrapper, self).__init__(*args, **kwargs) @@ -344,12 +351,13 @@ def __init__(self, *args, **kwargs): self.converter = DjangoCMySQLConverter() else: self.converter = DjangoMySQLConverter() - self.ops = DatabaseOperations(self) - self.features = DatabaseFeatures(self) - self.client = DatabaseClient(self) - self.creation = DatabaseCreation(self) - self.introspection = DatabaseIntrospection(self) - self.validation = DatabaseValidation(self) + if django.VERSION < (1, 11): + self.ops = DatabaseOperations(self) + self.features = DatabaseFeatures(self) + self.client = DatabaseClient(self) + self.creation = DatabaseCreation(self) + self.introspection = DatabaseIntrospection(self) + self.validation = DatabaseValidation(self) def _valid_connection(self): if self.connection: @@ -418,7 +426,7 @@ def init_connection_state(self): except AttributeError: self._set_autocommit(self.settings_dict['AUTOCOMMIT']) - def create_cursor(self): + def create_cursor(self, name=None): # Django 1.6 cursor = self.connection.cursor() return CursorWrapper(cursor) diff --git a/lib/mysql/connector/django/introspection.py b/lib/mysql/connector/django/introspection.py index 35b30182..e82623fd 100644 --- a/lib/mysql/connector/django/introspection.py +++ b/lib/mysql/connector/django/introspection.py @@ -72,7 +72,53 @@ def get_table_list(self, cursor): else: return [row[0] for row in cursor.fetchall()] - if django.VERSION >= (1, 8): + if django.VERSION >= (1, 11): + def get_table_description(self, cursor, table_name): + """ + Returns a description of the table, with the DB-API + cursor.description interface." + """ + # - information_schema database gives more accurate results for + # some figures: + # - varchar length returned by cursor.description is an internal + # length, not visible length (#5725) + # - precision and scale (for decimal fields) (#5014) + # - auto_increment is not available in cursor.description + + InfoLine = namedtuple('InfoLine', 'col_name data_type max_len ' + 'num_prec num_scale extra column_default') + cursor.execute(""" + SELECT column_name, data_type, character_maximum_length, + numeric_precision, numeric_scale, extra, column_default + FROM information_schema.columns + WHERE table_name = %s AND table_schema = DATABASE()""", + [table_name]) + field_info = dict( + (line[0], InfoLine(*line)) for line in cursor.fetchall() + ) + + cursor.execute("SELECT * FROM %s LIMIT 1" + % self.connection.ops.quote_name(table_name)) + to_int = lambda i: int(i) if i is not None else i + fields = [] + for line in cursor.description: + col_name = force_text(line[0]) + fields.append( + FieldInfo(*( + (col_name,) + + line[1:3] + + ( + to_int(field_info[col_name].max_len) or line[3], + to_int(field_info[col_name].num_prec) or line[4], + to_int(field_info[col_name].num_scale) or line[5], + line[6], + field_info[col_name].column_default, + field_info[col_name].extra, + ) + )) + ) + return fields + elif django.VERSION >= (1, 8): def get_table_description(self, cursor, table_name): """ Returns a description of the table, with the DB-API diff --git a/tests/test_django.py b/tests/test_django.py index 6a94f3b4..917ed3ba 100644 --- a/tests/test_django.py +++ b/tests/test_django.py @@ -148,8 +148,12 @@ def test_get_table_list(self): if sys.version_info < (2, 7): self.assertTrue(exp in self.introspect.get_table_list(cur)) else: - res = any(table.name == exp - for table in self.introspect.get_table_list(cur)) + if tests.DJANGO_VERSION < (1, 8): + res = any(table == exp + for table in self.introspect.get_table_list(cur)) + else: + res = any(table.name == exp + for table in self.introspect.get_table_list(cur)) self.assertTrue(res, "Table {table_name} not in table list" "".format(table_name=exp)) @@ -174,7 +178,7 @@ def test_get_table_description(self): internal_size=20, precision=None, scale=None, null_ok=1) ] - else: + elif tests.DJANGO_VERSION < (1, 11): exp = [ FieldInfo(name=u'id', type_code=3, display_size=None, internal_size=None, precision=10, scale=None, @@ -186,6 +190,18 @@ def test_get_table_description(self): internal_size=20, precision=None, scale=None, null_ok=1, extra=u'') ] + else: + exp = [ + FieldInfo(name=u'id', type_code=3, display_size=None, + internal_size=None, precision=10, scale=None, + null_ok=0, default=None, extra=u'auto_increment'), + FieldInfo(name=u'c1', type_code=3, display_size=None, + internal_size=None, precision=10, scale=None, + null_ok=1, default=None, extra=u''), + FieldInfo(name=u'c2', type_code=253, display_size=None, + internal_size=20, precision=None, scale=None, + null_ok=1, default=None, extra=u'') + ] res = self.introspect.get_table_description(cur, 'django_t1') self.assertEqual(exp, res) From c7ceb8902df36c5499cf37d20c9556d412e7b2b2 Mon Sep 17 00:00:00 2001 From: Amitabh Das Date: Thu, 13 Jul 2017 14:41:14 +0530 Subject: [PATCH 48/95] BUG21947091: Add ssl_disabled option Connections are now made in SSL by default. It quietly switches to unsecured if SSL is not available. The only time it complains is when `ssl_verify_cert` is set to `True` and SSL is not available. Tests have been added/updated for regression. --- lib/mysql/connector/abstracts.py | 5 +- lib/mysql/connector/connection.py | 16 ++- lib/mysql/connector/connection_cext.py | 11 +- lib/mysql/connector/constants.py | 1 + src/mysql_capi.c | 46 +++----- tests/data/ssl/generate.sh | 23 ++-- tests/data/ssl/tests_CA_cert.pem | 30 ++--- tests/data/ssl/tests_CA_cert_1.pem | 19 +++ tests/data/ssl/tests_CA_key.pem | 50 ++++---- tests/data/ssl/tests_CA_key_1.pem | 27 +++++ tests/data/ssl/tests_client_cert.pem | 100 ++++++++-------- tests/data/ssl/tests_client_key.pem | 50 ++++---- tests/data/ssl/tests_server_cert.pem | 96 ++++++++-------- tests/data/ssl/tests_server_key.pem | 50 ++++---- tests/issues/test_bug21879914.py | 1 + tests/test_bugs.py | 153 ++++++++++++++++--------- tests/test_connection.py | 3 +- 17 files changed, 387 insertions(+), 294 deletions(-) create mode 100644 tests/data/ssl/tests_CA_cert_1.pem create mode 100644 tests/data/ssl/tests_CA_key_1.pem diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index ce4cf38e..1a4e3c8a 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -60,6 +60,7 @@ def __init__(self, **kwargs): self._client_host = '' self._client_port = 0 self._ssl = {} + self._ssl_disabled = DEFAULT_CONFIGURATION["ssl_disabled"] self._force_ipv6 = False self._use_unicode = True @@ -304,6 +305,9 @@ def config(self, **kwargs): raise errors.InterfaceError( "TCP/IP port number should be an integer") + if "ssl_disabled" in config: + self._ssl_disabled = config.pop("ssl_disabled") + # Other configuration set_ssl_flag = False for key, value in config.items(): @@ -344,7 +348,6 @@ def config(self, **kwargs): "ssl_key and ssl_cert need to be both " "set, or neither." ) - self.set_client_flags([ClientFlag.SSL]) def _check_server_version(self, server_version): """Check the MySQL version diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 15a2338d..45fb5f02 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -114,6 +114,14 @@ def _do_handshake(self): self._server_version = self._check_server_version( handshake['server_version_original']) + if not handshake['capabilities'] & ClientFlag.SSL: + self._client_flags &= ~ClientFlag.SSL + if self._ssl.get('verify_cert'): + raise errors.InterfaceError("SSL is required but the server " + "doesn't support it", errno=2026) + elif not self._ssl_disabled: + self._client_flags |= ClientFlag.SSL + if handshake['capabilities'] & ClientFlag.PLUGIN_AUTH: self.set_client_flags([ClientFlag.PLUGIN_AUTH]) @@ -131,11 +139,15 @@ def _do_auth(self, username=None, password=None, database=None, reply back. Raises any error coming from MySQL. """ self._ssl_active = False - if client_flags & ClientFlag.SSL and ssl_options: + if client_flags & ClientFlag.SSL: packet = self._protocol.make_auth_ssl(charset=charset, client_flags=client_flags) self._socket.send(packet) - self._socket.switch_to_ssl(**ssl_options) + self._socket.switch_to_ssl(ssl_options.get('ca'), + ssl_options.get('cert'), + ssl_options.get('key'), + ssl_options.get('verify_cert') or False, + ssl_options.get('cipher')) self._ssl_active = True packet = self._protocol.make_auth( diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index cf29c3b8..dc639f1c 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -158,12 +158,13 @@ def _open_connection(self): 'compress': self.isset_client_flag(ClientFlag.COMPRESS) } - if self.isset_client_flag(ClientFlag.SSL): + if not self._ssl_disabled: cnx_kwargs.update({ - 'ssl_ca': self._ssl['ca'], - 'ssl_cert': self._ssl['cert'], - 'ssl_key': self._ssl['key'], - 'ssl_verify_cert': self._ssl['verify_cert'] + 'ssl_ca': self._ssl.get('ca'), + 'ssl_cert': self._ssl.get('cert'), + 'ssl_key': self._ssl.get('key'), + 'ssl_verify_cert': self._ssl.get('verify_cert') or False, + 'ssl_disabled': self._ssl_disabled }) try: diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index 4b4e4bd7..fd9d1a3a 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -57,6 +57,7 @@ 'ssl_key': None, 'ssl_verify_cert': False, 'ssl_cipher': None, + 'ssl_disabled': False, 'passwd': None, 'db': None, 'connect_timeout': None, diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 94253bda..6d60d0eb 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1034,7 +1034,7 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) { char *host= NULL, *user= NULL, *database= NULL, *unix_socket= NULL; char *ssl_ca= NULL, *ssl_cert= NULL, *ssl_key= NULL; - PyObject *charset_name, *compress, *ssl_verify_cert, *password; + PyObject *charset_name, *compress, *ssl_verify_cert, *password, *ssl_disabled; const char* auth_plugin; unsigned long client_flags= 0; unsigned int port= 3306, tmp_uint; @@ -1055,21 +1055,22 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) { "host", "user", "password", "database", "port", "unix_socket", "client_flags", - "ssl_ca", "ssl_cert", "ssl_key", "ssl_verify_cert", + "ssl_ca", "ssl_cert", "ssl_key", "ssl_verify_cert", "ssl_disabled", "compress", NULL }; #ifdef PY3 - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzzzkzkzzzO!O!", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzzzkzkzzzO!O!O!", kwlist, #else - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzOzkzkzzzO!O!", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|zzOzkzkzzzO!O!O!", kwlist, #endif &host, &user, &password, &database, &port, &unix_socket, &client_flags, &ssl_ca, &ssl_cert, &ssl_key, &PyBool_Type, &ssl_verify_cert, + &PyBool_Type, &ssl_disabled, &PyBool_Type, &compress)) { return NULL; @@ -1124,39 +1125,26 @@ MySQL_connect(MySQL *self, PyObject *args, PyObject *kwds) mysql_options(&self->session, MYSQL_OPT_READ_TIMEOUT, (char*)&tmp_uint); mysql_options(&self->session, MYSQL_OPT_WRITE_TIMEOUT, (char*)&tmp_uint); - if (ssl_ca || ssl_cert || ssl_key) { + if (ssl_disabled && ssl_disabled == Py_False) { ssl_enabled= 1; -#if MYSQL_VERSION_ID > 50703 && MYSQL_VERSION_ID < 50711 - { - abool= 1; - mysql_options(&self->session, MYSQL_OPT_SSL_ENFORCE, (char*)&abool); - } -#endif -#if MYSQL_VERSION_ID >= 50711 - { - ssl_mode= SSL_MODE_REQUIRED; - mysql_options(&self->session, MYSQL_OPT_SSL_MODE, &ssl_mode); - } -#endif - + client_flags |= CLIENT_SSL; if (ssl_verify_cert && ssl_verify_cert == Py_True) { #if MYSQL_VERSION_ID >= 50711 - { - ssl_mode= SSL_MODE_VERIFY_IDENTITY; - mysql_options(&self->session, MYSQL_OPT_SSL_MODE, &ssl_mode); - } + ssl_mode= SSL_MODE_VERIFY_IDENTITY; + mysql_options(&self->session, MYSQL_OPT_SSL_MODE, &ssl_mode); #else - { - abool= 1; - mysql_options(&self->session, - MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (char*)&abool); - } + abool= 1; +#if MYSQL_VERSION_ID > 50703 + mysql_options(&self->session, MYSQL_OPT_SSL_ENFORCE, (char*)&abool); +#endif + mysql_options(&self->session, + MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (char*)&abool); #endif - mysql_ssl_set(&self->session, ssl_key, ssl_cert, ssl_ca, NULL, NULL); } else { - mysql_ssl_set(&self->session, ssl_key, ssl_cert, NULL, NULL, NULL); + ssl_ca= NULL; } + mysql_ssl_set(&self->session, ssl_key, ssl_cert, ssl_ca, NULL, NULL); } else { // Make sure to not enforce SSL #if MYSQL_VERSION_ID > 50703 && MYSQL_VERSION_ID < 50711 diff --git a/tests/data/ssl/generate.sh b/tests/data/ssl/generate.sh index af736d42..9e457db4 100755 --- a/tests/data/ssl/generate.sh +++ b/tests/data/ssl/generate.sh @@ -125,25 +125,24 @@ if [ $? -ne 0 ]; then exit 3 fi -# MySQL Expired Server Certificate: generate, remove passphrase, sign +# MySQL Root Certificate: generate, remove passphrase, sign echo -echo "Generating Expired Server Certificate" +echo "Generating Another Root Certificate" echo -SUBJ="/OU=$OU Expired Server Cert/CN=localhost" -$OPENSSL genrsa -out $DESTDIR/tests_expired_server_key.pem 2048 +$OPENSSL genrsa -out $DESTDIR/tests_CA_key_1.pem 2048 if [ $? -ne 0 ]; then exit 3 fi -$OPENSSL req -new -key $DESTDIR/tests_expired_server_key.pem \ - -out $DESTDIR/tests_expired_server_req.csr -subj "$SUBJ" +SUBJ="/OU=$OU Root CA/CN=MyConnPy Root CA" +$OPENSSL req -new -key $DESTDIR/tests_CA_key_1.pem \ + -out $DESTDIR/tests_CA_req_1.csr -subj "$SUBJ" if [ $? -ne 0 ]; then exit 3 fi -$OPENSSL ca -config $DESTDIR/ca.conf -in $DESTDIR/tests_expired_server_req.csr \ - -cert $DESTDIR/tests_CA_cert.pem \ - -keyfile $DESTDIR/tests_CA_key.pem \ - -out $DESTDIR/tests_expired_server_cert.pem -batch \ - -startdate 120815080000Z -enddate 120815090000Z +$OPENSSL x509 -req -days $DAYS \ + -in $DESTDIR/tests_CA_req_1.csr \ + -out $DESTDIR/tests_CA_cert_1.pem \ + -signkey $DESTDIR/tests_CA_key_1.pem if [ $? -ne 0 ]; then exit 3 fi @@ -176,5 +175,5 @@ echo "Cleaning up" echo (cd $DESTDIR; rm -rf tests_server_req.pem tests_client_req.pem \ ca.db.certs ca.db.index* ca.db.serial* ca.conf tests_CA_req.csr \ - tests_server_req.csr tests_expired_server_req.csr tests_client_req.csr) + tests_server_req.csr tests_CA_req_1.csr tests_client_req.csr) diff --git a/tests/data/ssl/tests_CA_cert.pem b/tests/data/ssl/tests_CA_cert.pem index 6ce8c474..f25b1173 100644 --- a/tests/data/ssl/tests_CA_cert.pem +++ b/tests/data/ssl/tests_CA_cert.pem @@ -1,19 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDADCCAegCCQDmOCndJJOWFjANBgkqhkiG9w0BAQsFADBCMSUwIwYDVQQLDBxN +MIIDADCCAegCCQCZfblCD1izGzANBgkqhkiG9w0BAQsFADBCMSUwIwYDVQQLDBxN eVNRTENvbm5lY3RvclB5dGhvbiBSb290IENBMRkwFwYDVQQDDBBNeUNvbm5QeSBS -b290IENBMB4XDTE3MDMxNzE1NTAzNloXDTI2MDQwNTE1NTAzNlowQjElMCMGA1UE +b290IENBMB4XDTE3MDcxMjA5NDIyOFoXDTI2MDczMTA5NDIyOFowQjElMCMGA1UE CwwcTXlTUUxDb25uZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25u -UHkgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANex2fME -DGfFk6KIIjsCpXQ6Rsv7nClZ+H7iT/xBMDHtQbqVYX1HIDYGRApWIi0Mmg3hosri -6TO5wJIMMEwcSurVStyLXPpCT4Dg3iDuKToYfNNGtuH9DFWh1fnkeni0gbEh+/yT -PIe3FLZCHD+F12ST1z88i4LXOG4NuozKI2cmQcHxdVkYYzknMX4IKdP4AniPgMq0 -9YmQJjXH6y7lPzDXeUuG8YrOSuvfl4W2bjht4mGP6YUUQkwZ5qbRQfrkduQB3+pa -+7P6ckd3q91j1+H1kRCn4a1S28xzPOaey6cLQ/DRVKP9EwPVV9H3/Wm8BdTr0ZMs -1s2VQtocmzcp35kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAGvUp9Du79gpN/pBD -8eG7ZX/YMpK1cbzUwD+TqmP7QnXItRrZalbmadzZ6P161ff0QOEQPxL181+EEXFe -yC8f33EGu9n6ZlSnj/HrdMZ2sjv8QA8M4Vg2vn81qUT/EsJQOjJA6n30ybncZHWB -ovmFgBlq9miX2gDCMRosiRkzm4HAETdWQhiQ/jU4RV+pgP3/sd/mk/u2D5nqMeuT -Ni61ke1CfskuCar5knXTdw7PYfCVXrD1ndgpf7e+qdz534GMkHcFKQkEvWE+ZuWj -CHx9t32JFekCSzJCYs5YuAfuIJc0aC+RmA/lF7UUGyj++wWFAMnkmVEf5MM3WGjM -HRerEg== +UHkgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOHbedXD +M/g7KuSURqBOHo49S/9lGarUt/YOkTDjKlNhqNQ4YrG3Au/PlBi4v4sE+4ILgrrc +19/Knj/+DI/jGIxmdheYiTacynDodfT4DVLZghI3bGqST+OG03KHtB0BMsovAdt+ +CiwDNU4M8OkM57D00ijEcSmVrQuEFoyrxm5EWE9E9F4Hc45TQKCP0ge8VVk1rzZi +1z+Yjrvqu/m6T6r0jF+WpDNc3ZqMQNHkenMSmNdZelCIbwwZh8G3zLnIOrOEEfwx +hNbMFJl1vdQjqZODrXmjCM34v0ZAjBfbwWOZGhOw+kFXFfIv6F46LMfabukgWLGU +5/JO7bvxCpS32hkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA2Fq6Ll8dnmrTJXTu +kC6qVomZ5J2zfjUWRGY1bOYCWzCwANnsgwhN5Q5AuSV4CwctXBhDYVunyyxTuJ9P +Usz9FppKgdwAR4XPQq+Eh57PMZAl5l4LGskwzTwu+Ud94D0s23yBXdFReZgPtGM3 +T03pGKf8nGtt692CFdnQ+EtSFOtzt+VaaZy6SSg0MAGaRRLRpfAa1uzzTrlmEQ9w +cUOemtIWKC1016gmtjU+N7suzqGPuDuVyfl6VqariGzpM5z10n5XFM9z9G7QCb2Q +/5LnLll3R2caaa6QVmeW1Dpew4lUhoQ12mUpEELsJPIsSVxRxAVEzCFAMldeNgfw +Fs9KxQ== -----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_CA_cert_1.pem b/tests/data/ssl/tests_CA_cert_1.pem new file mode 100644 index 00000000..9fdff899 --- /dev/null +++ b/tests/data/ssl/tests_CA_cert_1.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDADCCAegCCQClgkE5NPaTKTANBgkqhkiG9w0BAQsFADBCMSUwIwYDVQQLDBxN +eVNRTENvbm5lY3RvclB5dGhvbiBSb290IENBMRkwFwYDVQQDDBBNeUNvbm5QeSBS +b290IENBMB4XDTE3MDcxMjA5NDIyOVoXDTI2MDczMTA5NDIyOVowQjElMCMGA1UE +CwwcTXlTUUxDb25uZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25u +UHkgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMWRBnCR +Fnkqd+QhuJC26CWX34ChTeIeqat6WR3bpD79a9NbLnOZp9it/fw7s8AM9dngREeu +X8xgO5pduohW3fyk0my/ojrb6XQPZA1heDOrjYgC+0m0IGzXGzaHP5bU0G4BRdxQ +9eOHgzGKmV2SLxNcIxVKCFZqtxElfyLD3/asB7wcVRpgbZ/fhdYHxYnhgO8Q8p6c +uhuk7g0mF2akoVrP0j2jieqO9yvAFF/HD5pi9SRzoPFJTm3wmI8y0R+fvnvOjvM+ +uaW3iC2KgabOuvN4AfiNKPJW4nhQO2Wu3wuWKUxN0H6xgd8yGy0Azuthcr8+idk1 +iZrPfeTXpBTRXfUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAasvgyREtD5whbYCt +ZRbWKgkYnnahYTVmejNurlNAuFj+JAuFFeDa20MVsPqfR0OFrYdmddFQqu9dFJPs +jmP+aqXnvE+HZPqtyM1uRrLuzM2/yaDFQ7SZAtJDTBllNCjEU/gi0PfruLZ2K2BQ +i0D1puzuNBL1VcfIBGkJWiE97bCRXOFs71TPgRP4F3+NQ665dUWcakvH/ChXx/x+ +br/c0ppBIKLhJECnvTCLpBiFoxlWBs5gGzKNXItIgbDaOUMQCeYnhXU1tRxIIlap +vjUNvBKJrHja2se9QXeehplyQgvQdOKloCrBaA+rNS7+cExRW2We7xYo4gc9ocGr +ll3Kqw== +-----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_CA_key.pem b/tests/data/ssl/tests_CA_key.pem index 19418509..90d1ab05 100644 --- a/tests/data/ssl/tests_CA_key.pem +++ b/tests/data/ssl/tests_CA_key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEA17HZ8wQMZ8WToogiOwKldDpGy/ucKVn4fuJP/EEwMe1BupVh -fUcgNgZEClYiLQyaDeGiyuLpM7nAkgwwTBxK6tVK3Itc+kJPgODeIO4pOhh800a2 -4f0MVaHV+eR6eLSBsSH7/JM8h7cUtkIcP4XXZJPXPzyLgtc4bg26jMojZyZBwfF1 -WRhjOScxfggp0/gCeI+AyrT1iZAmNcfrLuU/MNd5S4bxis5K69+XhbZuOG3iYY/p -hRRCTBnmptFB+uR25AHf6lr7s/pyR3er3WPX4fWREKfhrVLbzHM85p7LpwtD8NFU -o/0TA9VX0ff9abwF1OvRkyzWzZVC2hybNynfmQIDAQABAoIBAQDMZI2KuqBiyZhQ -IT6Gusg8rmieLYzappZS7nQrLz7TYOezPpEGXRsJ9sANJ3f1RobJdrKEHagsyu3P -t9sglILtqzbobOurfqDGGNCFVgodMk0/DDiLR/ajQtt4lOj1bt+jEfgubPukA3qO -B3GrRFJKzcnf86ikUPv5VescNQR9Xca8qvy0W69SmtkSSZcC55yhWhGwReUDmywH -tu57eR07t1Jf3RdHwa98VsiEde4TcuA/wo/C3e2A1MZZW0AtqVAVrX8hq+UVAMJ8 -sMubjNqUmDjbOOL4YkLbyR237uC6V6ejmWKEjMXAYUlNnpme1EcoimSL35hCjDVU -H6MwhBiBAoGBAPNawx7lICj0qYJ3CSP5VMiiD7vTdDmtNPg6KFesZ2XKPALR/Csq -1WXSEOb4DvFOAuSWjWYPW+0gvV966LkhKXE+cXWf4RmggrpwhT1JPbkcBwbwQ5oo -aJnNByCcxoTBvJavLkrDBvZzOW2j5lvcD8qfnNYtbNihsExzkxfFm7AxAoGBAOLn -JJqLwuNK2cyi7F5mkRLhGCdtSglSoht/3xTuqdrQv0JsVjmGTOqZhh6EBeI91auu -O89KLs2ARN/KKR90ckuf/h6iwsS5/PDjiPTWOcH8LjiocPuvtvoRzq6leoC1XWBm -vqLZYjPGuZRNibvputUFIVprw38EmppZzcrBuPPpAoGAa1mIZWKRsz9qX0D/aT0d -p3vGEQcQaDj9+to83aAR5Jc3rc7PvIMiq83k4t5eSRgusoOvUGxKEuq0XyAq9S+p -xmjTSB4FAHcL9A6a2BQtBDFW8Dqgt6pHqkEFed9uuzVzac1RUG2D7seZd8IrZi5H -UQzj9J8JOu7ohHEfXAcxzKECgYA9mJ/wMGasi0JK8iOWkONrK54B/gIuO7d0Hady -qEOF+kshfgV+Qj4ZJaoqGI78VurtWzQzVqET+nE4C0pUlqj8bKdwq6CSBSdsQWiJ -hqpRReNKUDezq4TRqAnikVuLGzEJHXs8/CRTh+wTHWV5lL66W1UtlbmRfq91nVFn -bGWIGQKBgE3S/0XsB9Ox+lNyxj5TycmT9VEfn+vvB+PF3ITWLRkcDanK5ynh4Pvt -2HbwWIShQXGczn4jzWX61AwWE7Lkc1an1yiCQ2/SJItyhWJxVGO0V0BwTK9jmq+r -1DXQSTgsOtmRknMdgGTk594Nj7S4r4GDYudzAujsbsrPEItw2nRr +MIIEogIBAAKCAQEA4dt51cMz+Dsq5JRGoE4ejj1L/2UZqtS39g6RMOMqU2Go1Dhi +sbcC78+UGLi/iwT7gguCutzX38qeP/4Mj+MYjGZ2F5iJNpzKcOh19PgNUtmCEjds +apJP44bTcoe0HQEyyi8B234KLAM1Tgzw6QznsPTSKMRxKZWtC4QWjKvGbkRYT0T0 +XgdzjlNAoI/SB7xVWTWvNmLXP5iOu+q7+bpPqvSMX5akM1zdmoxA0eR6cxKY11l6 +UIhvDBmHwbfMucg6s4QR/DGE1swUmXW91COpk4OteaMIzfi/RkCMF9vBY5kaE7D6 +QVcV8i/oXjosx9pu6SBYsZTn8k7tu/EKlLfaGQIDAQABAoIBAD3W8gztXZVh3eSo +FI5f1U3sypoq/FQh2hys8GQKTtR1sNwqdBtkmJFArLP4IbnWq2Z38FtpjFHiEGJF +FPtwmpAWnc7oHOmvFF7Fx0ZDhKJim5KRSkYDuYv6pnp9XXtzkIx7Qm7um6phVn8A +XBXzSpzQ65nt724LZU355JKvla0q1bXfj88zS8JX7jsbmC0+nDCZRLcnenKeWtBS +Kn4mjIZSYNIo45lybJCPn/jyE0ma7U8JTipjNDsVGW7yxb4yVuDIfJDKd0kv72RF +QrhTeuRTm5189m8YWD+2H0m+RLIxTCDelRP4lO2p9KCnj3Kmz70BngPlznEXynGx +Uz3eYAECgYEA8U1V4LbUyw9I+qyF47v58ES+RdCnJAk4g18fmFxLz4VZ6QOGxdkP +RwivpR5zSgpzX5dkQCXoSWhIFAElv7n+hmT7su/xxpTMddcvUEOGA5tLlbwjDOTU +HNotzgi+0qpG+NocaSuhfSItfUksz4M9Tj6MxgezQFcouhNCLtE27JkCgYEA751O +wM9xRmAr7ytAyCnhE3x6Tag2e/Ey/6Asy/TXsWH++R9u2+wxbPuaZ05KjUKkJZdK +EV5O53ZCm4bfmB0BNvHAcsZMo5zcAJ/4CHpFfelnOv3c1QwzBkmg2iM8Oii+PNBs +4LaOUogfJab35+hrVOJ7cqCyQZZESEu5oXQLSYECgYBjDCCFFecw1rxZEPoAaceF +RWJo2+XPl+1Xl3Mroi8IJq+qQuVOTvPDb6BRgbdHHBURlt3yqty3TRPRCkuJcHo2 +hjr+zxkKL0fh0ws7wgu/bT5QXyJwB3m9whztJo/Vf0mUmkrxLJSj/aR4edHn9/Hx +LSGxo7WDYoN4JbGT8BLAeQKBgB+uQ9BYXRi59HUd2eXdK6Yg6ibEW9fNTznfGq0o +xS/tzgFwN38aXnqTVZndDxxYOE3EEAX12ybdSvc3QO7ivttd4V0LfOyQ+8GVZPzx +9agtKPnywLTmdQSazYqp5/eklWqDADJB0NV2q++VgOeHolFJ1JqWRptHW+XXJUcE +ic2BAoGAH+iwDqyAHX92TcH+jzbt91Bil2/tj7s9NaXBaOFlM46mHSMwiYPjaYwf +2NGJhsFdICV6kA2GiAKyDr8zqwl0lGYwaTpxzKUf1VZaGrKBuNcGuUaQJLkTbK59 +DdHDUNdo8BXPn3qsLbV3aLlXSCp0cirbpJfy7W0pYvLEfrX8lGY= -----END RSA PRIVATE KEY----- diff --git a/tests/data/ssl/tests_CA_key_1.pem b/tests/data/ssl/tests_CA_key_1.pem new file mode 100644 index 00000000..afa459de --- /dev/null +++ b/tests/data/ssl/tests_CA_key_1.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEAxZEGcJEWeSp35CG4kLboJZffgKFN4h6pq3pZHdukPv1r01su +c5mn2K39/DuzwAz12eBER65fzGA7ml26iFbd/KTSbL+iOtvpdA9kDWF4M6uNiAL7 +SbQgbNcbNoc/ltTQbgFF3FD144eDMYqZXZIvE1wjFUoIVmq3ESV/IsPf9qwHvBxV +GmBtn9+F1gfFieGA7xDynpy6G6TuDSYXZqShWs/SPaOJ6o73K8AUX8cPmmL1JHOg +8UlObfCYjzLRH5++e86O8z65pbeILYqBps6683gB+I0o8lbieFA7Za7fC5YpTE3Q +frGB3zIbLQDO62Fyvz6J2TWJms995NekFNFd9QIDAQABAoIBAQC0GmEkfR9flbd1 +4MfAJP28R5cYS/QUDp/eEsrqzTANvDhvlM/j0k+Q2AyRxFs42JfG5wtXzT7HsXKk +Zo2FfKshhZ/OQ2RBA/juNJmhGRnbAKklNJKfvfVRQ0crjmAJwDfCEKb/EU8W/JI8 +t3zYMEt5+qSA49x16xK4LtaXerjQxKce7gNU+um22JTR+27g/HATSGG0LFHWmJ6h +DroOK1Md1KSvZ+Pc3ucfNV65ZueLrVmk9DwKl27Ul7wLe+WqmANjv1wzyLX3nmTL +B+6JwxdGlnaIw1T0JZV+9RrYMcUqeOgOqRfonVlQF9rDmdTQl1Kjsmxd+LmQEF+x +4znvh2QBAoGBAPXXR8Z7usgJBWSJxioomiRLfdSz4kelTYshGIv0GABXvEfjrhkk +Ain/p7QVo95A+xKf2LrXTh25NYvq783cZkVgY1ftE643G/1HN4P5XguUwa1EBMyC +0gwluys4RMkZOstuXaJk8+xDqDvGx8EFX6X/f+cQ0j7Dj0TO2BVjPnhJAoGBAM27 +DkY1WQDVgV1PejuvzJFct4AbwbBKSBNIjPLZF0AHtIGyEm1TxSPW0pd8KVvp1spx +n4585bDcMU+twekuqqxFOmaoxPyfMoZ4tkrMoKwJo9UNIy1wxr/z7NhzSmw109B3 +Kb3cob25xKZgpl7A7t0WYbzm8YU3MO9xlLEHrbBNAoGANNbOoISbgr8dn5xVMV6E +suRe6Ua4jfmjjxHP+tS+C+TPnQv8sX6h0HEYlIZKMEz7KeedZ5s7OPxD3Azk+fQz +LxomgBF+t2U06N1Tu1PvuMGCV0FVXreHegDqF8ICVs7LakoQagUUwGVSVXbGHGCR +TFZ8ISfmaIMT2hAzNXWdSbECgYEAyPS+rLXPipEDHDJWI5dFK3h1hh2WxKzKWouz +okOMAm+EUmuutDvvhWKBspcFj1KLDJSQVo6JjoiHYl1H3I5JCJ1WvpB8Wobmw5OF +/OqEx4djEOkUQ361pSqPX56+Q5UQocDEdUDefITJIfumh0fOCweh0POFV6rhkgJQ +S9xEPMECgYEAzevAAJ2PqnEfw5/Nm2ho4gzRXPtk495kEdYHI20ZZF8l/3LUU5xe +j1dDIFeQTYJiAxmdomZssYqPy90zRTelx+MAhHRlZyaEyLWs/AFaW9m89+T/Fan9 +x4AUeJ5xgyEdQKJ9GlPbWFFG90oK9AKsKgH9J7yZxGn4sTMWzakTmLQ= +-----END RSA PRIVATE KEY----- diff --git a/tests/data/ssl/tests_client_cert.pem b/tests/data/ssl/tests_client_cert.pem index 05ae5160..16a22b74 100644 --- a/tests/data/ssl/tests_client_cert.pem +++ b/tests/data/ssl/tests_client_cert.pem @@ -1,67 +1,67 @@ Certificate: Data: Version: 1 (0x0) - Serial Number: 3 (0x3) + Serial Number: 2 (0x2) Signature Algorithm: md5WithRSAEncryption Issuer: OU=MySQLConnectorPython Root CA, CN=MyConnPy Root CA Validity - Not Before: Mar 17 15:50:37 2017 GMT - Not After : Mar 17 15:50:37 2018 GMT + Not Before: Jul 12 09:42:29 2017 GMT + Not After : Jul 12 09:42:29 2018 GMT Subject: OU=MySQLConnectorPython Client Cert, CN=localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: - 00:b0:7b:da:61:20:7c:13:97:fa:1e:20:83:e0:40: - e8:94:4a:ea:1c:62:22:09:4e:d3:cd:30:66:73:28: - f4:ff:2d:79:a4:b6:0b:c7:b7:20:c8:f6:c0:98:66: - 3d:46:ec:f1:8c:04:8b:d7:3c:b4:fa:69:6c:c5:47: - 1b:04:a4:a3:53:5a:0a:f2:a4:f7:94:d5:2c:d7:b6: - 24:81:e0:c2:ea:51:d1:6e:8e:d4:58:dc:5b:fc:b9: - 1b:6b:7c:52:cc:17:36:85:63:ca:f0:1f:75:2f:b8: - 97:96:d1:08:ab:46:31:31:e6:9c:8b:26:a1:1b:df: - 35:66:36:d9:ba:e1:a4:3d:88:25:7a:9d:68:d3:62: - 20:ec:14:b0:59:2c:33:40:11:cf:03:70:17:1c:de: - 65:ca:0c:2e:26:2d:f0:33:13:52:d7:0f:69:d7:c0: - d6:f8:71:03:19:f4:79:3d:66:98:56:d2:44:db:bf: - aa:a7:d6:fc:2d:0b:29:63:0a:d4:3d:5e:7e:a7:2c: - 6c:b8:2f:32:6f:51:ce:4a:2d:6a:35:54:21:33:76: - a2:64:4a:8c:1d:30:73:47:3e:90:19:68:c9:07:8f: - 14:c5:ff:93:c7:ec:b4:08:d7:30:11:f6:67:3f:7a: - 8a:57:2c:87:63:34:ff:ff:79:2b:6b:70:88:21:ca: - 4e:53 + 00:e9:3c:0c:d4:ef:ee:41:5f:f6:d3:ca:81:3c:08: + 59:50:37:c9:a4:79:8d:65:71:41:72:93:6a:a3:1b: + 87:db:38:98:7a:4a:f9:3b:95:73:3a:4a:42:c5:56: + c8:2d:14:c5:11:2c:fe:ca:14:64:87:3c:49:db:5d: + a1:49:0f:de:b8:3d:33:49:48:8d:b6:13:66:07:b7: + 0c:9a:bb:bd:01:ab:54:8c:f1:08:e5:3a:f7:4e:16: + b9:7d:bc:2f:51:ca:7d:94:b9:b1:09:23:30:e6:6e: + 2b:e8:0a:05:07:ac:1c:20:b3:25:6f:61:89:8a:53: + 08:aa:46:31:28:df:63:04:13:12:44:9e:21:e0:15: + 87:81:33:34:6d:71:90:40:10:4c:ab:3a:c7:10:5c: + 3a:c4:72:6b:f9:4b:74:4f:f6:d7:4f:19:fb:60:83: + 88:d2:8e:d8:45:01:40:4e:9c:7a:68:4c:d7:cc:7a: + 48:a6:20:6b:35:a5:c1:bc:69:65:67:9c:07:06:7f: + 6a:9a:62:9b:42:93:72:af:10:78:04:d7:5f:df:68: + 34:a6:ec:e7:4b:55:84:84:e0:1b:4b:e8:a3:3f:21: + b9:41:a2:5e:d5:03:39:23:94:22:42:b0:44:18:4a: + 0c:29:87:2e:45:58:01:eb:f5:27:94:08:70:bb:c1: + 89:1f Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption - 2e:d2:37:97:8b:aa:05:47:8d:b4:c6:87:7d:b8:41:d6:55:12: - 84:14:8d:91:de:4f:84:15:89:a2:90:5a:0a:94:a1:c2:41:42: - 18:3c:b7:10:c7:19:b5:01:96:2e:51:83:14:2f:64:0a:96:bb: - ce:f8:28:df:ab:fe:72:05:e8:6a:fd:1d:7b:09:22:eb:26:e7: - 64:a7:a7:fe:fb:e8:e0:2f:91:e4:9e:fa:f6:ab:0b:5b:f3:82: - e0:54:d5:07:d2:05:ae:99:fd:22:d8:23:ba:e5:16:21:d7:b0: - 82:98:4a:f0:87:36:ca:1e:4e:c0:c3:6a:22:a4:37:18:5f:6f: - 6f:7b:92:e9:bb:15:77:55:6b:9a:57:35:95:4c:64:e9:bb:12: - cb:ab:67:4b:23:27:41:d3:71:15:5e:cf:6b:d6:13:05:f0:7a: - df:0f:f9:fd:bc:0d:8b:e4:cb:e7:62:67:9e:10:00:c9:9d:ea: - a7:cb:3f:ec:47:04:06:96:7f:b3:74:be:3c:cc:bd:72:05:d8: - 91:b7:d6:b1:9a:40:79:bd:eb:cb:7a:49:bc:a6:e7:61:4f:1d: - 68:79:21:ad:18:f6:13:6e:87:b6:13:a6:31:1e:f9:73:4c:ec: - 04:b4:f2:83:5a:25:ae:9c:2e:8e:3a:0a:1d:0a:fd:34:dd:d4: - 12:cc:4f:47 + 8d:da:56:ae:94:99:f6:6f:fb:bb:ce:92:36:11:cb:d3:1c:a9: + 8c:1f:98:fd:37:82:93:cc:50:91:bc:5f:41:86:ed:21:15:e2: + 1f:6b:c9:98:33:d1:f2:a0:87:a2:38:ac:b2:4b:36:ce:66:e8: + 9e:14:a9:9e:67:64:d3:01:17:5a:c4:3a:20:9b:a5:0e:08:92: + d7:b5:30:81:35:8e:fe:81:59:9b:f5:d2:4e:49:81:ff:c9:35: + b3:fe:25:de:da:4e:51:50:24:10:5a:17:29:9c:d0:5b:67:dd: + 11:d4:ed:4b:c6:3a:1b:bb:61:44:9a:8a:e4:81:0d:de:0d:8b: + b9:ee:67:d2:3c:49:1a:cb:e1:77:21:10:9c:fa:2e:40:42:2f: + d9:f6:79:b7:2b:13:7f:13:51:87:58:5c:68:9d:36:a6:e2:15: + 13:29:07:3a:41:f3:99:ed:c3:41:af:4a:41:88:7f:a1:bd:30: + d4:9e:5b:fd:d9:6d:dc:d7:f8:85:3e:95:49:d2:76:a9:ba:4e: + e0:f8:37:f7:87:5d:00:a6:55:a3:f3:46:00:98:51:37:a8:f3: + 8c:02:02:ef:26:85:b8:80:93:0c:bc:98:c7:80:2d:bf:55:41: + 4a:67:97:a2:6a:e2:99:3a:2c:5b:28:4d:03:a9:b0:c1:89:f1: + 0d:7a:1c:f4 -----BEGIN CERTIFICATE----- -MIIC9TCCAd0CAQMwDQYJKoZIhvcNAQEEBQAwQjElMCMGA1UECwwcTXlTUUxDb25u +MIIC9TCCAd0CAQIwDQYJKoZIhvcNAQEEBQAwQjElMCMGA1UECwwcTXlTUUxDb25u ZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25uUHkgUm9vdCBDQTAe -Fw0xNzAzMTcxNTUwMzdaFw0xODAzMTcxNTUwMzdaMD8xKTAnBgNVBAsMIE15U1FM +Fw0xNzA3MTIwOTQyMjlaFw0xODA3MTIwOTQyMjlaMD8xKTAnBgNVBAsMIE15U1FM Q29ubmVjdG9yUHl0aG9uIENsaWVudCBDZXJ0MRIwEAYDVQQDDAlsb2NhbGhvc3Qw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwe9phIHwTl/oeIIPgQOiU -SuocYiIJTtPNMGZzKPT/LXmktgvHtyDI9sCYZj1G7PGMBIvXPLT6aWzFRxsEpKNT -WgrypPeU1SzXtiSB4MLqUdFujtRY3Fv8uRtrfFLMFzaFY8rwH3UvuJeW0QirRjEx -5pyLJqEb3zVmNtm64aQ9iCV6nWjTYiDsFLBZLDNAEc8DcBcc3mXKDC4mLfAzE1LX -D2nXwNb4cQMZ9Hk9ZphW0kTbv6qn1vwtCyljCtQ9Xn6nLGy4LzJvUc5KLWo1VCEz -dqJkSowdMHNHPpAZaMkHjxTF/5PH7LQI1zAR9mc/eopXLIdjNP//eStrcIghyk5T -AgMBAAEwDQYJKoZIhvcNAQEEBQADggEBAC7SN5eLqgVHjbTGh324QdZVEoQUjZHe -T4QViaKQWgqUocJBQhg8txDHGbUBli5RgxQvZAqWu874KN+r/nIF6Gr9HXsJIusm -52Snp/776OAvkeSe+varC1vzguBU1QfSBa6Z/SLYI7rlFiHXsIKYSvCHNsoeTsDD -aiKkNxhfb297kum7FXdVa5pXNZVMZOm7EsurZ0sjJ0HTcRVez2vWEwXwet8P+f28 -DYvky+diZ54QAMmd6qfLP+xHBAaWf7N0vjzMvXIF2JG31rGaQHm968t6Sbym52FP -HWh5Ia0Y9hNuh7YTpjEe+XNM7AS08oNaJa6cLo46Ch0K/TTd1BLMT0c= +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDpPAzU7+5BX/bTyoE8CFlQ +N8mkeY1lcUFyk2qjG4fbOJh6Svk7lXM6SkLFVsgtFMURLP7KFGSHPEnbXaFJD964 +PTNJSI22E2YHtwyau70Bq1SM8QjlOvdOFrl9vC9Ryn2UubEJIzDmbivoCgUHrBwg +syVvYYmKUwiqRjEo32MEExJEniHgFYeBMzRtcZBAEEyrOscQXDrEcmv5S3RP9tdP +Gftgg4jSjthFAUBOnHpoTNfMekimIGs1pcG8aWVnnAcGf2qaYptCk3KvEHgE11/f +aDSm7OdLVYSE4BtL6KM/IblBol7VAzkjlCJCsEQYSgwphy5FWAHr9SeUCHC7wYkf +AgMBAAEwDQYJKoZIhvcNAQEEBQADggEBAI3aVq6UmfZv+7vOkjYRy9McqYwfmP03 +gpPMUJG8X0GG7SEV4h9ryZgz0fKgh6I4rLJLNs5m6J4UqZ5nZNMBF1rEOiCbpQ4I +kte1MIE1jv6BWZv10k5Jgf/JNbP+Jd7aTlFQJBBaFymc0Ftn3RHU7UvGOhu7YUSa +iuSBDd4Ni7nuZ9I8SRrL4XchEJz6LkBCL9n2ebcrE38TUYdYXGidNqbiFRMpBzpB +85ntw0GvSkGIf6G9MNSeW/3ZbdzX+IU+lUnSdqm6TuD4N/eHXQCmVaPzRgCYUTeo +84wCAu8mhbiAkwy8mMeALb9VQUpnl6Jq4pk6LFsoTQOpsMGJ8Q16HPQ= -----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_client_key.pem b/tests/data/ssl/tests_client_key.pem index 787bd4b9..13683dd5 100644 --- a/tests/data/ssl/tests_client_key.pem +++ b/tests/data/ssl/tests_client_key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAsHvaYSB8E5f6HiCD4EDolErqHGIiCU7TzTBmcyj0/y15pLYL -x7cgyPbAmGY9RuzxjASL1zy0+mlsxUcbBKSjU1oK8qT3lNUs17YkgeDC6lHRbo7U -WNxb/Lkba3xSzBc2hWPK8B91L7iXltEIq0YxMeaciyahG981ZjbZuuGkPYglep1o -02Ig7BSwWSwzQBHPA3AXHN5lygwuJi3wMxNS1w9p18DW+HEDGfR5PWaYVtJE27+q -p9b8LQspYwrUPV5+pyxsuC8yb1HOSi1qNVQhM3aiZEqMHTBzRz6QGWjJB48Uxf+T -x+y0CNcwEfZnP3qKVyyHYzT//3kra3CIIcpOUwIDAQABAoIBAQCrECHoqzgZNeJ2 -eUXahI/rzYGG6YfcRc/+v79OOJDhFw8lnF9mwhbBNIwSLGeQ6/JlqbJyeqFhZ/bK -cdW6dmrpTAn4j/Z7CPZiUGaqjVXhElVSOJeTWmS/Xh053lPTB10NhmEaxyMrkl09 -Dni8q1jb6ZArQNJA1eZIoToCbtxn1odQButsQNJa6hhNTLU9fyvkSo7FuACB0fTP -0I5je+f2Qim1WW5RVibU+AHW7qp2ImvMBTEFHrzxQrCrkbDMWnRW2nb3SnB5oAl8 -Xi2dOc7ae+AB40sa+nS3F9NnLwNcj2vuBLYGEdDH2Ns++NKhgfad1/lEOtrWdNDZ -nVBAlbyBAoGBANv6zVVtEkOSF5LjXtVoFFR4HA+H0JFcGt+MCd7NYUvDFK1eL/px -3srxLUQxHb0+dOO9cX/5eJB48H+eiLBSRCqOhIsNVInaHZ2TjdmWeoy+8xG15LbS -1lJmE4/WM5946C+ICqoqDZLZ77Z+zrQPVPb4I5wtxtEuQ6tmEXdJRA4RAoGBAM1h -xb7B53pT/YVvl4xTGJpVuEAxtkoxrTCcqoweKYbRyFh4EfeMLdLyL0xUUoWsMl0c -XfGjvy4cA7Ndr6lRf9lKKi/4g5yvo2/vF7bwnMJdCElLle5QwvDy6e5beXfab7sy -DsCpNFwxAmH1ulouRkQsy3ks/8wwwMM7K7uIHEIjAoGAcS4mLViz9+4XkOzJIzWs -mBVAIsF3DwL7lJ7hiS/Uan2Riu2V895YicPyzU4UBgU3cOFMn1KEtJh07MRtgYKi -Ld8r1LtkDpUZfbSoXBYvMXEhcLBMX8A0oyp/0BaecuNrWuE803ZVi4Pz8MpnoX7t -8S+UasumqoOKL4qRW/VnPXECgYA640jWrDRZz9FGPDvgwUaxodhll5tj5KB66sC/ -0jon7Oib7TmBmBDfhg9nvFm4+CmspuCM012Ss/efq0Idsz+MJwa3oHLkLzwWcSCE -lLLty8z/bwu7PC7Y9V17uYC3i8szimPOe/WGZYsAWXuoNdJx48InqW5itqvejo24 -hItNrwKBgDW5jgRtUQTsbbQwkyPLMKNrX12GsDR5pLNw/PiU3ywzBQe2AxoVuMbT -YRFBDG/hGB5WCI9F/XleuU4e4x3nyCRXKmNnfDBwRKZxOmPIrXZDNmmgal61Z0bS -rsJYo/Dk0kkmXYACPKwAl9KrJDguJ5XhwdPiX6VwSrjuQawm1LUG +MIIEpAIBAAKCAQEA6TwM1O/uQV/208qBPAhZUDfJpHmNZXFBcpNqoxuH2ziYekr5 +O5VzOkpCxVbILRTFESz+yhRkhzxJ212hSQ/euD0zSUiNthNmB7cMmru9AatUjPEI +5Tr3Tha5fbwvUcp9lLmxCSMw5m4r6AoFB6wcILMlb2GJilMIqkYxKN9jBBMSRJ4h +4BWHgTM0bXGQQBBMqzrHEFw6xHJr+Ut0T/bXTxn7YIOI0o7YRQFATpx6aEzXzHpI +piBrNaXBvGllZ5wHBn9qmmKbQpNyrxB4BNdf32g0puznS1WEhOAbS+ijPyG5QaJe +1QM5I5QiQrBEGEoMKYcuRVgB6/UnlAhwu8GJHwIDAQABAoIBAQDS0x0mPds37O7I +cvxur31MLaFvsxBE6iMm1mpGFdSwLHBn2u1/FpCZ2BaTGubHGUcpR2rob5aPR8fb +Kr9ns5i3IVsCmzq9ortPrf8OvzUSFTTQUfCghLSXOaNiLID5hfgOP+vvPogtQtkd +XjE9xi2GwWjNTXVuO7BRejFlqMdwHbL0nFb3V4vatKxzyfZM/7bxyWHKxKQfK8kf +qVY2nbz1Xn/5uZFoGBjYCXbSIwv7MRuxxFlsGxKc7pgSltgvYskrmCLCAY4W9BN/ +PNM/WUp3Q+HS/DqGDUSdlBAVLlL/7t+uHv5xbd6QFYEnPXq9B4Tzhg84TjPIw/Zu +FYHHQxaBAoGBAP8LYK2h7nortAwvr/rCDhBimBN+PPSk1/2Vl17RZJq969zSElbA +6BTPDYEjIkf+YC0l53y+7f5PM3ud5R3Lgur64UggBqV+8MwpuDZ60g8CKhJ2IPyM +agVxIuvOv8D+FIgz4Fmi4Me+P31+eUf9bBeqxQh7/CsoLdEwbNHgNUGZAoGBAOob +wPtvWpWAFhB0SCkmhHucm5B2ioTI3UprpOqXeuKz+ns9rVYEDvUJCvLxJcg38nHf +Tfxnkzr6sy1TlpcqcxiYYtolS5t/GxYIioviQvLT/BkIvKWyeaRMS2vy2NnB0j/U +IiSnYax8pg20SInWD3yxUrZwjm78gtr2AAQYnUN3AoGAE9fjxr6hmlnKIWSYcY8l +nvq80E9zGKm2sGEyLMtn425BaqXhjWRm6i+N4m1EXouZGgon75m/VJj+7XBEgkPy +RKwOWRk8yyWMQKZCUeLOcyJ8+YC9YkjeetvplqU4YCCkolA+9Vpp2MChmfb8IrDB +9zlvKRDUdtsibXMyFEY4fokCgYEA6Y/W8QMfdJfda30XoTZ0Zn7QFUiu2dssK9tJ +JWMLjrHQ7LOUA4T5By6GZeqAr0hh8Ym/3FnZYbZMnKQQUbBgM+GUfd9Hl1MwSsMq +tnR+JpWnpbI5w3ZUNb6IYKJgBqCAin2xsq/rmpKheHqtBBc0TEr9IlcZQ1FZm+pi +CbQk8fECgYAOEXqVzJE6UtDw7/1vR0ZtrBFyI2CzKAuG5ZoCpFfjDTFpG/ULfKXq +9nWy335MtT8mgvsQCJ1jTlxkqFXaVK6SUBdGezz006n0NosAnaQKO/1OPRgFrxlM +b3b/+9lYrIzTQbfNKE+HGalmV5mnZ5fa+CczyA6F0ZW+BK2HpzySpA== -----END RSA PRIVATE KEY----- diff --git a/tests/data/ssl/tests_server_cert.pem b/tests/data/ssl/tests_server_cert.pem index 3276dea0..6a725692 100644 --- a/tests/data/ssl/tests_server_cert.pem +++ b/tests/data/ssl/tests_server_cert.pem @@ -5,63 +5,63 @@ Certificate: Signature Algorithm: md5WithRSAEncryption Issuer: OU=MySQLConnectorPython Root CA, CN=MyConnPy Root CA Validity - Not Before: Mar 17 15:50:37 2017 GMT - Not After : Mar 17 15:50:37 2018 GMT + Not Before: Jul 12 09:42:28 2017 GMT + Not After : Jul 12 09:42:28 2018 GMT Subject: OU=MySQLConnectorPython Server Cert, CN=localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: - 00:a3:0d:e6:bd:d7:5e:1e:0f:b2:0a:83:43:50:fe: - 7c:bc:32:dc:04:fd:38:97:86:1e:e0:9c:46:08:65: - ac:76:6f:0d:93:33:31:4e:02:8a:a7:e9:9a:b9:4f: - f9:d3:66:56:29:1a:e5:0f:df:7b:61:e5:3c:06:db: - ea:cd:d6:71:9d:63:b2:f9:e1:c1:ed:9a:6e:2f:2f: - be:94:76:aa:ee:24:b3:58:f0:82:25:00:ef:c8:19: - 4f:15:6f:f2:3b:b4:e4:9b:0d:36:c7:17:39:7d:35: - 45:e8:76:62:94:19:ab:64:d8:89:78:75:92:29:e2: - 35:79:dd:e1:bf:3f:52:bf:ef:4c:d1:c1:fc:d0:a6: - ee:b8:01:39:26:28:67:40:73:46:5e:55:65:3b:56: - c9:c0:e1:7a:a4:a1:0c:46:d2:1e:b3:af:c5:cc:5b: - 07:81:79:c5:d0:44:57:ed:ea:ad:d9:c2:45:70:72: - 46:d3:e2:a3:f4:d0:49:33:ac:66:89:9b:83:65:f9: - 92:07:4e:9c:bf:b0:59:90:f8:35:8f:19:d2:82:d7: - 49:46:f5:4b:6a:c0:bd:5c:5d:0f:a0:fb:29:15:a7: - 68:5e:e1:48:20:c8:14:eb:fc:17:29:d6:95:4a:27: - 70:f3:c3:52:3d:1c:a5:d4:cf:3c:87:81:d7:d9:bb: - dc:49 + 00:ea:77:37:62:c6:d7:fb:96:17:d6:87:11:f3:dd: + 4e:ee:28:34:73:7f:96:c1:06:4f:2d:6e:e9:02:8c: + b0:82:49:5f:43:7b:6b:06:b9:71:45:72:1a:d8:c6: + 24:00:7c:8d:cf:6d:0f:61:e5:62:2b:56:68:a8:9f: + 94:87:7a:f6:9d:04:99:ed:15:d2:af:f3:f3:f7:72: + 3b:cc:15:fa:53:52:6e:7d:3b:1d:70:f4:f1:9f:04: + f0:ce:2f:38:46:cd:30:07:01:46:07:f9:c0:c3:32: + 0f:24:35:52:92:d4:ed:36:c3:69:a2:91:b5:48:81: + 2a:34:5a:b0:bb:2d:eb:d4:65:b9:e5:23:16:e1:0c: + 24:9c:27:29:38:8b:77:f1:21:25:90:8c:19:f3:e1: + a5:f2:98:63:90:c1:da:bb:19:6c:b0:b4:23:76:43: + 09:c3:0b:13:c7:d8:a0:8b:70:68:3c:49:e0:36:29: + c4:6e:90:59:fa:85:64:d1:a3:5e:8f:fb:af:ff:61: + 4a:ea:fd:10:80:25:0f:e6:cc:f1:c1:f2:71:30:ac: + 21:d3:39:77:9f:25:82:a7:b9:e0:31:c8:78:10:12: + da:18:bf:13:9f:e5:a2:75:e3:0c:13:1d:56:d9:3f: + 0b:25:62:a2:8d:b2:18:94:c2:23:7e:94:04:05:06: + fb:33 Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption - 36:58:2f:f4:95:e6:8b:ef:5b:59:91:2e:31:c2:21:64:b7:ac: - e6:bf:4e:b7:12:06:7d:8b:74:eb:82:88:65:00:4c:12:5e:6b: - dd:8b:d5:5e:cd:74:92:8a:dd:eb:fb:5b:1d:46:b0:e4:7d:55: - 1a:01:9a:82:0c:4d:91:05:e2:92:f5:17:0f:a5:8b:d9:8e:8f: - 17:55:19:83:07:2b:ea:2b:16:15:30:f7:31:7e:84:cc:b7:e0: - b1:b1:53:5d:e9:40:87:19:98:d5:f8:eb:ae:ef:b4:e7:85:12: - 38:e7:12:f4:44:03:08:a6:fc:3b:aa:26:1c:52:95:e0:7b:93: - 92:00:e2:21:b8:09:00:7d:e5:08:b4:c8:53:1d:2c:11:ea:86: - 5c:f9:14:c6:3f:73:0a:bc:e7:96:cb:e9:39:23:d7:50:0f:7d: - 2e:04:be:e9:5b:0b:bf:99:85:8c:ed:32:14:1d:09:c5:d5:d1: - e6:db:f2:54:51:3f:5f:0e:e0:06:58:c8:52:68:4e:39:25:bd: - b5:1b:8b:b2:1d:95:cb:cb:22:18:b5:d7:27:3d:32:c4:79:c4: - fa:e1:6f:00:1c:63:da:4a:ce:9e:de:0c:a4:dd:bd:d3:d6:cb: - 51:d7:e6:32:5f:5f:31:1f:a5:9d:5f:d5:2c:21:72:a7:ed:f1: - d8:31:c8:b4 + 1a:e8:5f:e0:f4:44:9c:32:0d:51:01:79:01:f6:26:1c:47:d2: + d9:36:88:e3:24:ec:95:df:20:56:40:33:51:e7:b8:9b:20:cd: + 03:89:33:49:03:45:1d:d3:2d:00:69:ec:08:ed:01:63:45:84: + d7:ba:bd:1c:a7:f9:49:e8:1b:95:5f:15:f9:a9:ee:01:f6:d6: + f6:de:79:89:32:f6:d8:bc:9e:c1:30:ed:48:bb:c9:4d:32:ca: + 13:b0:f5:92:12:fe:03:65:22:7b:f5:42:8b:c8:1b:2d:3a:a2: + 30:10:7a:a4:58:6f:25:65:a0:a2:b5:ea:bf:d6:74:73:ae:16: + 45:ed:cb:b2:ab:0e:b6:3a:fd:0f:2f:07:9a:a6:59:f3:dd:8d: + 40:84:38:55:16:d6:f6:ad:f2:8d:67:e6:fc:99:c9:84:b3:f0: + 38:94:cd:d9:89:24:dd:a7:54:67:16:d5:b3:3b:27:c1:10:79: + f4:7b:3f:f9:de:18:1a:8b:29:0b:24:e8:37:4e:2c:70:0f:4b: + d4:dd:8b:6e:7f:c1:ab:54:eb:b9:54:e8:de:87:03:81:53:2f: + 5a:94:d4:c4:f1:d8:49:4b:4d:37:81:4f:be:dd:69:a5:36:c7: + 72:84:1b:f1:a0:d9:20:a1:2f:6a:a1:5f:33:62:a8:86:7d:08: + e7:31:6a:85 -----BEGIN CERTIFICATE----- MIIC9TCCAd0CAQEwDQYJKoZIhvcNAQEEBQAwQjElMCMGA1UECwwcTXlTUUxDb25u ZWN0b3JQeXRob24gUm9vdCBDQTEZMBcGA1UEAwwQTXlDb25uUHkgUm9vdCBDQTAe -Fw0xNzAzMTcxNTUwMzdaFw0xODAzMTcxNTUwMzdaMD8xKTAnBgNVBAsMIE15U1FM +Fw0xNzA3MTIwOTQyMjhaFw0xODA3MTIwOTQyMjhaMD8xKTAnBgNVBAsMIE15U1FM Q29ubmVjdG9yUHl0aG9uIFNlcnZlciBDZXJ0MRIwEAYDVQQDDAlsb2NhbGhvc3Qw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjDea9114eD7IKg0NQ/ny8 -MtwE/TiXhh7gnEYIZax2bw2TMzFOAoqn6Zq5T/nTZlYpGuUP33th5TwG2+rN1nGd -Y7L54cHtmm4vL76UdqruJLNY8IIlAO/IGU8Vb/I7tOSbDTbHFzl9NUXodmKUGatk -2Il4dZIp4jV53eG/P1K/70zRwfzQpu64ATkmKGdAc0ZeVWU7VsnA4XqkoQxG0h6z -r8XMWweBecXQRFft6q3ZwkVwckbT4qP00EkzrGaJm4Nl+ZIHTpy/sFmQ+DWPGdKC -10lG9UtqwL1cXQ+g+ykVp2he4UggyBTr/Bcp1pVKJ3Dzw1I9HKXUzzyHgdfZu9xJ -AgMBAAEwDQYJKoZIhvcNAQEEBQADggEBADZYL/SV5ovvW1mRLjHCIWS3rOa/TrcS -Bn2LdOuCiGUATBJea92L1V7NdJKK3ev7Wx1GsOR9VRoBmoIMTZEF4pL1Fw+li9mO -jxdVGYMHK+orFhUw9zF+hMy34LGxU13pQIcZmNX4667vtOeFEjjnEvREAwim/Duq -JhxSleB7k5IA4iG4CQB95Qi0yFMdLBHqhlz5FMY/cwq855bL6Tkj11APfS4Evulb -C7+ZhYztMhQdCcXV0ebb8lRRP18O4AZYyFJoTjklvbUbi7IdlcvLIhi11yc9MsR5 -xPrhbwAcY9pKzp7eDKTdvdPWy1HX5jJfXzEfpZ1f1Swhcqft8dgxyLQ= +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDqdzdixtf7lhfWhxHz3U7u +KDRzf5bBBk8tbukCjLCCSV9De2sGuXFFchrYxiQAfI3PbQ9h5WIrVmion5SHevad +BJntFdKv8/P3cjvMFfpTUm59Ox1w9PGfBPDOLzhGzTAHAUYH+cDDMg8kNVKS1O02 +w2mikbVIgSo0WrC7LevUZbnlIxbhDCScJyk4i3fxISWQjBnz4aXymGOQwdq7GWyw +tCN2QwnDCxPH2KCLcGg8SeA2KcRukFn6hWTRo16P+6//YUrq/RCAJQ/mzPHB8nEw +rCHTOXefJYKnueAxyHgQEtoYvxOf5aJ14wwTHVbZPwslYqKNshiUwiN+lAQFBvsz +AgMBAAEwDQYJKoZIhvcNAQEEBQADggEBABroX+D0RJwyDVEBeQH2JhxH0tk2iOMk +7JXfIFZAM1HnuJsgzQOJM0kDRR3TLQBp7AjtAWNFhNe6vRyn+UnoG5VfFfmp7gH2 +1vbeeYky9ti8nsEw7Ui7yU0yyhOw9ZIS/gNlInv1QovIGy06ojAQeqRYbyVloKK1 +6r/WdHOuFkXty7KrDrY6/Q8vB5qmWfPdjUCEOFUW1vat8o1n5vyZyYSz8DiUzdmJ +JN2nVGcW1bM7J8EQefR7P/neGBqLKQsk6DdOLHAPS9Tdi25/watU67lU6N6HA4FT +L1qU1MTx2ElLTTeBT77daaU2x3KEG/Gg2SChL2qhXzNiqIZ9COcxaoU= -----END CERTIFICATE----- diff --git a/tests/data/ssl/tests_server_key.pem b/tests/data/ssl/tests_server_key.pem index 466fc970..1d79f88c 100644 --- a/tests/data/ssl/tests_server_key.pem +++ b/tests/data/ssl/tests_server_key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAow3mvddeHg+yCoNDUP58vDLcBP04l4Ye4JxGCGWsdm8NkzMx -TgKKp+mauU/502ZWKRrlD997YeU8BtvqzdZxnWOy+eHB7ZpuLy++lHaq7iSzWPCC -JQDvyBlPFW/yO7Tkmw02xxc5fTVF6HZilBmrZNiJeHWSKeI1ed3hvz9Sv+9M0cH8 -0KbuuAE5JihnQHNGXlVlO1bJwOF6pKEMRtIes6/FzFsHgXnF0ERX7eqt2cJFcHJG -0+Kj9NBJM6xmiZuDZfmSB06cv7BZkPg1jxnSgtdJRvVLasC9XF0PoPspFadoXuFI -IMgU6/wXKdaVSidw88NSPRyl1M88h4HX2bvcSQIDAQABAoIBAQCU+Epr/6x5gpWD -jVGfWiLUPxNNa5ycs2jahWxml53txqB8cDUHtMLBjmhSDoONZN4rR+sniWLMmgcx -rRLlZJsA1Onb6yqmzoUEj3ZrZc/dK6LAC1ycOjLYemcKivChJDAIiRYW510ay+VG -8YI3FQzGYh+W8rPLmGSLJvDtLgmIWMBavXi5hhErRSotsqAICLzfhnlKbFMc12ZS -b+eYX3/Q/NQlOKHtIhChEpvm1McYOhb4+8UI0Opc1LfQOE0qcgL9upEp2UK5qUCP -71dIwVgTMp0VyA2StkPzV+wu0pl1hFUfHlZE7B8oJrkUhLzT61+RzMmeXAMrw31A -PiP+kd2RAoGBAM489b23ioAIUiqswMy1PETYjNJvaxZ2eVk+2fyvGRw9wDWDAupi -+gfcV1cBRn29OINrW7AhobCpBZcqGyvBxtcq+EZxSFIZOqioNPHyANScLg0ijHku -02lPc6jHedqj4B+gU6dWq7kDuExiV/idIrb0oTPHVo+e1sw+/WGVEJcjAoGBAMpl -iYRHr1yASL8BjOVRzNUxbAxNccYHi1R5MimAQzotTQEQxHVoxedtzEiGO0sGl1ce -gdgGAtKBCMXjiC09vEvYO/ocOxVDKmGi5sVvQvTizTdi3HNf4E1kEGnZDG4ZiqEP -vSGsZPTq9XoLPraQw9xd3BsYOAOJUHVUWsiLAGujAoGAfN5r63I1aU+gcDYohck1 -tHloygCr1e3liyOC2HsruO2qcrvgCAnlWN0QBJ3BEGCA1xEpcnrqawvrVpsn2FZ7 -Dcv2hrAQGaUs3vD5HYRo/FGTkGBarQSs/BYe8RHVtYuDJ6LrA2Z2ko6uB5GDsgNy -AVQcRj1rK4oAg6mfwHWAlgECgYEAg7ydSqViJeI192Up8SVSHr4BZuyNjmjgroYI -OW0L1PUhdv0T8pvUnLMh0V7Vfxr2LLVlrFcVRTDJpgxYWaIiSnefakcvycIi9tQS -QxYNTdnF2zQU61/PXnAwIsUsywkC65yT7TQJrkS0rNBe7HPDmE7bciNMajjZTtUu -FfQrvOMCgYEAojKV9hEJxvkwIMD7D6lvCpaMdMmv7yxgMbuNJ6je9h3faKc8tKQK -4d5F1Cl/CKXQcwSMt0IDy3jynJJDP8bN3Wp1C8lU8ZnzoGbGK2jotGtjG6UaOL7B -N4BnlJGjJUqYni2xRWk8A+/HT5zngN0Q7+Eq0vkdajewjISKiH4reaA= +MIIEpAIBAAKCAQEA6nc3YsbX+5YX1ocR891O7ig0c3+WwQZPLW7pAoywgklfQ3tr +BrlxRXIa2MYkAHyNz20PYeViK1ZoqJ+Uh3r2nQSZ7RXSr/Pz93I7zBX6U1JufTsd +cPTxnwTwzi84Rs0wBwFGB/nAwzIPJDVSktTtNsNpopG1SIEqNFqwuy3r1GW55SMW +4QwknCcpOIt38SElkIwZ8+Gl8phjkMHauxlssLQjdkMJwwsTx9igi3BoPEngNinE +bpBZ+oVk0aNej/uv/2FK6v0QgCUP5szxwfJxMKwh0zl3nyWCp7ngMch4EBLaGL8T +n+WideMMEx1W2T8LJWKijbIYlMIjfpQEBQb7MwIDAQABAoIBAQCBtbJOUvLpm/9U +DyU/ZA9mcZeSzeL4piTnXZRKdMqxSSYKjxyGe9DOOnHfur3wBvfs6Mi5v8yvbP45 +Sw9AZCZKd2EwaAJGlQ9CtU+feAkkT1YQscN32gpRjsopRrY7dQg819eGUgTx95+o +yFcGJAWXZkPqS/GeStauX/2lj6IHva//jpQDyszIb9HUE6rZEv45dQiJwONKGhFS +L7N3zhf2p1rACkt/LtIoCRHuhSpzY2dA63c2uQfLXp0XIJLHxLw1Fi9V67fkGuYJ +3QGRFcxyZys7GSkoACwbI8my4aoHjaYVuLFEdAEIfcrSfFwRJeEDncaWlghpDoAf +ihyXO+QBAoGBAP1XQXnFdqE9O2xt/LrX/rS5SV4IbsEkXW3LaPKfPaZOSxtgZf4/ ++x1Wx1G1LdIPwYcyXy+pesJuXnt7nfG2wYVCZg+DORNfNOuPzF96LW42XoxPLK1+ +foXSbGAi2b5zbL8cNBE5QBEzm6MtFgMMuE0flm5nffKcPMG5dUPnKJnDAoGBAOzt +PeN5XHUAC9zZNJe6BnwM5ohpdjDfa8wcGrsXje/s6/WBYSTAVaiNy/v5HnwEN0UZ +zVkamq+xY2fwljA8QLD+1ByXP+/pcqsymlyhiD+zN3UwavrsnkJ1Y2ISsYPFYN5o +jh+RijBaAwlu5yPNapisjnKX4TtxPerSYPsUbpHRAoGAIkDS9IDzWjeqOi3g1u5v +XMYUmmcvemPNUhQHm45WSo8ZbpkpEShbbosWJgEGMfm5Y+s2nX4fv/wmQDHlmBHq +tnbUz9IhPHJJ+HOX4WzmiZlGTVhDJS4OM0/RIWp04GBA2tIYZB/GfszohTaKXF0y +6hKUR1cs20mumU7XARhXD/sCgYB+FRJmR2NIcCnf8Ubnp3tj8ImN9nGLOJppGFux +TKugDnjTQXKs2B29gRgYk04BuUygXUbGMD45WTEJUyLZsHbMug+u116TEayQJnG2 +8c9L9teAaa/EsL7XpxioTEJjWVpfgUyAyDa93GjZUEd46gvcC5gSq3iU5YKJwEMT +2p+swQKBgQCkorpj+2b4PPZMkTWmFagwvkyWbtTAheRevnGy92ZNjAEn81t4qaoX +6tYBDyE2K/pObelVYm72OECJGYjgrh3PPcTE9vUPELKTzszJCtXZtfW3nBJaN0ty +zN+qYoo5w9q3nnKZmH0mg9a7j7+yiRKmATAnFQfFnLcaVKaq7uskfA== -----END RSA PRIVATE KEY----- diff --git a/tests/issues/test_bug21879914.py b/tests/issues/test_bug21879914.py index b80ba07e..7300e8bb 100644 --- a/tests/issues/test_bug21879914.py +++ b/tests/issues/test_bug21879914.py @@ -52,6 +52,7 @@ def test_ssl_cipher_in_option_file(self): config = tests.get_mysql_config() config['ssl_ca'] = TEST_SSL['ca'] config['use_pure'] = False + config.pop('unix_socket') cnx = mysql.connector.connect(**config) cnx.cmd_query("SHOW STATUS LIKE 'Ssl_cipher'") diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 57b6ee9a..79fe740e 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -2407,6 +2407,7 @@ def test_sha256(self): def test_sha256_nonssl(self): config = tests.get_mysql_config() config['unix_socket'] = None + config['ssl_disabled'] = True config['client_flags'] = [constants.ClientFlag.PLUGIN_AUTH] user = self.users['sha256user'] @@ -4241,72 +4242,112 @@ def test_big_column_count(self): class BugOra25397650(tests.MySQLConnectorTests): """BUG#25397650: CERTIFICATE VALIDITY NOT VERIFIED """ + def setUp(self): + self.config = tests.get_mysql_config().copy() + self.config.pop('unix_socket') + self.config['host'] = 'localhost' + self.ca = os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_CA_cert.pem')) + self.ca_1 = os.path.abspath( + os.path.join(tests.SSL_DIR, 'tests_CA_cert_1.pem')) + + def _verify_cert(self, config): + # Test with a bad CA + config['ssl_ca'] = self.ca_1 + config['ssl_verify_cert'] = True + self.assertRaises(errors.InterfaceError, + mysql.connector.connect, **config) + config['ssl_verify_cert'] = False + mysql.connector.connect(**config) + + # Test with the correct CA + config['ssl_ca'] = self.ca + config['ssl_verify_cert'] = True + mysql.connector.connect(**config) + config['ssl_verify_cert'] = False + mysql.connector.connect(**config) + + def test_pure_verify_server_certifcate(self): + config = self.config.copy() + config['use_pure'] = True + + self._verify_cert(config) + + def test_cext_verify_server_certifcate(self): + config = self.config.copy() + config['use_pure'] = False + + self._verify_cert(config) + + +class BugOra21947091(tests.MySQLConnectorTests): + """BUG#21947091: """ def setUp(self): self.config = tests.get_mysql_config() - self.config = tests.get_mysql_config() - self.config.update({ - 'ssl_ca': os.path.abspath( - os.path.join(tests.SSL_DIR, 'tests_CA_cert.pem')), - 'ssl_cert': os.path.abspath( - os.path.join(tests.SSL_DIR, 'tests_client_cert.pem')), - 'ssl_key': os.path.abspath( - os.path.join(tests.SSL_DIR, 'tests_client_key.pem')), - }) - self.mysql_server = tests.MYSQL_SERVERS[0] - self._use_expired_cert() + self.config.pop('unix_socket') + self.server = tests.MYSQL_SERVERS[0] - def tearDown(self): - self._use_original_cert() - self._ensure_up() + def _disable_ssl(self): + self.server.stop() + self.server.wait_down() - def _ensure_up(self): - # Start the MySQL server again - if not self.mysql_server.check_running(): - self.mysql_server.start() + self.server.start(ssl_ca='', ssl_cert='', ssl_key='') + self.server.wait_up() + time.sleep(1) - if not self.mysql_server.wait_up(): - self.fail("Failed restarting MySQL server after test") + def _enable_ssl(self): + self.server.stop() + self.server.wait_down() - def _use_original_cert(self): - self.mysql_server.stop() - self.mysql_server.wait_down() + self.server.start() + self.server.wait_up() + time.sleep(1) - self.mysql_server.start() - self.mysql_server.wait_up() - time.sleep(2) + def _verify_ssl(self, cnx, available=True): + cur = cnx.cursor() + cur.execute("SHOW STATUS LIKE 'Ssl_version'") + result = cur.fetchall()[0] + if available: + self.assertNotEqual(result[1], '') + else: + self.assertEqual(result[1], '') - def _use_expired_cert(self): - self.mysql_server.stop() - self.mysql_server.wait_down() - - cert = os.path.abspath( - os.path.join(tests.SSL_DIR, 'tests_expired_server_cert.pem')) - key = os.path.abspath( - os.path.join(tests.SSL_DIR, 'tests_expired_server_key.pem')) - if os.name == 'nt': - cert = os.path.normpath(cert) - cert = cert.replace('\\', '\\\\') - key = os.path.normpath(key) - key = key.replace('\\', '\\\\') - self.mysql_server.start(ssl_cert=cert, ssl_key=key) - self.mysql_server.wait_up() - time.sleep(2) + def test_ssl_disabled_pure(self): + self.config['use_pure'] = True + self._test_ssl_modes() - def test_pure_verify_server_certifcate(self): - self.config["use_pure"] = True - self.config['ssl_verify_cert'] = True - self.assertRaises(errors.InterfaceError, - mysql.connector.connect, **self.config) - self.config['ssl_verify_cert'] = False - mysql.connector.connect(**self.config) + def test_ssl_disabled_cext(self): + self.config['use_pure'] = False + self._test_ssl_modes() - def test_cext_verify_server_certifcate(self): - self.config["use_pure"] = False - self.config['ssl_verify_cert'] = True - self.assertRaises(errors.InterfaceError, - mysql.connector.connect, **self.config) - self.config['ssl_verify_cert'] = False - mysql.connector.connect(**self.config) + def _test_ssl_modes(self): + config = self.config.copy() + # With SSL on server + # default + cnx = mysql.connector.connect(**config) + self._verify_ssl(cnx) + + # disabled + config['ssl_disabled'] = True + cnx = mysql.connector.connect(**config) + self._verify_ssl(cnx, False) + + self._disable_ssl() + config = self.config.copy() + config['ssl_ca'] = tests.SSL_CA + # Without SSL on server + try: + # default + cnx = mysql.connector.connect(**config) + self._verify_ssl(cnx, False) + + # disabled + config['ssl_disabled'] = True + cnx = mysql.connector.connect(**config) + self._verify_ssl(cnx, False) + + finally: + self._enable_ssl() class BugOra25589496(tests.MySQLConnectorTests): diff --git a/tests/test_connection.py b/tests/test_connection.py index e58b5774..697ef09e 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -814,7 +814,8 @@ def test__do_auth_ssl(self): charset=kwargs['charset'], client_flags=kwargs['client_flags']), ] - self.cnx._socket.switch_to_ssl = lambda ca, cert, key: None + self.cnx._socket.switch_to_ssl = \ + lambda ca, cert, key, verify_cert, cipher: None self.cnx._socket.sock.reset() self.cnx._socket.sock.add_packets([ bytearray(b'\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00'), From dcef0ae6506143dc864b2dbeb5c84c86efc4b239 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 13 Jul 2017 11:45:59 +0100 Subject: [PATCH 49/95] Prepare release 2.1.7 --- CHANGES.txt | 12 ++++++++++++ cpyint | 2 +- lib/mysql/connector/version.py | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 6e2c797e..3fa61cb2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,18 @@ Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. Full release notes: http://dev.mysql.com/doc/relnotes/connector-python/en/ +v2.1.7 +====== + +- BUG26376334: Fix prepared statements in MySQL 8.0 +- BUG25965922: Add support for Django 1.11 +- BUG24659561: Fix MySQLCursor.executemany() when using utf8mb4 charset +- BUG24342757: Fix unclosed socket on connection failure +- BUG22880163: Fix memory leak on using Named Tuple Cursors +- BUG22825962: Fix memory leak on escape_string() +- BUG22564149: Fix cmd_query_iter() when using bytestrings with Python 2 +- BUG21947091: Add ssl_disabled option + v2.1.6 ====== diff --git a/cpyint b/cpyint index c456b37f..48ce66d2 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit c456b37f807d6f8d4351d17b2130a88429c68b76 +Subproject commit 48ce66d2661fb1fa446ea41d00041cd4468f21fe diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index f6b49d53..ffc045c1 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -26,7 +26,7 @@ as mysql.connector.version. """ -VERSION = (2, 1, 6, '', 0) +VERSION = (2, 1, 7, '', 0) if VERSION[3] and VERSION[4]: VERSION_TEXT = '{0}.{1}.{2}{3}{4}'.format(*VERSION) From 9b77114a53c81190b0ba93252ba565ff1e3ae90a Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 13 Jul 2017 14:47:34 +0100 Subject: [PATCH 50/95] Fix bug numbers in CHANGES.txt --- CHANGES.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 3fa61cb2..dac4a52c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -11,14 +11,14 @@ Full release notes: v2.1.7 ====== -- BUG26376334: Fix prepared statements in MySQL 8.0 -- BUG25965922: Add support for Django 1.11 -- BUG24659561: Fix MySQLCursor.executemany() when using utf8mb4 charset -- BUG24342757: Fix unclosed socket on connection failure -- BUG22880163: Fix memory leak on using Named Tuple Cursors -- BUG22825962: Fix memory leak on escape_string() -- BUG22564149: Fix cmd_query_iter() when using bytestrings with Python 2 -- BUG21947091: Add ssl_disabled option +- BUG#26376334: Fix prepared statements in MySQL 8.0 +- BUG#25965922: Add support for Django 1.11 +- BUG#24659561: Fix MySQLCursor.executemany() when using utf8mb4 charset +- BUG#24342757: Fix unclosed socket on connection failure +- BUG#22880163: Fix memory leak on using Named Tuple Cursors +- BUG#22825962: Fix memory leak on escape_string() +- BUG#22564149: Fix cmd_query_iter() when using bytestrings with Python 2 +- BUG#21947091: Add ssl_disabled option v2.1.6 ====== From 5a55d25800628886cc18cf1bfd9d986857adad85 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 25 Jul 2017 15:41:05 +0100 Subject: [PATCH 51/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 48ce66d2..f3114a96 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 48ce66d2661fb1fa446ea41d00041cd4468f21fe +Subproject commit f3114a968ebef53bdd2c499f0b38d232da547ce8 From c6968563bb5e41386cf0766b70276fdfa252653f Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Wed, 26 Jul 2017 09:34:00 +0100 Subject: [PATCH 52/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index f3114a96..5bacd55a 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit f3114a968ebef53bdd2c499f0b38d232da547ce8 +Subproject commit 5bacd55ac412661b14babc6c134e78e6350165e7 From ebb00cbc5784ba8fb053f49b0083f84bd03f77aa Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 26 Jul 2017 12:55:33 +0200 Subject: [PATCH 53/95] cpyint update --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 48ce66d2..54de42a1 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 48ce66d2661fb1fa446ea41d00041cd4468f21fe +Subproject commit 54de42a1e4c17aeb0f521eb289a72831340a6f2f From 9b23e928aff233deb2384e6ac45067f0fd107596 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 26 Jul 2017 13:03:38 +0200 Subject: [PATCH 54/95] cpyint update --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 54de42a1..16a1b4dc 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 54de42a1e4c17aeb0f521eb289a72831340a6f2f +Subproject commit 16a1b4dc70fcd769232e24cac3cb4576c8a26049 From e9c045b82c421a106b9da63929b7e2a9104619ed Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 26 Jul 2017 13:15:05 +0200 Subject: [PATCH 55/95] cpyint update --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 5bacd55a..16a1b4dc 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 5bacd55ac412661b14babc6c134e78e6350165e7 +Subproject commit 16a1b4dc70fcd769232e24cac3cb4576c8a26049 From 43f2882ef2a81363cd15c1b4251063d0760608bb Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 26 Jul 2017 14:57:29 +0200 Subject: [PATCH 56/95] cpyint update --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 16a1b4dc..9441798a 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 16a1b4dc70fcd769232e24cac3cb4576c8a26049 +Subproject commit 9441798a6e94f2ffd348637d8617db4d3f693472 From 53520b2eca81789d5d10aa0536764d40a6e32b66 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 26 Jul 2017 15:14:22 +0200 Subject: [PATCH 57/95] cpyint update --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 16a1b4dc..9441798a 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 16a1b4dc70fcd769232e24cac3cb4576c8a26049 +Subproject commit 9441798a6e94f2ffd348637d8617db4d3f693472 From a08294ea12071627f260baf904fa31ec2967d9a5 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 27 Jul 2017 19:26:06 +0100 Subject: [PATCH 58/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 9441798a..a50a98d4 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 9441798a6e94f2ffd348637d8617db4d3f693472 +Subproject commit a50a98d404915e13a9d850736ec389513ecd2f92 From dbfdc3fa0cfe51bd0922630009ccf01369f46d11 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 28 Jul 2017 09:27:04 +0100 Subject: [PATCH 59/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index a50a98d4..b6901a78 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit a50a98d404915e13a9d850736ec389513ecd2f92 +Subproject commit b6901a78e89817818efc023d951cc2b877bd35fb From cff1059d17f9e018eb740d8ec2d98a8df56a49c6 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 28 Jul 2017 18:48:24 +0100 Subject: [PATCH 60/95] Update CPYINT revision --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index b6901a78..87916a8e 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit b6901a78e89817818efc023d951cc2b877bd35fb +Subproject commit 87916a8e175a52dc2ef77441e49603932972cb7a From 6320e0710f58ab4519cb046243441778c3f2722e Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 5 Feb 2018 12:55:35 +0000 Subject: [PATCH 61/95] WL11665: Allow OpenSSL linkage in the C extension --- cpyint | 2 +- lib/cpy_distutils.py | 130 +++++++++++++++++++++++++++------ lib/mysql/connector/version.py | 2 +- setupinfo.py | 1 + tests/__init__.py | 5 +- tests/mysqld.py | 60 ++++++++------- tests/test_setup.py | 2 +- unittests.py | 15 ++-- 8 files changed, 159 insertions(+), 58 deletions(-) diff --git a/cpyint b/cpyint index 87916a8e..0075774d 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 87916a8e175a52dc2ef77441e49603932972cb7a +Subproject commit 0075774d02fbfd62dbc6991681f198a28a33287b diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index 55541a09..a870a42e 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -29,7 +29,9 @@ from distutils.command.install_lib import install_lib from distutils.errors import DistutilsExecError from distutils.util import get_platform -from distutils.dir_util import copy_tree +from distutils.version import LooseVersion +from distutils.dir_util import copy_tree, mkpath +from distutils.sysconfig import get_python_lib from distutils import log from glob import glob import os @@ -160,6 +162,8 @@ def parse_mysql_config_info(options, stdout): info['version'] = tuple([int(v) for v in ver.split('.')[0:3]]) libs = shlex.split(info['libs']) + if ',' in libs[1]: + libs.pop(1) info['lib_dir'] = libs[0].replace('-L', '') info['libs'] = [ lib.replace('-l', '') for lib in libs[1:] ] if platform.uname()[0] == 'SunOS': @@ -169,9 +173,10 @@ def parse_mysql_config_info(options, stdout): for lib in info['libs']: log.debug("# {0}".format(lib)) libs = shlex.split(info['libs_r']) + if ',' in libs[1]: + libs.pop(1) info['lib_r_dir'] = libs[0].replace('-L', '') info['libs_r'] = [ lib.replace('-l', '') for lib in libs[1:] ] - info['include'] = [x.strip() for x in info['include'].split('-I')[1:]] return info @@ -290,6 +295,58 @@ def initialize_options(self): self.extra_link_args = None self.with_mysql_capi = None + def _get_posix_openssl_libs(self): + openssl_libs = [] + try: + openssl_libs_path = os.path.join(self.with_mysql_capi, "lib") + openssl_libs.extend([ + os.path.basename(glob( + os.path.join(openssl_libs_path, "libssl.*.*.*"))[0]), + os.path.basename(glob( + os.path.join(openssl_libs_path, "libcrypto.*.*.*"))[0]) + ]) + except IndexError: + log.error("Couldn't find OpenSSL libraries in libmysqlclient") + return openssl_libs + + def _copy_vendor_libraries(self): + if not self.with_mysql_capi: + return + + data_files = [] + + if os.name == "nt": + openssl_libs = ["ssleay32.dll", "libeay32.dll"] + vendor_folder = "" + mysql_capi = os.path.join(self.with_mysql_capi, "bin") + # Bundle libmysql.dll + src = os.path.join(self.with_mysql_capi, "lib", "libmysql.dll") + dst = os.getcwd() + log.info("copying {0} -> {1}".format(src, dst)) + shutil.copy(src, dst) + data_files.append("libmysql.dll") + else: + openssl_libs = self._get_posix_openssl_libs() + vendor_folder = "mysql-vendor" + mysql_capi = os.path.join(self.with_mysql_capi, "lib") + + if vendor_folder: + mkpath(os.path.join(os.getcwd(), vendor_folder)) + + # Copy OpenSSL libraries to 'mysql-vendor' folder + log.info("Copying OpenSSL libraries") + for filename in openssl_libs: + data_files.append(os.path.join(vendor_folder, filename)) + src = os.path.join(mysql_capi, filename) + dst = os.path.join(os.getcwd(), vendor_folder) + log.info("copying {0} -> {1}".format(src, dst)) + shutil.copy(src, dst) + # Add data_files to distribution + self.distribution.data_files = [( + os.path.join(get_python_lib(), vendor_folder), + data_files + )] + def _finalize_connector_c(self, connc_loc): """Finalize the --with-connector-c command line argument """ @@ -317,22 +374,21 @@ def _finalize_connector_c(self, connc_loc): log.debug("# connc_loc: {0}".format(connc_loc)) else: # Probably using MS Windows - myconfigh = os.path.join(connc_loc, 'include', 'my_config.h') + myversionh = os.path.join(connc_loc, 'include', + 'mysql_version.h') - if not os.path.exists(myconfigh): + if not os.path.exists(myversionh): log.error("MySQL C API installation invalid " - "(my_config.h not found)") + "(mysql_version.h not found)") sys.exit(1) else: - with open(myconfigh, 'rb') as fp: + with open(myversionh, 'rb') as fp: for line in fp.readlines(): - if b'#define VERSION' in line: - version = tuple([ - int(v) for v in - line.split()[2].replace( - b'"', b'').split(b'.') - ]) - if version < min_version: + if b'#define LIBMYSQL_VERSION' in line: + version = LooseVersion( + line.split()[2].replace(b'"', b'').decode() + ).version + if tuple(version) < min_version: log.error(err_version); sys.exit(1) break @@ -414,6 +470,8 @@ def finalize_options(self): ('extra_link_args', 'extra_link_args'), ('with_mysql_capi', 'with_mysql_capi')) + self._copy_vendor_libraries() + build_ext.finalize_options(self) print("# Python architecture: {0}".format(py_arch)) @@ -423,13 +481,11 @@ def finalize_options(self): self._finalize_connector_c(self.with_mysql_capi) def fix_compiler(self): - platform = get_platform() - cc = self.compiler if not cc: return - if 'macosx-10.9' in platform: + if 'macosx-10.9' in get_platform(): for needle in ['-mno-fused-madd']: try: cc.compiler.remove(needle) @@ -467,8 +523,11 @@ def fix_compiler(self): if self.extra_compile_args: ext.extra_compile_args.extend(self.extra_compile_args.split()) # Add extra link args - if self.extra_link_args: - ext.extra_link_args.extend(self.extra_link_args.split()) + if self.extra_link_args and ext.name == "_mysql_connector": + extra_link_args = self.extra_link_args.split() + if platform.system() == "Linux": + extra_link_args += ["-Wl,-rpath,$ORIGIN/mysql-vendor"] + ext.extra_link_args.extend(extra_link_args) # Add system headers for sysheader in sysheaders: if sysheader not in ext.extra_compile_args: @@ -480,6 +539,8 @@ def fix_compiler(self): def run(self): """Run the command""" + if not self.with_mysql_capi: + return if os.name == 'nt': for ext in self.extensions: # Use the multithread, static version of the run-time library @@ -498,6 +559,26 @@ def run(self): self.fix_compiler() self.real_build_extensions() + if platform.system() == "Darwin": + libssl, libcrypto = self._get_posix_openssl_libs() + cmd_libssl = [ + "install_name_tool", "-change", libssl, + "@loader_path/mysql-vendor/{0}".format(libssl), + build_ext.get_ext_fullpath(self, "_mysql_connector") + ] + log.info("Executing: {0}".format(" ".join(cmd_libssl))) + proc = Popen(cmd_libssl, stdout=PIPE, universal_newlines=True) + stdout, _ = proc.communicate() + + cmd_libcrypto = [ + "install_name_tool", "-change", libcrypto, + "@loader_path/mysql-vendor/{0}".format(libcrypto), + build_ext.get_ext_fullpath(self, "_mysql_connector") + ] + log.info("Executing: {0}".format(" ".join(cmd_libcrypto))) + proc = Popen(cmd_libcrypto, stdout=PIPE, universal_newlines=True) + stdout, _ = proc.communicate() + class BuildExtStatic(BuildExtDynamic): @@ -506,6 +587,8 @@ class BuildExtStatic(BuildExtDynamic): user_options = build_ext.user_options + CEXT_OPTIONS def finalize_options(self): + self._copy_vendor_libraries() + install_obj = self.distribution.get_command_obj('install') install_obj.with_mysql_capi = self.with_mysql_capi install_obj.extra_compile_args = self.extra_compile_args @@ -550,7 +633,10 @@ def _finalize_connector_c(self, connc_loc): lib_file_path = os.path.join(self.connc_lib, lib_file) if os.path.isfile(lib_file_path) and not lib_file.endswith('.a'): os.unlink(os.path.join(self.connc_lib, lib_file)) - + elif os.name == 'nt': + self.include_dirs.extend([self.connc_include]) + self.libraries.extend(['libmysql']) + self.library_dirs.extend([self.connc_lib]) def fix_compiler(self): BuildExtDynamic.fix_compiler(self) @@ -601,7 +687,9 @@ def finalize_options(self): def run(self): self.build() - outfiles = self.install() + outfiles = [ + filename for filename in self.install() if filename.endswith(".py") + ] # (Optionally) compile .py to .pyc if outfiles is not None and self.distribution.has_pure_modules(): @@ -609,8 +697,6 @@ def run(self): if self.byte_code_only: for source_file in outfiles: - if os.path.join('mysql', '__init__.py') in source_file: - continue log.info("Removing %s", source_file) os.remove(source_file) diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index ffc045c1..387cb513 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -26,7 +26,7 @@ as mysql.connector.version. """ -VERSION = (2, 1, 7, '', 0) +VERSION = (2, 1, 8, '', 0) if VERSION[3] and VERSION[4]: VERSION_TEXT = '{0}.{1}.{2}{3}{4}'.format(*VERSION) diff --git a/setupinfo.py b/setupinfo.py index fe4602ec..cb31f889 100644 --- a/setupinfo.py +++ b/setupinfo.py @@ -109,6 +109,7 @@ 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', 'Topic :: Database', 'Topic :: Software Development', 'Topic :: Software Development :: Libraries :: Application Frameworks', diff --git a/tests/__init__.py b/tests/__init__.py index 1eb5f129..4788e908 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -752,7 +752,7 @@ def setup_logger(logger, debug=False, logfile=None): def install_connector(root_dir, install_dir, connc_location=None, - extra_compile_args=None): + extra_compile_args=None, extra_link_args=None): """Install Connector/Python in working directory """ logfile = 'myconnpy_install.log' @@ -785,6 +785,9 @@ def install_connector(root_dir, install_dir, connc_location=None, if extra_compile_args: cmd.extend(['--extra-compile-args', extra_compile_args]) + if extra_link_args: + cmd.extend(['--extra-link-args', extra_link_args]) + prc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, cwd=root_dir) diff --git a/tests/mysqld.py b/tests/mysqld.py index 6c762b8a..a01cd2ba 100644 --- a/tests/mysqld.py +++ b/tests/mysqld.py @@ -413,7 +413,6 @@ def _get_bootstrap_cmd(self): '--no-defaults', '--basedir=%s' % self._basedir, '--datadir=%s' % self._datadir, - '--log-warnings=0', '--max_allowed_packet=8M', '--default-storage-engine=myisam', '--net_buffer_length=16K', @@ -427,6 +426,9 @@ def _get_bootstrap_cmd(self): else: cmd.append("--bootstrap") + if self._version < (8, 0, 3): + cmd.append('--log-warnings=0') + if self._version[0:2] < (5, 5): cmd.append('--language={0}/english'.format(self._lc_messages_dir)) else: @@ -463,32 +465,35 @@ def bootstrap(self): extra_sql = [ "CREATE DATABASE myconnpy;" ] - defaults = ("'root'{0}, " - "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," - "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," - "'Y','Y','Y','Y','Y','','','','',0,0,0,0," - "@@default_authentication_plugin,'','N'," - "CURRENT_TIMESTAMP,NULL{1}") - - hosts = ["::1", "127.0.0.1"] - if self._version[0:3] < (8, 0, 1): - # because we use --initialize-insecure for 8.0 above - # which already creates root @ localhost - hosts.append("localhost") - - insert = "INSERT INTO mysql.user VALUES {0};".format( - ", ".join("('{0}', {{0}})".format(host) for host in hosts)) - - if self._version[0:3] >= (8, 0, 1): - # No password column, has account_locked, Create_role_priv and - # Drop_role_priv columns - extra_sql.append(insert.format(defaults.format("", ", 'N', 'Y', 'Y'"))) - elif self._version[0:3] >= (5, 7, 6): - # No password column, has account_locked column - extra_sql.append(insert.format(defaults.format("", ", 'N'"))) - elif self._version[0:3] >= (5, 7, 4): - # The password column - extra_sql.append(insert.format(defaults.format(", ''", ""))) + + if self._version < (8, 0, 1): + defaults = ("'root'{0}, " + "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," + "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," + "'Y','Y','Y','Y','Y','','','','',0,0,0,0," + "@@default_authentication_plugin,'','N'," + "CURRENT_TIMESTAMP,NULL{1}") + + hosts = ["::1", "127.0.0.1", "localhost"] + + insert = "INSERT INTO mysql.user VALUES {0};".format( + ", ".join("('{0}', {{0}})".format(host) for host in hosts)) + + if self._version[0:3] >= (5, 7, 6): + # No password column, has account_locked column + defaults = defaults.format("", ", 'N'") + elif self._version[0:3] >= (5, 7, 5): + # The password column + defaults = defaults.format(", ''", "") + + extra_sql.append(insert.format(defaults)) + else: + extra_sql.extend([ + "CREATE USER 'root'@'127.0.01';", + "GRANT ALL ON *.* TO 'root'@'127.0.0.1';", + "CREATE USER 'root'@'::1';", + "GRANT ALL ON *.* TO 'root'@'::1';" + ]) bootstrap_log = os.path.join(self._topdir, 'bootstrap.log') try: @@ -570,6 +575,7 @@ def update_config(self, **kwargs): 'serverid': self._serverid, 'lc_messages_dir': _convert_forward_slash( self._lc_messages_dir), + 'ssl': 1, } for arg in self._extra_args: diff --git a/tests/test_setup.py b/tests/test_setup.py index 74a0313b..9be8ffab 100644 --- a/tests/test_setup.py +++ b/tests/test_setup.py @@ -133,7 +133,7 @@ def test_classifiers(self): if 'Programming Language :: Python' in clsfr: ver = clsfr.replace('Programming Language :: Python :: ', '') if ver not in ('2.6', '2.7', '3', '3.1', '3.2', '3.3', '3.4', - '3.5'): + '3.5', '3.6'): self.fail('Unsupported version in classifiers') if 'Development Status ::' in clsfr: status = clsfr.replace('Development Status :: ', '') diff --git a/unittests.py b/unittests.py index 2b3c7a44..e6ae1681 100644 --- a/unittests.py +++ b/unittests.py @@ -99,9 +99,6 @@ # MySQL option file template. Platform specifics dynamically added later. MY_CNF = """ # MySQL option file for MySQL Connector/Python tests -[mysqld-8.0] -information-schema-stats=LATEST - [mysqld-5.6] innodb_compression_level = 0 innodb_compression_failure_threshold_pct = 0 @@ -140,7 +137,6 @@ innodb_flush_log_at_trx_commit = 2 innodb_log_file_size = 1Gb general_log_file = general_{name}.log -ssl """ # Platform specifics @@ -161,6 +157,8 @@ )) MYSQL_DEFAULT_BASE = os.path.join('/', 'usr', 'local', 'mysql') +MY_CNF += "\nssl={ssl}" + MYSQL_DEFAULT_TOPDIR = _TOPDIR _UNITTESTS_CMD_ARGS = { @@ -338,6 +336,12 @@ 'default': None, 'help': ("Extra compile args for the C extension") }, + + ('', '--extra-link-args'): { + 'dest': 'extra_link_args', 'metavar': 'NAME', + 'default': None, + 'help': ("Extra link args for the C extension") + }, } @@ -769,7 +773,8 @@ def main(): if not options.skip_install: tests.install_connector(_TOPDIR, tests.TEST_BUILD_DIR, options.mysql_capi, - options.extra_compile_args) + options.extra_compile_args, + options.extra_link_args) # Which tests cases to run testcases = [] From 0e2bdee7a24793affde3956571ebd45587646ddd Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Fri, 9 Feb 2018 12:01:12 -0600 Subject: [PATCH 62/95] BUG24948205: Results from JSON_TYPE() are returned as bytearray Result value from running a query with JSON_TYPE() is returned as a VAR_STRING value which is not converted and is returned as a bytearray. With this patch the returned value will be converted to a string type using the current charset, in case the conversion fail the value will still returned as a bytearray value. v3 --- lib/mysql/connector/conversion.py | 7 +++++-- tests/test_bugs.py | 24 +++++++++++++++++++++++- tests/test_cursor.py | 6 +++--- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/lib/mysql/connector/conversion.py b/lib/mysql/connector/conversion.py index d94e9e99..752220cf 100644 --- a/lib/mysql/connector/conversion.py +++ b/lib/mysql/connector/conversion.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -559,7 +559,10 @@ def _STRING_to_python(self, value, dsc=None): # pylint: disable=C0103 if dsc[7] & FieldFlag.SET: return self._SET_to_python(value, dsc) if dsc[7] & FieldFlag.BINARY: - return value + try: + return value.decode(self.charset) + except LookupError: + return value if self.charset == 'binary': return value diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 79fe740e..92811ea2 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -52,6 +52,7 @@ from mysql.connector import (connection, cursor, conversion, protocol, errors, constants, pooling) from mysql.connector.optionfiles import read_option_files +from mysql.connector.catch23 import STRING_TYPES import mysql.connector import cpy_distutils @@ -4525,3 +4526,24 @@ def test_executemany_utf8mb4(self): "INSERT INTO {0} VALUES (%s, %s)".format(self.tbl), [(1, "Nuno"), (2, "Amitabh"), (3, "Rafael")] ) + + +class BugOra24948205(tests.MySQLConnectorTests): + """BUG#24948205: RESULT OF JSON_TYPE IS BYTEARRAY INSTEAD OF STR + """ + def setUp(self): + config = tests.get_mysql_config() + self.tbl = "BugOra24948205" + self.cnx = connection.MySQLConnection(**config) + self.cur = self.cnx.cursor() + + def test_execute_get_json_type_as_str(self): + self.cur.execute("SELECT j, JSON_TYPE(j), 'foo'" + "FROM (SELECT json_object('foo', 'bar') AS j) jdata") + data = [('{"foo": "bar"}', 'OBJECT', 'foo')] + rows = self.cur.fetchall() + self.assertEqual(data, rows) + for col in rows[0]: + self.assertTrue(isinstance(col, STRING_TYPES), + "{} is type {} and not the expected type " + "string".format(col, type(col))) diff --git a/tests/test_cursor.py b/tests/test_cursor.py index 2f60827e..bc615e85 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -321,7 +321,7 @@ def test_next(self): self.cur = cursor.MySQLCursor(self.cnx) self.assertRaises(StopIteration, self.cur.__next__) self.cur.execute("SELECT BINARY 'ham'") - exp = (b'ham',) + exp = ('ham',) self.assertEqual(exp, next(self.cur)) self.cur.close() @@ -554,7 +554,7 @@ def test_execute(self): self.assertTrue(tests.cmp_result(exp, self.cur._warnings)) self.cur.execute("SELECT BINARY 'ham'") - exp = [(b'ham',)] + exp = [('ham',)] self.assertEqual(exp, self.cur.fetchall()) self.cur.close() @@ -826,7 +826,7 @@ def test_fetchone(self): self.cnx = connection.MySQLConnection(**tests.get_mysql_config()) self.cur = self.cnx.cursor() self.cur.execute("SELECT BINARY 'ham'") - exp = (b'ham',) + exp = ('ham',) self.assertEqual(exp, self.cur.fetchone()) self.assertEqual(None, self.cur.fetchone()) self.cur.close() From 1829fbb993c73391de4b84667f446cfb2448edb5 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 9 Feb 2018 15:27:35 +0000 Subject: [PATCH 63/95] WL11680: Add caching_sha2_password authentication plugin This patch adds caching_sha2_password plugin. This authentication mode requires SSL to function. There are 2 steps: 1. client sends a scramble in the form: XOR(SHA2(password), SHA2(SHA2(SHA2(password)), Nonce)) Nonce is provided by the server. This information can be sent over both secure and unsecure medium. 2. If server responds with Error packet, raise Error. Else if server responds with fast_auth_success, Step 2a. Else Step 2b. 2a. the server sends OK packet. Login is a success. 2b. Only this step requires SSL. Client must send the password to the server. To send the password to the server, the connection must be SSL. Once this password is validated, the user is stored in the cache and login is faster next time. Server can now send an OK packet or Error packet after validating user. --- .gitignore | 1 + lib/mysql/connector/authentication.py | 79 ++++++++++++++++++++++- lib/mysql/connector/connection.py | 19 ++++-- tests/cext/test_cext_api.py | 3 +- tests/test_bugs.py | 4 +- tests/test_connection.py | 92 ++++++++++++++++++++++++++- 6 files changed, 189 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 6ff35448..df0ddeef 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ commit.txt *.diff dist/ build/ +mysql-vendor/ MANIFEST cpy_server*/ *_output.txt diff --git a/lib/mysql/connector/authentication.py b/lib/mysql/connector/authentication.py index 4d8cdb8d..dfd31d79 100644 --- a/lib/mysql/connector/authentication.py +++ b/lib/mysql/connector/authentication.py @@ -23,11 +23,11 @@ """Implementing support for MySQL Authentication Plugins""" -from hashlib import sha1 +from hashlib import sha1, sha256 import struct from . import errors -from .catch23 import PY2, isstr +from .catch23 import PY2, isstr, UNICODE_TYPES class BaseAuthPlugin(object): @@ -173,6 +173,81 @@ def prepare_password(self): return password + b'\x00' +class MySQLCachingSHA2PasswordAuthPlugin(BaseAuthPlugin): + """Class implementing the MySQL caching_sha2_password authentication plugin + + Note that encrypting using RSA is not supported since the Python + Standard Library does not provide this OpenSSL functionality. + """ + requires_ssl = False + plugin_name = 'caching_sha2_password' + perform_full_authentication = 4 + fast_auth_success = 3 + + def _scramble(self): + """ Returns a scramble of the password using a Nonce sent by the + server. + + The scramble is of the form: + XOR(SHA2(password), SHA2(SHA2(SHA2(password)), Nonce)) + """ + if not self._auth_data: + raise errors.InterfaceError("Missing authentication data (seed)") + + if not self._password: + return b'' + + password = self._password.encode('utf-8') \ + if isinstance(self._password, UNICODE_TYPES) else self._password + + if PY2: + password = buffer(password) # pylint: disable=E0602 + try: + auth_data = buffer(self._auth_data) # pylint: disable=E0602 + except TypeError: + raise errors.InterfaceError("Authentication data incorrect") + else: + password = password + auth_data = self._auth_data + + hash1 = sha256(password).digest() + hash2 = sha256() + hash2.update(sha256(hash1).digest()) + hash2.update(auth_data) + hash2 = hash2.digest() + if PY2: + xored = [ord(h1) ^ ord(h2) for (h1, h2) in zip(hash1, hash2)] + else: + xored = [h1 ^ h2 for (h1, h2) in zip(hash1, hash2)] + hash3 = struct.pack('32B', *xored) + + return hash3 + + def prepare_password(self): + if len(self._auth_data) > 1: + return self._scramble() + elif self._auth_data[0] == self.perform_full_authentication: + return self._full_authentication() + + def _full_authentication(self): + """Returns password as as clear text""" + if not self._ssl_enabled: + raise errors.InterfaceError("{name} requires SSL".format( + name=self.plugin_name)) + + if not self._password: + return b'\x00' + password = self._password + + if PY2: + if isinstance(password, unicode): # pylint: disable=E0602 + password = password.encode('utf8') + elif isinstance(password, str): + password = password.encode('utf8') + + return password + b'\x00' + + def get_auth_plugin(plugin_name): """Return authentication class based on plugin name diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 45fb5f02..3cd4b406 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -170,6 +170,8 @@ def _auth_switch_request(self, username=None, password=None): Raises NotSupportedError when we get the old, insecure password reply back. Raises any error coming from MySQL. """ + auth = None + new_auth_plugin = self._auth_plugin or self._handshake["auth_plugin"] packet = self._socket.recv() if packet[4] == 254 and len(packet) == 5: raise errors.NotSupportedError( @@ -185,10 +187,19 @@ def _auth_switch_request(self, username=None, password=None): response = auth.auth_response() self._socket.send(response) packet = self._socket.recv() - if packet[4] != 1: - return self._handle_ok(packet) - else: - auth_data = self._protocol.parse_auth_more_data(packet) + + if packet[4] == 1: + auth_data = self._protocol.parse_auth_more_data(packet) + auth = get_auth_plugin(new_auth_plugin)( + auth_data, password=password, ssl_enabled=self._ssl_active) + if new_auth_plugin == "caching_sha2_password": + response = auth.auth_response() + if response: + self._socket.send(response) + packet = self._socket.recv() + + if packet[4] == 0: + return self._handle_ok(packet) elif packet[4] == 255: raise errors.get_exception(packet) diff --git a/tests/cext/test_cext_api.py b/tests/cext/test_cext_api.py index a2545373..3f5474ce 100644 --- a/tests/cext/test_cext_api.py +++ b/tests/cext/test_cext_api.py @@ -458,6 +458,7 @@ def test_commit(self): def test_change_user(self): connect_kwargs = self.connect_kwargs.copy() connect_kwargs['unix_socket'] = None + connect_kwargs['ssl_disabled'] = False cmy1 = MySQL(buffered=True) cmy1.connect(**connect_kwargs) cmy2 = MySQL(buffered=True) @@ -477,7 +478,7 @@ def test_change_user(self): pass stmt = ("CREATE USER '{user}'@'{host}' IDENTIFIED WITH " - "mysql_native_password").format(**new_user) + "caching_sha2_password").format(**new_user) cmy1.query(stmt) cmy1.query("SET old_passwords = 0") res = cmy1.query("SET PASSWORD FOR '{user}'@'{host}' = " diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 92811ea2..d2ecce9b 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -386,6 +386,7 @@ class Bug519301(tests.MySQLConnectorTests): @foreach_cnx() def test_auth(self): config = self.config.copy() + config.pop('unix_socket') config['user'] = 'ham' config['password'] = 'spam' @@ -4197,6 +4198,7 @@ def _drop_user(self, host, user): def test_unicode_password(self): config = tests.get_mysql_config() + config.pop('unix_socket') config['user'] = self.user config['password'] = self.password try: @@ -4292,7 +4294,7 @@ def _disable_ssl(self): self.server.stop() self.server.wait_down() - self.server.start(ssl_ca='', ssl_cert='', ssl_key='') + self.server.start(ssl_ca='', ssl_cert='', ssl_key='', ssl=0) self.server.wait_up() time.sleep(1) diff --git a/tests/test_connection.py b/tests/test_connection.py index 697ef09e..0714f2b7 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -742,6 +742,7 @@ def recv(self): def test__do_auth(self): """Authenticate with the MySQL server""" self.cnx._socket.sock = tests.DummySocket() + self.cnx._handshake["auth_plugin"] = "mysql_native_password" flags = constants.ClientFlag.get_default() kwargs = { 'username': 'ham', @@ -781,6 +782,94 @@ def test__do_auth(self): self.assertRaises(errors.ProgrammingError, self.cnx._do_auth, **kwargs) + @unittest.skipIf(not tests.SSL_AVAILABLE, "Python has no SSL support") + @unittest.skipIf(tests.MYSQL_VERSION < (8, 0, 3), + "caching_sha2_password plugin not supported by server.") + def test_caching_sha2_password(self): + """Authenticate with the MySQL server using caching_sha2_password""" + self.cnx._socket.sock = tests.DummySocket() + flags = constants.ClientFlag.get_default() + flags |= constants.ClientFlag.SSL + kwargs = { + 'username': 'ham', + 'password': 'spam', + 'database': 'test', + 'charset': 33, + 'client_flags': flags, + 'ssl_options': { + 'ca': os.path.join(tests.SSL_DIR, 'tests_CA_cert.pem'), + 'cert': os.path.join(tests.SSL_DIR, 'tests_client_cert.pem'), + 'key': os.path.join(tests.SSL_DIR, 'tests_client_key.pem'), + }, + } + + self.cnx._handshake['auth_plugin'] = 'caching_sha2_password' + self.cnx._handshake['auth_data'] = b'h4i6oP!OLng9&PD@WrYH' + self.cnx._socket.switch_to_ssl = \ + lambda ca, cert, key, verify_cert, cipher: None + + # Test perform_full_authentication + # Exchange: + # Client Server + # ------ ------ + # make_ssl_auth + # first_auth + # full_auth + # second_auth + # OK + self.cnx._socket.sock.reset() + self.cnx._socket.sock.add_packets([ + bytearray(b'\x02\x00\x00\x03\x01\x04'), # full_auth request + bytearray(b'\x07\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00') # OK + ]) + self.cnx._do_auth(**kwargs) + packets = self.cnx._socket.sock._client_sends + self.assertEqual(3, len(packets)) + ssl_pkt = self.cnx._protocol.make_auth_ssl( + charset=kwargs['charset'], client_flags=kwargs['client_flags']) + # Check the SSL request packet + self.assertEqual(packets[0][4:], ssl_pkt) + auth_pkt = self.cnx._protocol.make_auth( + self.cnx._handshake, kwargs['username'], + kwargs['password'], kwargs['database'], + charset=kwargs['charset'], + client_flags=kwargs['client_flags'], + ssl_enabled=True) + # Check the first_auth packet + self.assertEqual(packets[1][4:], auth_pkt) + # Check the second_auth packet + self.assertEqual(packets[2][4:], + bytearray(kwargs["password"].encode('utf-8') + b"\x00")) + + # Test fast_auth_success + # Exchange: + # Client Server + # ------ ------ + # make_ssl_auth + # first_auth + # fast_auth + # OK + self.cnx._socket.sock.reset() + self.cnx._socket.sock.add_packets([ + bytearray(b'\x02\x00\x00\x03\x01\x03'), # fast_auth success + bytearray(b'\x07\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00') # OK + ]) + self.cnx._do_auth(**kwargs) + packets = self.cnx._socket.sock._client_sends + self.assertEqual(2, len(packets)) + ssl_pkt = self.cnx._protocol.make_auth_ssl( + charset=kwargs['charset'], client_flags=kwargs['client_flags']) + # Check the SSL request packet + self.assertEqual(packets[0][4:], ssl_pkt) + auth_pkt = self.cnx._protocol.make_auth( + self.cnx._handshake, kwargs['username'], + kwargs['password'], kwargs['database'], + charset=kwargs['charset'], + client_flags=kwargs['client_flags'], + ssl_enabled=True) + # Check the first auth packet + self.assertEqual(packets[1][4:], auth_pkt) + @unittest.skipIf(not tests.SSL_AVAILABLE, "Python has no SSL support") def test__do_auth_ssl(self): """Authenticate with the MySQL server using SSL""" @@ -812,7 +901,8 @@ def test__do_auth_ssl(self): self.cnx._handshake, kwargs['username'], kwargs['password'], kwargs['database'], charset=kwargs['charset'], - client_flags=kwargs['client_flags']), + client_flags=kwargs['client_flags'], + ssl_enabled=True), ] self.cnx._socket.switch_to_ssl = \ lambda ca, cert, key, verify_cert, cipher: None From c1473da6bb85798fe209a638f309477963dd30ce Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 12 Feb 2018 10:14:03 +0000 Subject: [PATCH 64/95] Fix invalid 'mysql-vendor' folder copy --- lib/cpy_distutils.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index a870a42e..8ef6c3f2 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -310,7 +310,7 @@ def _get_posix_openssl_libs(self): return openssl_libs def _copy_vendor_libraries(self): - if not self.with_mysql_capi: + if not self.with_mysql_capi or self.distribution.data_files: return data_files = [] @@ -342,10 +342,7 @@ def _copy_vendor_libraries(self): log.info("copying {0} -> {1}".format(src, dst)) shutil.copy(src, dst) # Add data_files to distribution - self.distribution.data_files = [( - os.path.join(get_python_lib(), vendor_folder), - data_files - )] + self.distribution.data_files = [(vendor_folder, data_files)] def _finalize_connector_c(self, connc_loc): """Finalize the --with-connector-c command line argument From 37af49fae1996e26ea46a105b1fde705e0531412 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 27 Apr 2018 15:19:18 +0100 Subject: [PATCH 65/95] Change MSI builds to support /MD compiler option --- cpyint | 2 +- lib/cpy_distutils.py | 36 ++++++++++++++++++++++++------------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/cpyint b/cpyint index 0075774d..069010a3 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 0075774d02fbfd62dbc6991681f198a28a33287b +Subproject commit 069010a344f13dcc3cccdeb6488bacae88949bf3 diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index 8ef6c3f2..22ed5b69 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -314,11 +314,12 @@ def _copy_vendor_libraries(self): return data_files = [] + vendor_libs = [] if os.name == "nt": - openssl_libs = ["ssleay32.dll", "libeay32.dll"] - vendor_folder = "" mysql_capi = os.path.join(self.with_mysql_capi, "bin") + vendor_libs.append((mysql_capi, ["ssleay32.dll", "libeay32.dll"])) + vendor_folder = "" # Bundle libmysql.dll src = os.path.join(self.with_mysql_capi, "lib", "libmysql.dll") dst = os.getcwd() @@ -326,21 +327,22 @@ def _copy_vendor_libraries(self): shutil.copy(src, dst) data_files.append("libmysql.dll") else: - openssl_libs = self._get_posix_openssl_libs() - vendor_folder = "mysql-vendor" mysql_capi = os.path.join(self.with_mysql_capi, "lib") + vendor_libs.append((mysql_capi, self._get_posix_openssl_libs())) + vendor_folder = "mysql-vendor" if vendor_folder: mkpath(os.path.join(os.getcwd(), vendor_folder)) - # Copy OpenSSL libraries to 'mysql-vendor' folder - log.info("Copying OpenSSL libraries") - for filename in openssl_libs: - data_files.append(os.path.join(vendor_folder, filename)) - src = os.path.join(mysql_capi, filename) - dst = os.path.join(os.getcwd(), vendor_folder) - log.info("copying {0} -> {1}".format(src, dst)) - shutil.copy(src, dst) + # Copy vendor libraries to 'mysql-vendor' folder + log.info("Copying vendor libraries") + for src_folder, files in vendor_libs: + for filename in files: + data_files.append(os.path.join(vendor_folder, filename)) + src = os.path.join(src_folder, filename) + dst = os.path.join(os.getcwd(), vendor_folder) + log.info("copying {0} -> {1}".format(src, dst)) + shutil.copy(src, dst) # Add data_files to distribution self.distribution.data_files = [(vendor_folder, data_files)] @@ -693,6 +695,16 @@ def run(self): self.byte_compile(outfiles) if self.byte_code_only: + if get_python_version().startswith("3"): + for base, _, files in os.walk(self.install_dir): + for filename in files: + if filename.endswith(".pyc"): + new_name = "{0}.pyc".format(filename.split(".")[0]) + os.rename(os.path.join(base, filename), + os.path.join(base, "..", new_name)) + for base, _, files in os.walk(self.install_dir): + if base.endswith("__pycache__"): + os.rmdir(base) for source_file in outfiles: log.info("Removing %s", source_file) os.remove(source_file) From 95d9a720ab300c89e885598c227d600be36d6d76 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 27 Apr 2018 15:34:40 +0100 Subject: [PATCH 66/95] Fix missing import --- lib/cpy_distutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index 22ed5b69..bc87b8f3 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -31,7 +31,7 @@ from distutils.util import get_platform from distutils.version import LooseVersion from distutils.dir_util import copy_tree, mkpath -from distutils.sysconfig import get_python_lib +from distutils.sysconfig import get_python_lib, get_python_version from distutils import log from glob import glob import os From a33dfab2b61fbc53ff9711cd90d1e95d941616e9 Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Mon, 30 Apr 2018 08:14:10 -0500 Subject: [PATCH 67/95] BUG27364914: Cursor prepared statements do not convert strings Using the cursor with prepared statements, the returned values from queries are converted from binaries values to their correspond python values, like int and datetime types, but not for strings types which bytearrays are returned. This patch changes this behavior to return text values as string types. A test was added for regression. v5 --- lib/mysql/connector/connection.py | 5 +- lib/mysql/connector/conversion.py | 2 +- lib/mysql/connector/cursor.py | 5 +- lib/mysql/connector/protocol.py | 10 ++-- tests/test_bugs.py | 88 +++++++++++++++++++++++++++++-- tests/test_cursor.py | 2 +- tests/test_protocol.py | 6 +-- 7 files changed, 103 insertions(+), 15 deletions(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 3cd4b406..b5b13e47 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -469,8 +469,11 @@ def get_rows(self, count=None, binary=False, columns=None): try: if binary: + charset = self.charset + if charset == 'utf8mb4': + charset = 'utf8' rows = self._protocol.read_binary_result( - self._socket, columns, count) + self._socket, columns, count, charset) else: rows = self._protocol.read_text_result(self._socket, self._server_version, diff --git a/lib/mysql/connector/conversion.py b/lib/mysql/connector/conversion.py index 752220cf..6fcbe144 100644 --- a/lib/mysql/connector/conversion.py +++ b/lib/mysql/connector/conversion.py @@ -561,7 +561,7 @@ def _STRING_to_python(self, value, dsc=None): # pylint: disable=C0103 if dsc[7] & FieldFlag.BINARY: try: return value.decode(self.charset) - except LookupError: + except (LookupError, UnicodeDecodeError): return value if self.charset == 'binary': diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 2b549f9f..ba98bd89 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -1169,7 +1169,10 @@ def execute(self, operation, params=(), multi=False): # multi is unused self._executed = operation try: if not isinstance(operation, bytes): - operation = operation.encode(self._connection.charset) + charset = self._connection.charset + if charset == 'utf8mb4': + charset = 'utf8' + operation = operation.encode(charset) except (UnicodeDecodeError, UnicodeEncodeError) as err: raise errors.ProgrammingError(str(err)) diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index ff7331c1..baad2a7d 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -418,7 +418,7 @@ def _parse_binary_time(self, packet, field): return (packet[length + 1:], tmp) - def _parse_binary_values(self, fields, packet): + def _parse_binary_values(self, fields, packet, charset='utf-8'): """Parse values from a binary result packet""" null_bitmap_length = (len(fields) + 7 + 2) // 8 null_bitmap = [int(i) for i in packet[0:null_bitmap_length]] @@ -446,11 +446,11 @@ def _parse_binary_values(self, fields, packet): values.append(value) else: (packet, value) = utils.read_lc_string(packet) - values.append(value) + values.append(value.decode(charset)) return tuple(values) - def read_binary_result(self, sock, columns, count=1): + def read_binary_result(self, sock, columns, count=1, charset='utf-8'): """Read MySQL binary protocol result Reads all or given number of binary resultset rows from the socket. @@ -470,7 +470,7 @@ def read_binary_result(self, sock, columns, count=1): values = None elif packet[4] == 0: eof = None - values = self._parse_binary_values(columns, packet[5:]) + values = self._parse_binary_values(columns, packet[5:], charset) if eof is None and values is not None: rows.append(values) elif eof is None and values is None: @@ -626,6 +626,8 @@ def make_stmt_execute(self, statement_id, data=(), parameters=(), values = [] types = [] packed = b'' + if charset == 'utf8mb4': + charset = 'utf8' if long_data_used is None: long_data_used = {} if parameters and data: diff --git a/tests/test_bugs.py b/tests/test_bugs.py index d2ecce9b..39b5e6f9 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -2500,8 +2500,7 @@ def test_prepared_statement(self): stmt = "INSERT INTO {0} VALUES (?,?,?)".format( self.table) data = [(1, b'bytes', '1234'), (2, u'aaaаффф', '1111')] - exp = [(1, b'bytes', b'1234'), - (2, u'aaaаффф'.encode('cp1251'), b'1111')] + exp = [(1, 'bytes', '1234'), (2, u'aaaаффф', '1111')] cur.execute(stmt, data[0]) self.cnx.commit() cur.execute("SELECT * FROM {0}".format(self.table)) @@ -3078,8 +3077,8 @@ def test_null(self): "VALUES (?, ?, ?, ?, ?, ?, ?)".format(self.tbl)) params = (100, None, 'foo', None, datetime(2014, 8, 4, 9, 11, 14), 10, 'bar') - exp = (100, None, bytearray(b'foo'), None, - datetime(2014, 8, 4, 9, 11, 14), 10, bytearray(b'bar')) + exp = (100, None, 'foo', None, + datetime(2014, 8, 4, 9, 11, 14), 10, 'bar') cur.execute(sql, params) sql = "SELECT * FROM {0}".format(self.tbl) @@ -4549,3 +4548,84 @@ def test_execute_get_json_type_as_str(self): self.assertTrue(isinstance(col, STRING_TYPES), "{} is type {} and not the expected type " "string".format(col, type(col))) + + +class BugOra27364914(tests.MySQLConnectorTests): + """BUG#27364914: CURSOR PREPARED STATEMENTS DO NOT CONVERT STRINGS + """ + charsets_list = ('gbk', 'sjis', 'big5', 'utf8', 'utf8mb4', 'latin1') + + def setUp(self): + cnx = connection.MySQLConnection(**tests.get_mysql_config()) + cur = cnx.cursor(cursor_class=cursor.MySQLCursorPrepared) + + for charset in self.charsets_list: + tablename = '{0}_ps_test'.format(charset) + cur.execute("DROP TABLE IF EXISTS {0}".format(tablename)) + table = ( + "CREATE TABLE {table} (" + " id INT AUTO_INCREMENT KEY," + " c1 VARCHAR(40)," + " val2 datetime" + ") CHARACTER SET '{charset}'" + ).format(table=tablename, charset=charset) + cur.execute(table) + cnx.commit() + cur.close() + cnx.close() + + def tearDown(self): + cnx = connection.MySQLConnection(**tests.get_mysql_config()) + for charset in self.charsets_list: + tablename = '{0}_ps_test'.format(charset) + cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(tablename)) + cnx.close() + + def _test_charset(self, charset, data): + config = tests.get_mysql_config() + config['charset'] = charset + config['use_unicode'] = True + self.cnx = connection.MySQLConnection(**tests.get_mysql_config()) + cur = self.cnx.cursor(cursor_class=cursor.MySQLCursorPrepared) + + tablename = '{0}_ps_test'.format(charset) + cur.execute("TRUNCATE {0}".format(tablename)) + self.cnx.commit() + + insert = "INSERT INTO {0} (c1) VALUES (%s)".format(tablename) + for value in data: + cur.execute(insert, (value,)) + self.cnx.commit() + + cur.execute("SELECT id, c1 FROM {0} ORDER BY id".format(tablename)) + for row in cur: + self.assertTrue(isinstance(row[1], STRING_TYPES), + "The value is expected to be a string") + self.assertEqual(data[row[0] - 1], row[1]) + + cur.close() + self.cnx.close() + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_gbk(self): + self._test_charset('gbk', [u'赵孟頫', u'赵\孟\頫\\', u'遜']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_sjis(self): + self._test_charset('sjis', ['\u005c']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_big5(self): + self._test_charset('big5', ['\u5C62']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_utf8mb4(self): + self._test_charset('utf8mb4', ['\u5C62']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_utf8(self): + self._test_charset('utf8', [u'データベース', u'데이터베이스']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_latin1(self): + self._test_charset('latin1', [u'ñ', u'Ñ']) diff --git a/tests/test_cursor.py b/tests/test_cursor.py index bc615e85..8c3e9756 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1232,7 +1232,7 @@ def test_executemany(self): self.assertEqual(3, cur.rowcount) cur.execute(stmt_select) - self.assertEqual([(1, b'100'), (2, b'200'), (3, b'300')], + self.assertEqual([(1, '100'), (2, '200'), (3, '300')], cur.fetchall(), "Multi insert test failed") data = [(2,), (3,)] diff --git a/tests/test_protocol.py b/tests/test_protocol.py index 0f4b17ac..269da05c 100644 --- a/tests/test_protocol.py +++ b/tests/test_protocol.py @@ -408,9 +408,9 @@ def test__parse_binary_values(self): b'\x00\x0a\x00\x00\x00\x10\x0f\x1e\x70\x82\x03\x00') # float/double are returned as DECIMAL by MySQL - exp = (bytearray(b'abc'), - bytearray(b'3.14'), - bytearray(b'-3.14159'), + exp = ('abc', + '3.14', + '-3.14159', datetime.date(2003, 1, 31), datetime.datetime(1977, 6, 14, 21, 33, 14), datetime.timedelta(10, 58530, 230000), From 9dacd151dc2124ff03a63e748248716d86ed3515 Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Mon, 30 Apr 2018 08:29:57 -0500 Subject: [PATCH 68/95] BUG24948186: JSON type results are bytearray instead corresponding python type The values returned from server that are JSON types are returned as text (or bytearray in python 3), for example INTEGER 1 and DOUBLE 1.5 are returned as "1" and "1.5" respectively as strings or bytearray instead of int and float, this also applies to "BOOLEAN", "DATETIME", "DATE", "TIME" which should be their corresponding types of python such as datetime, date and timedelta. This happens because on the server the JSON objects are saved in BLOB This patch fixes the conversion for MySQL JSON types to their corresponding python types. v3 --- lib/mysql/connector/constants.py | 2 + lib/mysql/connector/conversion.py | 70 +++++++++- tests/test_bugs.py | 225 +++++++++++++++++++++++++++++- tests/test_cursor.py | 4 +- 4 files changed, 292 insertions(+), 9 deletions(-) diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index fd9d1a3a..2df52535 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -159,6 +159,7 @@ class FieldType(_Constants): NEWDATE = 0x0e VARCHAR = 0x0f BIT = 0x10 + JSON = 0xf5 NEWDECIMAL = 0xf6 ENUM = 0xf7 SET = 0xf8 @@ -188,6 +189,7 @@ class FieldType(_Constants): 'NEWDATE': (0x0e, 'NEWDATE'), 'VARCHAR': (0x0f, 'VARCHAR'), 'BIT': (0x10, 'BIT'), + 'JSON': (0xf5, 'JSON'), 'NEWDECIMAL': (0xf6, 'NEWDECIMAL'), 'ENUM': (0xf7, 'ENUM'), 'SET': (0xf8, 'SET'), diff --git a/lib/mysql/connector/conversion.py b/lib/mysql/connector/conversion.py index 6fcbe144..f9533b01 100644 --- a/lib/mysql/connector/conversion.py +++ b/lib/mysql/connector/conversion.py @@ -547,6 +547,62 @@ def _SET_to_python(self, value, dsc=None): # pylint: disable=C0103 raise ValueError("Could not convert set %s to a sequence." % value) return set_type + def _JSON_to_python(self, value, dsc=None): # pylint: disable=C0103 + """Returns JSON column type as python type + + Returns JSON column type as python type. + """ + try: + num = float(value) + if num.is_integer(): + return int(value) + else: + return num + except ValueError: + pass + + if value == b'true': + return True + elif value == b'false': + return False + + # The following types are returned between double quotes or + # bytearray(b'"')[0] or int 34 for shortness. + if value[0] == 34 and value[-1] == 34: + value_nq = value[1:-1] + + value_datetime = self._DATETIME_to_python(value_nq) + if value_datetime is not None: + return value_datetime + + value_date = self._DATE_to_python(value_nq) + if value_date is not None: + return value_date + try: + value_time = self._TIME_to_python(value_nq) + if value_time is not None: + return value_time + except ValueError: + pass + + if isinstance(value, (bytes, bytearray)): + return value.decode(self.charset) + + if dsc is not None: + # Check if we deal with a SET + if dsc[7] & FieldFlag.SET: + return self._SET_to_python(value, dsc) + if dsc[7] & FieldFlag.BINARY: + if self.charset != 'binary': + try: + return value.decode(self.charset) + except (LookupError, UnicodeDecodeError): + return value + else: + return value + + return self._STRING_to_python(value, dsc) + def _STRING_to_python(self, value, dsc=None): # pylint: disable=C0103 """ Note that a SET is a string too, but using the FieldFlag we can see @@ -559,9 +615,12 @@ def _STRING_to_python(self, value, dsc=None): # pylint: disable=C0103 if dsc[7] & FieldFlag.SET: return self._SET_to_python(value, dsc) if dsc[7] & FieldFlag.BINARY: - try: - return value.decode(self.charset) - except (LookupError, UnicodeDecodeError): + if self.charset != 'binary': + try: + return value.decode(self.charset) + except (LookupError, UnicodeDecodeError): + return value + else: return value if self.charset == 'binary': @@ -579,11 +638,10 @@ def _BLOB_to_python(self, value, dsc=None): # pylint: disable=C0103 if dsc[7] & FieldFlag.BINARY: if PY2: return value - else: - return bytes(value) + return bytes(value) return self._STRING_to_python(value, dsc) - _LONG_BLOB_to_python = _BLOB_to_python + _LONG_BLOB_to_python = _JSON_to_python _MEDIUM_BLOB_to_python = _BLOB_to_python _TINY_BLOB_to_python = _BLOB_to_python diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 39b5e6f9..f5706d94 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -39,7 +39,7 @@ import os import gc import tempfile -from datetime import datetime, timedelta, time +from datetime import date, datetime, timedelta, time from threading import Thread import traceback import time @@ -4629,3 +4629,226 @@ def test_cursor_prepared_statement_with_charset_utf8(self): @foreach_cnx() def test_cursor_prepared_statement_with_charset_latin1(self): self._test_charset('latin1', [u'ñ', u'Ñ']) + + +@unittest.skipIf(tests.MYSQL_VERSION < (5, 7, 8), + "Support for native JSON data types introduced on 5.7.8 ") +class BugOra24948186(tests.MySQLConnectorTests): + """BUG#24948186: MySQL JSON TYPES RETURNED AS BYTES INSTEAD OF PYTHON TYPES + """ + def setUp(self): + pass + + def tearDown(self): + pass + + def run_test_mysql_json_type(self, stm, test_values, expected_values, + mysql_type, expected_type): + config = tests.get_mysql_config() + config['charset'] = "utf8" + config['use_unicode'] = True + cnx = connection.MySQLConnection(**config) + cur = cnx.cursor() + + for test_value, expected_value in zip(test_values, expected_values): + cur.execute(stm.format(value=test_value)) + row = cur.fetchall()[0] + self.assertEqual(row[0], expected_value) #,"value is not the expected") + self.assertTrue(isinstance(row[0], expected_type), + u"value {} is not python type {}" + u"".format(row[0], expected_type)) + self.assertEqual(row[1], mysql_type, + u"value {} is mysql type {} but expected {}" + u"".format(row[0], row[1], mysql_type)) + cur.close() + cnx.close() + + @foreach_cnx() + def test_retrieve_mysql_json_boolean(self): + stm = ("SELECT j, JSON_TYPE(j)" + "from (SELECT CAST({value} AS JSON) as J) jdata") + test_values = ["true", "false"] + expected_values = [True, False] + mysql_type = "BOOLEAN" + expected_type = bool + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + @foreach_cnx() + def test_retrieve_mysql_json_integer(self): + stm = ("SELECT j->>'$.foo', JSON_TYPE(j->>'$.foo')" + "FROM (SELECT json_object('foo', {value}) AS j) jdata") + test_values = [-2147483648, -1, 0, 1, 2147483647] + expected_values = test_values + mysql_type = "INTEGER" + expected_type = int + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + test_values = [-9223372036854775808] + expected_values = test_values + mysql_type = "INTEGER" + expected_type = int + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + test_values = [92233720368547760, + 18446744073709551615] + expected_values = test_values + mysql_type = "UNSIGNED INTEGER" + expected_type = int + self.run_test_mysql_json_type(stm, test_values[0:1], + expected_values[0:1], + mysql_type, expected_type) + if PY2: + expected_type = long + else: + expected_type = int + self.run_test_mysql_json_type(stm, test_values[1:], + expected_values[1:], + mysql_type, expected_type) + + @foreach_cnx() + def test_retrieve_mysql_json_double(self): + # Because floating-point values are approximate and not stored as exact + # values the test values are not the true maximun or minum values + stm = ("SELECT j->>'$.foo', JSON_TYPE(j->>'$.foo')" + "FROM (SELECT json_object('foo', {value}) AS j) jdata") + test_values = [-12345.555, -1.55, 1.55, 12345.555] + expected_values = test_values + mysql_type = "DOUBLE" + expected_type = float + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + @foreach_cnx() + def test_retrieve_mysql_json_string(self): + stm = (u"SELECT j->>'$.foo', JSON_TYPE(j->>'$.foo')" + u"FROM (SELECT json_object('foo', {value}) AS j) jdata") + test_values = ['\'" "\'', '\'"some text"\'', u'\'"データベース"\''] + expected_values = ['" "', '"some text"', u'"データベース"'] + mysql_type = "STRING" + expected_type = STRING_TYPES + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + @foreach_cnx() + def test_retrieve_mysql_json_datetime_types(self): + stm = ("SELECT j, JSON_TYPE(j)" + "from (SELECT CAST({value} AS JSON) as J) jdata") + test_values = ["cast('1972-01-01 00:42:49.000000' as DATETIME)", + "cast('2018-01-01 23:59:59.000000' as DATETIME)"] + expected_values = [datetime(1972, 1, 1, 0, 42, 49), + datetime(2018, 1, 1, 23, 59, 59)] + mysql_type = "DATETIME" + expected_type = datetime + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + @foreach_cnx() + def test_retrieve_mysql_json_date_types(self): + stm = ("SELECT j, JSON_TYPE(j)" + "from (SELECT CAST({value} AS JSON) as J) jdata") + test_values = ["DATE('1972-01-01')", + "DATE('2018-12-31')"] + expected_values = [date(1972, 1, 1), + date(2018, 12, 31)] + mysql_type = "DATE" + expected_type = date + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + @foreach_cnx() + def test_retrieve_mysql_json_time_types(self): + stm = ("SELECT j, JSON_TYPE(j)" + "from (SELECT CAST({value} AS JSON) as J) jdata") + test_values = ["TIME('00:42:49.000000')", + "TIME('23:59:59.000001')"] + expected_values = [timedelta(hours=0, minutes=42, seconds=49), + timedelta(hours=23, minutes=59, seconds=59, + microseconds=1)] + mysql_type = "TIME" + expected_type = timedelta + self.run_test_mysql_json_type(stm, test_values, expected_values, + mysql_type, expected_type) + + +class BugOra27364914(tests.MySQLConnectorTests): + """BUG#27364914: CURSOR PREPARED STATEMENTS DO NOT CONVERT STRINGS + """ + charsets_list = ('gbk', 'sjis', 'big5', 'utf8', 'utf8mb4', 'latin1') + + def setUp(self): + cnx = connection.MySQLConnection(**tests.get_mysql_config()) + cur = cnx.cursor(cursor_class=cursor.MySQLCursorPrepared) + + for charset in self.charsets_list: + tablename = '{0}_ps_test'.format(charset) + cur.execute("DROP TABLE IF EXISTS {0}".format(tablename)) + table = ( + "CREATE TABLE {table} (" + " id INT AUTO_INCREMENT KEY," + " c1 VARCHAR(40)," + " val2 datetime" + ") CHARACTER SET '{charset}'" + ).format(table=tablename, charset=charset) + cur.execute(table) + cnx.commit() + cur.close() + cnx.close() + + def tearDown(self): + cnx = connection.MySQLConnection(**tests.get_mysql_config()) + for charset in self.charsets_list: + tablename = '{0}_ps_test'.format(charset) + cnx.cmd_query("DROP TABLE IF EXISTS {0}".format(tablename)) + cnx.close() + + def _test_charset(self, charset, data): + config = tests.get_mysql_config() + config['charset'] = charset + config['use_unicode'] = True + self.cnx = connection.MySQLConnection(**tests.get_mysql_config()) + cur = self.cnx.cursor(cursor_class=cursor.MySQLCursorPrepared) + + tablename = '{0}_ps_test'.format(charset) + cur.execute("TRUNCATE {0}".format(tablename)) + self.cnx.commit() + + insert = "INSERT INTO {0} (c1) VALUES (%s)".format(tablename) + for value in data: + cur.execute(insert, (value,)) + self.cnx.commit() + + cur.execute("SELECT id, c1 FROM {0} ORDER BY id".format(tablename)) + for row in cur: + self.assertTrue(isinstance(row[1], STRING_TYPES), + "The value is expected to be a string") + self.assertEqual(data[row[0] - 1], row[1]) + + cur.close() + self.cnx.close() + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_gbk(self): + self._test_charset('gbk', [u'赵孟頫', u'赵\孟\頫\\', u'遜']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_sjis(self): + self._test_charset('sjis', ['\u005c']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_big5(self): + self._test_charset('big5', ['\u5C62']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_utf8mb4(self): + self._test_charset('utf8mb4', ['\u5C62']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_utf8(self): + self._test_charset('utf8', [u'データベース', u'데이터베이스']) + + @foreach_cnx() + def test_cursor_prepared_statement_with_charset_latin1(self): + self._test_charset('latin1', [u'ñ', u'Ñ']) diff --git a/tests/test_cursor.py b/tests/test_cursor.py index 8c3e9756..f2e28a25 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1255,8 +1255,8 @@ def _fetch_row(): return row cur._fetch_row = _fetch_row - cur._test_fetch_row = [(b'ham',)] - self.assertEqual((b'ham',), cur.fetchone()) + cur._test_fetch_row = [('ham',)] + self.assertEqual(('ham',), cur.fetchone()) self.assertEqual(None, cur.fetchone()) def test_fetchmany(self): From 532d7a568b02f71b5b1227dfb9bb5fcc1068f34a Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Mon, 30 Apr 2018 11:46:01 -0500 Subject: [PATCH 69/95] BUG27945883: Fixes for failing unittest with MySQL latest versions Fixes to failing unittest with with MySQL version 5.6.39, 5.7.21 and 8.0.11 v2 --- lib/mysql/connector/__init__.py | 5 +- lib/mysql/connector/abstracts.py | 15 +-- lib/mysql/connector/authentication.py | 3 +- lib/mysql/connector/catch23.py | 9 +- lib/mysql/connector/connection.py | 38 ++++--- lib/mysql/connector/connection_cext.py | 9 +- lib/mysql/connector/constants.py | 12 +-- lib/mysql/connector/conversion.py | 22 ++-- lib/mysql/connector/cursor.py | 65 ++++++----- lib/mysql/connector/cursor_cext.py | 35 +++--- lib/mysql/connector/errors.py | 10 +- lib/mysql/connector/fabric/caching.py | 3 +- lib/mysql/connector/fabric/connection.py | 6 +- lib/mysql/connector/network.py | 11 +- lib/mysql/connector/optionfiles.py | 10 +- lib/mysql/connector/protocol.py | 8 +- lib/mysql/connector/utils.py | 11 +- tests/cext/test_cext_api.py | 13 ++- tests/issues/test_bug21449996.py | 18 ++-- tests/mysqld.py | 31 ++++-- tests/test_abstracts.py | 13 ++- tests/test_bugs.py | 132 ++++++++++++++++++----- tests/test_connection.py | 48 ++++++--- tests/test_cursor.py | 4 +- 24 files changed, 319 insertions(+), 212 deletions(-) diff --git a/lib/mysql/connector/__init__.py b/lib/mysql/connector/__init__.py index 8a2428ed..f7e2c8ba 100644 --- a/lib/mysql/connector/__init__.py +++ b/lib/mysql/connector/__init__.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -175,8 +175,7 @@ def connect(*args, **kwargs): if HAVE_CEXT and not use_pure: return CMySQLConnection(*args, **kwargs) - else: - return MySQLConnection(*args, **kwargs) + return MySQLConnection(*args, **kwargs) Connect = connect # pylint: disable=C0103 __version_info__ = version.VERSION diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index 1a4e3c8a..ad7b6fbe 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -131,7 +131,7 @@ def _read_option_files(self, config): config_options[option][1] <= value[1]): config_options[option] = value except KeyError: - if group is 'connector_python': + if group == 'connector_python': raise AttributeError("Unsupported argument " "'{0}'".format(option)) except KeyError: @@ -295,6 +295,10 @@ def config(self, **kwargs): password = self._password self.set_login(user, password) + # Configure host information + if 'host' in config and config['host']: + self._host = config['host'] + # Check network locations try: self._port = int(config['port']) @@ -625,8 +629,7 @@ def python_charset(self): encoding = CharacterSet.get_info(self._charset_id)[0] if encoding in ('utf8mb4', 'binary'): return 'utf8' - else: - return encoding + return encoding def set_charset_collation(self, charset=None, collation=None): """Sets the character set and collation for the current connection @@ -721,7 +724,7 @@ def connect(self, **kwargs): arguments are given, it will use the already configured or default values. """ - if len(kwargs) > 0: + if kwargs: self.config(**kwargs) self.disconnect() @@ -1049,7 +1052,7 @@ def execute(self, operation, params=(), multi=False): pass @abstractmethod - def executemany(self, operation, seqparams): + def executemany(self, operation, seq_params): """Execute the given operation multiple times The executemany() method will execute the operation iterating diff --git a/lib/mysql/connector/authentication.py b/lib/mysql/connector/authentication.py index dfd31d79..acf6970b 100644 --- a/lib/mysql/connector/authentication.py +++ b/lib/mysql/connector/authentication.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -228,6 +228,7 @@ def prepare_password(self): return self._scramble() elif self._auth_data[0] == self.perform_full_authentication: return self._full_authentication() + return None def _full_authentication(self): """Returns password as as clear text""" diff --git a/lib/mysql/connector/catch23.py b/lib/mysql/connector/catch23.py index 3efd41cc..2ed5d47c 100644 --- a/lib/mysql/connector/catch23.py +++ b/lib/mysql/connector/catch23.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -63,7 +63,6 @@ def init_bytearray(payload=b'', encoding='utf-8'): except AttributeError: raise ValueError("payload must be a str or bytes") - return bytearray(payload) @@ -71,15 +70,13 @@ def isstr(obj): """Returns whether a variable is a string""" if PY2: return isinstance(obj, basestring) - else: - return isinstance(obj, str) + return isinstance(obj, str) def isunicode(obj): """Returns whether a variable is a of unicode type""" if PY2: return isinstance(obj, unicode) - else: - return isinstance(obj, str) + return isinstance(obj, str) if PY2: diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index b5b13e47..97291733 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -90,12 +90,13 @@ def __init__(self, *args, **kwargs): self._auth_plugin = None self._pool_config_version = None - if len(kwargs) > 0: + if kwargs: try: self.connect(**kwargs) except: # Tidy-up underlying socket on failure self.close() + self._socket = None raise def _do_handshake(self): @@ -202,6 +203,7 @@ def _auth_switch_request(self, username=None, password=None): return self._handle_ok(packet) elif packet[4] == 255: raise errors.get_exception(packet) + return None def _get_connection(self, prtcls=None): """Get connection based on configuration @@ -211,7 +213,6 @@ def _get_connection(self, prtcls=None): Returns subclass of MySQLBaseSocket. """ - # pylint: disable=R0204 conn = None if self.unix_socket and os.name != 'nt': conn = MySQLUnixSocket(unix_socket=self.unix_socket) @@ -219,7 +220,7 @@ def _get_connection(self, prtcls=None): conn = MySQLTCPSocket(host=self.server_host, port=self.server_port, force_ipv6=self._force_ipv6) - # pylint: enable=R0204 + conn.set_connection_timeout(self._connection_timeout) return conn @@ -232,15 +233,20 @@ def _open_connection(self): """ self._protocol = MySQLProtocol() self._socket = self._get_connection() - self._socket.open_connection() - self._do_handshake() - self._do_auth(self._user, self._password, - self._database, self._client_flags, self._charset_id, - self._ssl) - self.set_converter_class(self._converter_class) - if self._client_flags & ClientFlag.COMPRESS: - self._socket.recv = self._socket.recv_compressed - self._socket.send = self._socket.send_compressed + try: + self._socket.open_connection() + self._do_handshake() + self._do_auth(self._user, self._password, + self._database, self._client_flags, self._charset_id, + self._ssl) + self.set_converter_class(self._converter_class) + if self._client_flags & ClientFlag.COMPRESS: + self._socket.recv = self._socket.recv_compressed + self._socket.send = self._socket.send_compressed + except: + # close socket + self.close() + raise def shutdown(self): """Shut down connection to MySQL Server. @@ -252,7 +258,6 @@ def shutdown(self): self._socket.shutdown() except (AttributeError, errors.Error): pass # Getting an exception would mean we are disconnected. - self._socket = None def close(self): """Disconnect from the MySQL server""" @@ -261,10 +266,9 @@ def close(self): try: self.cmd_quit() - self._socket.close_connection() except (AttributeError, errors.Error): pass # Getting an exception would mean we are disconnected. - self._socket = None + self._socket.close_connection() disconnect = close @@ -451,7 +455,7 @@ def get_row(self, binary=False, columns=None): Returns a tuple. """ (rows, eof) = self.get_rows(count=1, binary=binary, columns=columns) - if len(rows): + if rows: return (rows[0], eof) return (None, eof) diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index dc639f1c..04ff7fdf 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -69,7 +69,7 @@ def __init__(self, **kwargs): self.converter = None super(CMySQLConnection, self).__init__(**kwargs) - if len(kwargs) > 0: + if kwargs: self.connect(**kwargs) def _do_handshake(self): @@ -139,7 +139,7 @@ def in_transaction(self): def _open_connection(self): charset_name = CharacterSet.get_info(self._charset_id)[0] - self._cmysql = _mysql_connector.MySQL( # pylint: disable=E1101 + self._cmysql = _mysql_connector.MySQL( # pylint: disable=E1101,I1101 buffered=self._buffered, raw=self._raw, charset_name=charset_name, @@ -260,7 +260,6 @@ def get_rows(self, count=None, binary=False, columns=None): raise AttributeError("count should be 1 or higher, or None") counter = 0 - # pylint: disable=R0204 try: row = self._cmysql.fetch_row() while row: @@ -279,7 +278,7 @@ def get_rows(self, count=None, binary=False, columns=None): self.free_result() raise errors.get_mysql_exception(msg=exc.msg, errno=exc.errno, sqlstate=exc.sqlstate) - # pylint: enable=R0204 + return rows def get_row(self, binary=False, columns=None): diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index 2df52535..06acae7e 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -103,10 +103,10 @@ def get_desc(cls, name): return None @classmethod - def get_info(cls, num): + def get_info(cls, setid): """Get information about given constant""" for name, info in cls.desc.items(): - if info[0] == num: + if info[0] == setid: return name return None @@ -621,7 +621,7 @@ def get_info(cls, setid): "Character set '{0}' unsupported".format(setid)) @classmethod - def get_desc(cls, setid): + def get_desc(cls, name): """Retrieves character set information as string using an ID Retrieves character set and collation information based on the @@ -630,7 +630,7 @@ def get_desc(cls, setid): Returns a tuple. """ try: - return "%s/%s" % cls.get_info(setid) + return "%s/%s" % cls.get_info(name) except: raise @@ -763,7 +763,7 @@ def get_desc(cls, name): raise NotImplementedError @classmethod - def get_info(cls, number): + def get_info(cls, setid): raise NotImplementedError @classmethod diff --git a/lib/mysql/connector/conversion.py b/lib/mysql/connector/conversion.py index f9533b01..706c6b3d 100644 --- a/lib/mysql/connector/conversion.py +++ b/lib/mysql/connector/conversion.py @@ -95,9 +95,9 @@ def to_python(self, vtype, value): except KeyError: return value - def escape(self, buf): + def escape(self, value): """Escape buffer for sending to MySQL""" - return buf + return value def quote(self, buf): """Quote buffer for sending to MySQL""" @@ -163,14 +163,11 @@ def quote(self, buf): if PY2: if isinstance(buf, float): return repr(buf) - else: - return str(buf) - else: - return str(buf).encode('ascii') + return str(buf) + return str(buf).encode('ascii') elif isinstance(buf, type(None)): return bytearray(b"NULL") - else: - return bytearray(b"'" + buf + b"'") + return bytearray(b"'" + buf + b"'") def to_mysql(self, value): """Convert Python data type to MySQL""" @@ -257,8 +254,7 @@ def _bool_to_mysql(self, value): """Convert value to boolean""" if value: return 1 - else: - return 0 + return 0 def _nonetype_to_mysql(self, value): """ @@ -358,8 +354,7 @@ def _timedelta_to_mysql(self, value): if PY2: return result - else: - return result.encode('ascii') + return result.encode('ascii') def _decimal_to_mysql(self, value): """ @@ -556,8 +551,7 @@ def _JSON_to_python(self, value, dsc=None): # pylint: disable=C0103 num = float(value) if num.is_integer(): return int(value) - else: - return num + return num except ValueError: pass diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index ba98bd89..4b4d3bca 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -188,7 +188,7 @@ def execute(self, operation, params=(), multi=False): """ pass - def executemany(self, operation, seqparams): + def executemany(self, operation, seq_params): """Execute the given operation multiple times The executemany() method will execute the operation iterating @@ -493,7 +493,7 @@ def _execute_iter(self, query_iter): i = 0 while True: - result = next(query_iter) + result = next(query_iter) # pylint: disable=R1708 self._reset_result() self._handle_result(result) try: @@ -556,15 +556,15 @@ def execute(self, operation, params=None, multi=False): if multi: self._executed_list = [] return self._execute_iter(self._connection.cmd_query_iter(stmt)) - else: - try: - self._handle_result(self._connection.cmd_query(stmt)) - except errors.InterfaceError: - if self._connection._have_next_result: # pylint: disable=W0212 - raise errors.InterfaceError( - "Use multi=True when executing multiple statements") - raise - return None + + try: + self._handle_result(self._connection.cmd_query(stmt)) + except errors.InterfaceError: + if self._connection._have_next_result: # pylint: disable=W0212 + raise errors.InterfaceError( + "Use multi=True when executing multiple statements") + raise + return None def _batch_insert(self, operation, seq_params): """Implements multi row insert""" @@ -577,8 +577,7 @@ def remove_comments(match): """ if match.group(1): return "" - else: - return match.group(2) + return match.group(2) tmp = re.sub(RE_SQL_ON_DUPLICATE, '', re.sub(RE_SQL_COMMENT, remove_comments, operation)) @@ -612,8 +611,7 @@ def remove_comments(match): stmt = stmt.replace(fmt, b','.join(values), 1) self._executed = stmt return stmt - else: - return None + return None except (UnicodeDecodeError, UnicodeEncodeError) as err: raise errors.ProgrammingError(str(err)) except errors.Error: @@ -658,7 +656,7 @@ def executemany(self, operation, seq_params): if re.match(RE_SQL_INSERT_STMT, operation): if not seq_params: self._rowcount = 0 - return + return None stmt = self._batch_insert(operation, seq_params) if stmt is not None: return self.execute(stmt) @@ -677,6 +675,7 @@ def executemany(self, operation, seq_params): # Raise whatever execute() raises raise self._rowcount = rowcnt + return None def stored_results(self): """Returns an iterator for stored results @@ -758,12 +757,10 @@ def callproc(self, procname, args=()): can_consume_results = self._connection._consume_results for result in self._connection.cmd_query_iter(call): self._connection._consume_results = False - # pylint: disable=R0204 if self._raw: tmp = MySQLCursorBufferedRaw(self._connection._get_self()) else: tmp = MySQLCursorBuffered(self._connection._get_self()) - # pylint: enable=R0204 tmp._executed = "(a result of {0})".format(call) tmp._handle_result(result) if tmp._warnings is not None: @@ -778,9 +775,9 @@ def callproc(self, procname, args=()): self.execute(select) self._stored_results = results return self.fetchone() - else: - self._stored_results = results - return () + + self._stored_results = results + return () except errors.Error: raise @@ -815,7 +812,7 @@ def _fetch_warnings(self): raise errors.InterfaceError( "Failed getting warnings; %s" % err) - if len(res): + if res: return res return None @@ -1113,7 +1110,7 @@ def _handle_eof(self, eof): eof.get('server_status', 0))) super(MySQLCursorPrepared, self)._handle_eof(eof) - def callproc(self, *args, **kwargs): + def callproc(self, procname, args=()): """Calls a stored procedue Not supported with MySQLCursorPrepared. @@ -1137,21 +1134,21 @@ def _row_to_python(self, rowdata, desc=None): """ pass - def _handle_result(self, res): + def _handle_result(self, result): """Handle result after execution""" - if isinstance(res, dict): + if isinstance(result, dict): self._connection.unread_result = False self._have_result = False - self._handle_noresultset(res) + self._handle_noresultset(result) else: - self._description = res[1] + self._description = result[1] self._connection.unread_result = True self._have_result = True - if 'status_flag' in res[2]: - self._handle_server_status(res[2]['status_flag']) - elif 'server_status' in res[2]: - self._handle_server_status(res[2]['server_status']) + if 'status_flag' in result[2]: + self._handle_server_status(result[2]['status_flag']) + elif 'server_status' in result[2]: + self._handle_server_status(result[2]['server_status']) def execute(self, operation, params=(), multi=False): # multi is unused """Prepare and execute a MySQL Prepared Statement @@ -1345,6 +1342,7 @@ def _row_to_python(self, rowdata, desc=None): NAMED_TUPLE_CACHE[columns] = named_tuple # pylint: enable=W0201 return named_tuple(*row) + return None def fetchone(self): """Returns next row of a query result set @@ -1353,8 +1351,7 @@ def fetchone(self): if row: if hasattr(self._connection, 'converter'): return self._row_to_python(row, self.description) - else: - return row + return row return None def fetchall(self): diff --git a/lib/mysql/connector/cursor_cext.py b/lib/mysql/connector/cursor_cext.py index 41f120ff..74415527 100644 --- a/lib/mysql/connector/cursor_cext.py +++ b/lib/mysql/connector/cursor_cext.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -200,7 +200,7 @@ def _execute_iter(self): while True: try: if not self.nextset(): - raise StopIteration + raise StopIteration # pylint: disable=R1708 except errors.InterfaceError as exc: # Result without result set if exc.errno != CR_NO_RESULT_SET: @@ -280,8 +280,7 @@ def remove_comments(match): """ if match.group(1): return "" - else: - return match.group(2) + return match.group(2) tmp = re.sub(RE_SQL_ON_DUPLICATE, '', re.sub(RE_SQL_COMMENT, remove_comments, operation)) @@ -315,8 +314,7 @@ def remove_comments(match): stmt = stmt.replace(fmt, b','.join(values), 1) self._executed = stmt return stmt - else: - return None + return None except (UnicodeDecodeError, UnicodeEncodeError) as err: raise errors.ProgrammingError(str(err)) except Exception as err: @@ -341,7 +339,7 @@ def executemany(self, operation, seq_params): if re.match(RE_SQL_INSERT_STMT, operation): if not seq_params: self._rowcount = 0 - return + return None stmt = self._batch_insert(operation, seq_params) if stmt is not None: return self.execute(stmt) @@ -367,6 +365,7 @@ def executemany(self, operation, seq_params): "Failed executing the operation; {0}".format(err)) self._rowcount = rowcnt + return None @property def description(self): @@ -378,8 +377,7 @@ def rowcount(self): """Returns the number of rows produced or affected""" if self._rowcount == -1: return self._affected_rows - else: - return self._rowcount + return self._rowcount @property def lastrowid(self): @@ -434,14 +432,14 @@ def callproc(self, procname, args=()): results = [] while self._cnx.result_set_available: result = self._cnx.fetch_eof_columns() - # pylint: disable=W0212,R0204 + # pylint: disable=W0212 if self._raw: cur = CMySQLCursorBufferedRaw(self._cnx._get_self()) else: cur = CMySQLCursorBuffered(self._cnx._get_self()) cur._executed = "(a result of {0})".format(call) cur._handle_result(result) - # pylint: enable=W0212,R0204 + # pylint: enable=W0212 results.append(cur) self._cnx.next_result() self._stored_results = results @@ -453,8 +451,7 @@ def callproc(self, procname, args=()): self.execute(select) return self.fetchone() - else: - return tuple() + return tuple() except errors.Error: raise @@ -718,8 +715,7 @@ def fetchone(self): row = super(CMySQLCursorDict, self).fetchone() if row: return dict(zip(self.column_names, row)) - else: - return None + return None def fetchmany(self, size=1): """Returns next set of rows as list of dictionaries""" @@ -742,8 +738,7 @@ def _fetch_row(self): row = super(CMySQLCursorBufferedDict, self)._fetch_row() if row: return dict(zip(self.column_names, row)) - else: - return None + return None def fetchall(self): res = super(CMySQLCursorBufferedDict, self).fetchall() @@ -772,8 +767,7 @@ def fetchone(self): row = super(CMySQLCursorNamedTuple, self).fetchone() if row: return self.named_tuple(*row) - else: - return None + return None def fetchmany(self, size=1): """Returns next set of rows as list of named tuples""" @@ -800,8 +794,7 @@ def _fetch_row(self): row = super(CMySQLCursorBufferedNamedTuple, self)._fetch_row() if row: return self.named_tuple(*row) - else: - return None + return None def fetchall(self): res = super(CMySQLCursorBufferedNamedTuple, self).fetchall() diff --git a/lib/mysql/connector/errors.py b/lib/mysql/connector/errors.py index d2eedfb0..c0225a77 100644 --- a/lib/mysql/connector/errors.py +++ b/lib/mysql/connector/errors.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -72,7 +72,7 @@ def custom_error_exception(error=None, exception=None): """ global _CUSTOM_ERROR_EXCEPTIONS # pylint: disable=W0603 - if isinstance(error, dict) and not len(error): + if isinstance(error, dict) and not error: _CUSTOM_ERROR_EXCEPTIONS = {} return _CUSTOM_ERROR_EXCEPTIONS @@ -86,15 +86,15 @@ def custom_error_exception(error=None, exception=None): if isinstance(error, int): error = {error: exception} - for errno, exception in error.items(): + for errno, _exception in error.items(): if not isinstance(errno, int): raise ValueError("error number should be an integer") try: - if not issubclass(exception, Exception): + if not issubclass(_exception, Exception): raise TypeError except TypeError: raise ValueError("exception should be subclass of Exception") - _CUSTOM_ERROR_EXCEPTIONS[errno] = exception + _CUSTOM_ERROR_EXCEPTIONS[errno] = _exception return _CUSTOM_ERROR_EXCEPTIONS diff --git a/lib/mysql/connector/fabric/caching.py b/lib/mysql/connector/fabric/caching.py index 9073498b..b508fa4f 100644 --- a/lib/mysql/connector/fabric/caching.py +++ b/lib/mysql/connector/fabric/caching.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -120,7 +120,6 @@ def add_partition(self, key, group): elif self.shard_type == 'RANGE_DATETIME': try: if ':' in key: - # pylint: disable=R0204 _key = datetime.strptime(key, "%Y-%m-%d %H:%M:%S") else: _key = datetime.strptime(key, "%Y-%m-%d").date() diff --git a/lib/mysql/connector/fabric/connection.py b/lib/mysql/connector/fabric/connection.py index 7e2f6577..2c9a1337 100644 --- a/lib/mysql/connector/fabric/connection.py +++ b/lib/mysql/connector/fabric/connection.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -359,7 +359,7 @@ def __init__(self, data): self.__names = self.coded_rows[0]['info']['names'] self.__rows = self.coded_rows[0]['rows'] assert all(len(self.__names) == len(row) for row in self.__rows) or \ - len(self.__rows) == 0 + not self.__rows self.__result = collections.namedtuple('ResultSet', self.__names) def rowcount(self): @@ -1140,6 +1140,8 @@ def _xmlrpc_get_proxy(self): if delay > 0: time.sleep(delay) + return None + def connect(self): """Connect with MySQL Fabric""" self._proxy = self._xmlrpc_get_proxy() diff --git a/lib/mysql/connector/network.py b/lib/mysql/connector/network.py index 7c097b79..88522d0e 100644 --- a/lib/mysql/connector/network.py +++ b/lib/mysql/connector/network.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -168,9 +168,9 @@ def send_compressed(self, buf, packet_number=None, tmpbuf = bytearray() for pkt in pkts: tmpbuf += pkt - tmpbuf = buffer(tmpbuf) # pylint: disable=E0602,R0204 + tmpbuf = buffer(tmpbuf) # pylint: disable=E0602 else: - tmpbuf = b''.join(pkts) # pylint: disable=R0204 + tmpbuf = b''.join(pkts) del pkts zbuf = zlib.compress(tmpbuf[:16384]) header = (struct.pack(', like most @@ -95,7 +95,7 @@ def read_option_files(**config): config_options[option][1] <= value[1]): config_options[option] = value except KeyError: - if group is 'connector_python': + if group == 'connector_python': raise AttributeError("Unsupported argument " "'{0}'".format(option)) except KeyError: @@ -282,7 +282,7 @@ def get_groups(self, *args): Returns a dictionary """ - if len(args) == 0: + if not args: args = self._options_dict.keys() options = {} @@ -315,7 +315,7 @@ def get_groups_as_dict_with_priority(self, *args): # pylint: disable=C0103 Returns an dictionary of dictionaries """ - if len(args) == 0: + if not args: args = self._options_dict.keys() options = dict() @@ -340,7 +340,7 @@ def get_groups_as_dict(self, *args): Returns an dictionary of dictionaries """ - if len(args) == 0: + if not args: args = self._options_dict.keys() options = dict() diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index baad2a7d..8a97481d 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -90,7 +90,7 @@ def make_auth(self, handshake, username=None, password=None, database=None, username_bytes = username.encode('utf8') # pylint: disable=E1103 except AttributeError: # Username is already bytes - username_bytes = username # pylint: disable=R0204 + username_bytes = username packet = struct.pack(', like most @@ -43,9 +43,8 @@ def intread(buf): elif length <= 4: tmp = buf + b'\x00'*(4-length) return struct_unpack(', like most @@ -455,6 +455,7 @@ def test_commit(self): cmy1.query("DROP TABLE IF EXISTS {0}".format(table)) + @unittest.skipIf(tests.MYSQL_VERSION < (8, 0, 0), "Plugin unavailable.") def test_change_user(self): connect_kwargs = self.connect_kwargs.copy() connect_kwargs['unix_socket'] = None @@ -480,9 +481,13 @@ def test_change_user(self): stmt = ("CREATE USER '{user}'@'{host}' IDENTIFIED WITH " "caching_sha2_password").format(**new_user) cmy1.query(stmt) - cmy1.query("SET old_passwords = 0") - res = cmy1.query("SET PASSWORD FOR '{user}'@'{host}' = " - "PASSWORD('{password}')".format(**new_user)) + if tests.MYSQL_VERSION < (8, 0, 5): + cmy1.query("SET old_passwords = 0") + res = cmy1.query("SET PASSWORD FOR '{user}'@'{host}' = " + "PASSWORD('{password}')".format(**new_user)) + else: + res = cmy1.query("ALTER USER '{user}'@'{host}' IDENTIFIED BY " + "'{password}'".format(**new_user)) cmy1.query("GRANT ALL ON {database}.* " "TO '{user}'@'{host}'".format(**new_user)) diff --git a/tests/issues/test_bug21449996.py b/tests/issues/test_bug21449996.py index 7cf3d282..b4e428f6 100644 --- a/tests/issues/test_bug21449996.py +++ b/tests/issues/test_bug21449996.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -22,14 +22,12 @@ # along with this program; if not, write to the Free Software # Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import os.path -import unittest - import mysql.connector -from tests import foreach_cnx, cnx_config +from tests import foreach_cnx import tests -DATA_FILE = os.path.join('tests', 'data', 'random_big_bin.csv') +# using "/" (slash) to avoid windows scape characters +DATA_FILE = "/".join(['tests', 'data', 'random_big_bin.csv']) class Bug21449996(tests.MySQLConnectorTests): @@ -37,7 +35,8 @@ def setUp(self): self.table_name = 'Bug21449996' cnx = mysql.connector.connect(**tests.get_mysql_config()) cnx.cmd_query("DROP TABLE IF EXISTS %s" % self.table_name) - cnx.cmd_query("CREATE TABLE %s (c1 BLOB)" % self.table_name) + cnx.cmd_query("CREATE TABLE {0} (c1 BLOB) DEFAULT CHARSET=latin1" + "".format(self.table_name)) cnx.close() def tearDown(self): @@ -49,10 +48,11 @@ def tearDown(self): def test_load_data_compressed(self): try: cur = self.cnx.cursor() - sql = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s" % ( - DATA_FILE, self.table_name) + sql = ("LOAD DATA LOCAL INFILE '{0}' INTO TABLE {1} CHARACTER " + "SET latin1".format(DATA_FILE, self.table_name)) cur.execute(sql) except mysql.connector.errors.InterfaceError as exc: + raise self.fail(exc) cur.execute("SELECT COUNT(*) FROM %s" % self.table_name) diff --git a/tests/mysqld.py b/tests/mysqld.py index a01cd2ba..1495f034 100644 --- a/tests/mysqld.py +++ b/tests/mysqld.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -394,7 +394,8 @@ def _create_directories(self): if self._version[0:3] < (8, 0, 1): dirs.append(self._datadir) - dirs.append(os.path.join(self._datadir, 'mysql')) + if self._version[0:3] < (5, 7, 21): + dirs.append(os.path.join(self._datadir, 'mysql')) for adir in dirs: LOGGER.debug("Creating directory %s", adir) @@ -420,7 +421,7 @@ def _get_bootstrap_cmd(self): '--innodb_log_file_size=1Gb', ] - if self._version[0:2] >= (8, 0): + if self._version[0:2] >= (8, 0) or self._version >= (5, 7, 21): cmd.append("--initialize-insecure") cmd.append("--init-file={0}".format(self._init_sql)) else: @@ -436,7 +437,7 @@ def _get_bootstrap_cmd(self): '--lc-messages-dir={0}'.format(self._lc_messages_dir), '--lc-messages=en_US' ]) - if self._version[0:2] >= (5, 1): + if self._version[0:2] >= (5, 1) and self._version < (8, 0, 11): cmd.append('--loose-skip-ndbcluster') return cmd @@ -466,7 +467,9 @@ def bootstrap(self): "CREATE DATABASE myconnpy;" ] - if self._version < (8, 0, 1): + if self._version > (5, 7, 5) and self._version < (5, 7, 21): + # Note: server is running with --skip-grant-tables + # (can not user 'CREATE USER' statements). defaults = ("'root'{0}, " "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'," @@ -487,12 +490,18 @@ def bootstrap(self): defaults = defaults.format(", ''", "") extra_sql.append(insert.format(defaults)) + elif self._version[0:3] >= (5, 6, 39) and \ + self._version[0:3] < (5, 7, 5): + # Following required user accounts are created by the server itself: + # 'root'@'127.0.0.1', 'root'@'localhost' and 'root'@'::1' + # Note: server is running with --skip-grant-tables. + pass else: extra_sql.extend([ - "CREATE USER 'root'@'127.0.01';", - "GRANT ALL ON *.* TO 'root'@'127.0.0.1';", - "CREATE USER 'root'@'::1';", - "GRANT ALL ON *.* TO 'root'@'::1';" + "CREATE USER IF NOT EXISTS 'root'@'127.0.0.1';", + "GRANT ALL ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;", + "CREATE USER IF NOT EXISTS 'root'@'::1';", + "GRANT ALL ON *.* TO 'root'@'::1' WITH GRANT OPTION;" ]) bootstrap_log = os.path.join(self._topdir, 'bootstrap.log') @@ -501,7 +510,7 @@ def bootstrap(self): cmd = self._get_bootstrap_cmd() sql = ["USE mysql;"] - if self._version[0:2] >= (8, 0): + if self._version[0:2] >= (8, 0) or self._version >= (5, 7, 21): test_sql = open(self._init_sql, "w") test_sql.write("\n".join(extra_sql)) test_sql.close() @@ -513,7 +522,7 @@ def bootstrap(self): sql.extend([line.strip() for line in fp.readlines()]) fp_log = open(bootstrap_log, 'w') - if self._version[0:2] < (8, 0): + if self._version[0:2] < (8, 0) or self._version < (5, 7, 21): sql.extend(extra_sql) prc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, diff --git a/tests/test_abstracts.py b/tests/test_abstracts.py index 872db62d..7e4f0d28 100644 --- a/tests/test_abstracts.py +++ b/tests/test_abstracts.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -89,9 +89,12 @@ def test_sql_mode(self): exp = ('STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,' 'NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,' 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION') - else: + elif tests.MYSQL_VERSION[0:3] < (8, 0, 5): exp = ('STRICT_TRANS_TABLES,STRICT_ALL_TABLES,TRADITIONAL,' 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION') + else: + exp = ('STRICT_TRANS_TABLES,STRICT_ALL_TABLES,TRADITIONAL,' + 'NO_ENGINE_SUBSTITUTION') try: self.cnx.sql_mode = exp @@ -176,12 +179,12 @@ def test_reset_session(self): self.assertEqual(exp, [self.cnx.autocommit, self.cnx.sql_mode, self.cnx.time_zone, self.cnx._charset_id]) - exp_user_variables = {'ham': '1', 'spam': '2'} + exp_user_variables = {'ham': 1, 'spam': 2} exp_session_variables = {'wait_timeout': 100000} for key, value in exp_user_variables.items(): row = self.cnx.info_query("SELECT @{0}".format(key)) - self.assertEqual(value, row[0]) + self.assertEqual(value, int(row[0])) for key, value in exp_session_variables.items(): row = self.cnx.info_query("SELECT @@session.{0}".format(key)) self.assertEqual(value, row[0]) @@ -215,6 +218,8 @@ def test_cmd_quit(self): @unittest.skipIf(tests.MYSQL_VERSION >= (8, 0, 1), "As of MySQL 8.0.1, CMD_SHUTDOWN is not recognized.") + @unittest.skipIf(tests.MYSQL_VERSION <= (5, 7, 1), + "BugOra17422299 not tested with MySQL version 5.6") @foreach_cnx() def test_cmd_shutdown(self): server = tests.MYSQL_SERVERS[0] diff --git a/tests/test_bugs.py b/tests/test_bugs.py index f5706d94..7e9b7245 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -45,6 +45,7 @@ import time import unittest import pickle +import sys import tests from tests import foreach_cnx, cnx_config @@ -774,7 +775,8 @@ def _assert_flat_line(self, samples): counters[value] = 1 if len(counters) > self.tolerate: - self.fail("Counters of collected object higher than tolerated.") + self.fail("Counters {} of collected object higher than tolerated." + "".format(len(counters))) def test_converter(self): for i in range(0, self.sample_size): @@ -1131,6 +1133,8 @@ def test_callproc_without_args(self): @unittest.skipIf(os.name == 'nt', "Cannot test error handling when doing handshake on Windows") +@unittest.skipIf(tests.MYSQL_VERSION > (8, 0, 4), + "Revoked users can no more grant") class BugOra15836979(tests.MySQLConnectorTests): """BUG#15836979: UNCLEAR ERROR MESSAGE CONNECTING USING UNALLOWED IP ADDRESS @@ -1215,9 +1219,25 @@ def setUp(self): self.admin_cnx = connection.MySQLConnection(**config) self.admin_cnx.cmd_query( - "GRANT ALL ON {db}.* TO 'ssluser'@'{host}' REQUIRE X509".format( + "CREATE USER 'ssluser'@'{host}'".format( db=config['database'], host=tests.get_mysql_config()['host'])) + if tests.MYSQL_VERSION < (5, 7, 21): + self.admin_cnx.cmd_query( + "GRANT ALL ON {db}.* TO 'ssluser'@'{host}' REQUIRE X509" + "".format(db=config['database'], + host=tests.get_mysql_config()['host'])) + else: + self.admin_cnx.cmd_query( + "GRANT ALL ON {db}.* TO 'ssluser'@'{host}'" + "".format(db=config['database'], + host=tests.get_mysql_config()['host'])) + + self.admin_cnx.cmd_query( + "ALTER USER 'ssluser'@'{host}' REQUIRE X509" + "".format(db=config['database'], + host=tests.get_mysql_config()['host'])) + def tearDown(self): self.admin_cnx.cmd_query("DROP USER 'ssluser'@'{0}'".format( tests.get_mysql_config()['host'])) @@ -1257,9 +1277,27 @@ def setUp(self): config = tests.get_mysql_config() self.host = config['host'] cnx = connection.MySQLConnection(**config) - cnx.cmd_query( + + if tests.MYSQL_VERSION < (5, 7, 21): + cnx.cmd_query( "GRANT ALL ON {db}.* TO 'ssluser'@'{host}' REQUIRE SSL".format( - db=config['database'], host=self.host)) + db=config['database'], host=tests.get_mysql_config()['host'])) + else: + cnx.cmd_query( + "CREATE USER 'ssluser'@'{host}'".format( + db=config['database'], + host=tests.get_mysql_config()['host'])) + + cnx.cmd_query( + "GRANT ALL ON {db}.* TO 'ssluser'@'{host}'".format( + db=config['database'], + host=tests.get_mysql_config()['host'])) + + cnx.cmd_query( + "ALTER USER 'ssluser'@'{host}' REQUIRE SSL".format( + db=config['database'], + host=tests.get_mysql_config()['host'])) + cnx.close() def tearDown(self): @@ -1751,10 +1789,16 @@ def test_load_csv(self): cur.execute(sql, (self.data_file,)) cur.execute("SELECT * FROM local_data") - exp = [ - (1, 'c1_1', 'c2_1'), (2, 'c1_2', 'c2_2'), - (3, 'c1_3', 'c2_3'), (4, 'c1_4', 'c2_4'), - (5, 'c1_5', 'c2_5'), (6, 'c1_6', 'c2_6')] + if os.name != 'nt': + exp = [ + (1, 'c1_1', 'c2_1'), (2, 'c1_2', 'c2_2'), + (3, 'c1_3', 'c2_3'), (4, 'c1_4', 'c2_4'), + (5, 'c1_5', 'c2_5'), (6, 'c1_6', 'c2_6')] + else: + exp = [ + (1, 'c1_1', 'c2_1\r'), (2, 'c1_2', 'c2_2\r'), + (3, 'c1_3', 'c2_3\r'), (4, 'c1_4', 'c2_4\r'), + (5, 'c1_5', 'c2_5\r'), (6, 'c1_6', 'c2_6')] self.assertEqual(exp, cur.fetchall()) @cnx_config(compress=True) @@ -1766,10 +1810,16 @@ def test_load_csv_with_compress(self): cur.execute(sql, (self.data_file,)) cur.execute("SELECT * FROM local_data") - exp = [ - (1, 'c1_1', 'c2_1'), (2, 'c1_2', 'c2_2'), - (3, 'c1_3', 'c2_3'), (4, 'c1_4', 'c2_4'), - (5, 'c1_5', 'c2_5'), (6, 'c1_6', 'c2_6')] + if os.name != 'nt': + exp = [ + (1, 'c1_1', 'c2_1'), (2, 'c1_2', 'c2_2'), + (3, 'c1_3', 'c2_3'), (4, 'c1_4', 'c2_4'), + (5, 'c1_5', 'c2_5'), (6, 'c1_6', 'c2_6')] + else: + exp = [ + (1, 'c1_1', 'c2_1\r'), (2, 'c1_2', 'c2_2\r'), + (3, 'c1_3', 'c2_3\r'), (4, 'c1_4', 'c2_4\r'), + (5, 'c1_5', 'c2_5\r'), (6, 'c1_6', 'c2_6')] self.assertEqual(exp, cur.fetchall()) @foreach_cnx() @@ -1829,6 +1879,8 @@ def test_load_csv(self): @unittest.skipIf(tests.MYSQL_VERSION >= (8, 0, 1), "BugOra17422299 not tested with MySQL version >= 8.0.1") +@unittest.skipIf(tests.MYSQL_VERSION <= (5, 7, 1), + "BugOra17422299 not tested with MySQL version 5.6") class BugOra17422299(tests.MySQLConnectorTests): """BUG#17422299: cmd_shutdown fails with malformed connection packet """ @@ -2234,9 +2286,25 @@ def setUp(self): config = tests.get_mysql_config() self.admin_cnx = connection.MySQLConnection(**config) - self.admin_cnx.cmd_query( - "GRANT ALL ON %s.* TO 'ssluser'@'%s' REQUIRE SSL" % ( - config['database'], config['host'])) + if tests.MYSQL_VERSION < (5, 7, 21): + self.admin_cnx.cmd_query( + "GRANT ALL ON %s.* TO 'ssluser'@'%s' REQUIRE SSL" % ( + config['database'], config['host'])) + else: + self.admin_cnx.cmd_query( + "CREATE USER 'ssluser'@'{host}'".format( + db=config['database'], + host=tests.get_mysql_config()['host'])) + + self.admin_cnx.cmd_query( + "GRANT ALL ON {db}.* TO 'ssluser'@'{host}'".format( + db=config['database'], + host=tests.get_mysql_config()['host'])) + + self.admin_cnx.cmd_query( + "ALTER USER 'ssluser'@'{host}' REQUIRE SSL".format( + db=config['database'], + host=tests.get_mysql_config()['host'])) def tearDown(self): config = tests.get_mysql_config() @@ -2311,10 +2379,11 @@ def _create_user(self, cnx, user, password, host, database, "IDENTIFIED WITH {plugin}") cnx.cmd_query(create_user.format(user=user, host=host, plugin=plugin)) - if plugin == 'sha256_password': - cnx.cmd_query("SET old_passwords = 2") - else: - cnx.cmd_query("SET old_passwords = 0") + if tests.MYSQL_VERSION[0:3] < (8, 0, 5): + if plugin == 'sha256_password': + cnx.cmd_query("SET old_passwords = 2") + else: + cnx.cmd_query("SET old_passwords = 0") if tests.MYSQL_VERSION < (5, 7, 5): passwd = ("SET PASSWORD FOR '{user}'@'{host}' = " @@ -3903,10 +3972,16 @@ def test_with_raw(self): select_stmt = "SELECT 'a'+'b'" cur.execute(select_stmt) self.assertRaises(errors.DatabaseError, cur.fetchall) - exp = [ - ('Warning', 1292, "Truncated incorrect DOUBLE value: 'a'"), - ('Warning', 1292, "Truncated incorrect DOUBLE value: 'b'"), - ] + if os.name != 'nt': + exp = [ + ('Warning', 1292, "Truncated incorrect DOUBLE value: 'a'"), + ('Warning', 1292, "Truncated incorrect DOUBLE value: 'b'"), + ] + else: + exp = [ + ('Warning', 1292, "Truncated incorrect DOUBLE value: 'b'"), + ('Warning', 1292, "Truncated incorrect DOUBLE value: 'a'"), + ] self.assertEqual(exp, cur.fetchwarnings()) try: cur.close() @@ -4162,7 +4237,7 @@ class BugOra21656282(tests.MySQLConnectorTests): def setUp(self): config = tests.get_mysql_config() self.cnx = connection.MySQLConnection(**config) - self.host = 'localhost' if config['unix_socket'] and os.name != 'nt' \ + self.host = '127.0.0.1' if config['unix_socket'] and os.name != 'nt' \ else config['host'] self.user = 'unicode_user' self.password = u'步' @@ -4202,8 +4277,9 @@ def test_unicode_password(self): config['password'] = self.password try: cnx = CMySQLConnection(**config) - except: - self.fail('Failed using password with unicode characters') + except Exception as err: + self.fail('Failed using password with unicode characters: ' + 'e->{} t->{}'.format(err, type(err))) else: cnx.close() @@ -4241,6 +4317,8 @@ def test_big_column_count(self): cur.close() +@unittest.skipIf(sys.version_info < (2, 7, 9), + "Python 2.7.9+ is required for SSL") class BugOra25397650(tests.MySQLConnectorTests): """BUG#25397650: CERTIFICATE VALIDITY NOT VERIFIED """ @@ -4529,6 +4607,8 @@ def test_executemany_utf8mb4(self): ) +@unittest.skipIf(tests.MYSQL_VERSION < (5, 7, 8), + "Support for native JSON data types introduced on 5.7.8 ") class BugOra24948205(tests.MySQLConnectorTests): """BUG#24948205: RESULT OF JSON_TYPE IS BYTEARRAY INSTEAD OF STR """ diff --git a/tests/test_connection.py b/tests/test_connection.py index 0714f2b7..45bdceb2 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -285,15 +285,27 @@ def test__handle_result(self): 'status_flag': 1, 'affected_rows': 6} self.assertEqual(exp, self.cnx._handle_result(packet)) - exp = [ - bytearray(b'\x47\x00\x00\x04\x31\x09\x63\x31\x5f\x31\x09\x63\x32' - b'\x5f\x31\x0a\x32\x09\x63\x31\x5f\x32\x09\x63\x32\x5f' - b'\x32\x0a\x33\x09\x63\x31\x5f\x33\x09\x63\x32\x5f\x33' - b'\x0a\x34\x09\x63\x31\x5f\x34\x09\x63\x32\x5f\x34\x0a' - b'\x35\x09\x63\x31\x5f\x35\x09\x63\x32\x5f\x35\x0a\x36' - b'\x09\x63\x31\x5f\x36\x09\x63\x32\x5f\x36'), - bytearray(b'\x00\x00\x00\x05') - ] + if os.name != 'nt': + exp = [ + bytearray(b'\x47\x00\x00\x04\x31\x09\x63\x31\x5f\x31\x09\x63\x32' + b'\x5f\x31\x0a\x32\x09\x63\x31\x5f\x32\x09\x63\x32\x5f' + b'\x32\x0a\x33\x09\x63\x31\x5f\x33\x09\x63\x32\x5f\x33' + b'\x0a\x34\x09\x63\x31\x5f\x34\x09\x63\x32\x5f\x34\x0a' + b'\x35\x09\x63\x31\x5f\x35\x09\x63\x32\x5f\x35\x0a\x36' + b'\x09\x63\x31\x5f\x36\x09\x63\x32\x5f\x36'), + bytearray(b'\x00\x00\x00\x05') + ] + else: + exp = [ + bytearray(b'\x4c\x00\x00\x04\x31\x09\x63\x31\x5f\x31\x09\x63' + b'\x32\x5f\x31\x0d\x0a\x32\x09\x63\x31\x5f\x32\x09' + b'\x63\x32\x5f\x32\x0d\x0a\x33\x09\x63\x31\x5f\x33' + b'\x09\x63\x32\x5f\x33\x0d\x0a\x34\x09\x63\x31\x5f' + b'\x34\x09\x63\x32\x5f\x34\x0d\x0a\x35\x09\x63\x31' + b'\x5f\x35\x09\x63\x32\x5f\x35\x0d\x0a\x36\x09\x63' + b'\x31\x5f\x36\x09\x63\x32\x5f\x36'), + bytearray(b'\x00\x00\x00\x05') + ] self.assertEqual(exp, self.cnx._socket.sock._client_sends) # Column count is invalid ( more than 4096) @@ -1689,6 +1701,8 @@ def test_cmd_reset_connection(self): else: self.assertNotEqual((b'2',), self.cnx.get_rows()[0][0]) + @unittest.skipIf(tests.MYSQL_VERSION <= (5, 7, 1), "Shutdown CMD " + "not tested with MySQL version 5.6 (BugOra17422299)") def test_shutdown(self): """Shutting down a connection""" config = tests.get_mysql_config() @@ -1762,10 +1776,16 @@ def test_load_local_infile(self): self.cur.execute(sql, (self.data_file, )) self.cur.execute("SELECT * FROM local_data") - exp = [ - (1, 'c1_1', 'c2_1'), (2, 'c1_2', 'c2_2'), - (3, 'c1_3', 'c2_3'), (4, 'c1_4', 'c2_4'), - (5, 'c1_5', 'c2_5'), (6, 'c1_6', 'c2_6')] + if os.name != 'nt': + exp = [ + (1, 'c1_1', 'c2_1'), (2, 'c1_2', 'c2_2'), + (3, 'c1_3', 'c2_3'), (4, 'c1_4', 'c2_4'), + (5, 'c1_5', 'c2_5'), (6, 'c1_6', 'c2_6')] + else: + exp = [ + (1, 'c1_1', 'c2_1\r'), (2, 'c1_2', 'c2_2\r'), + (3, 'c1_3', 'c2_3\r'), (4, 'c1_4', 'c2_4\r'), + (5, 'c1_5', 'c2_5\r'), (6, 'c1_6', 'c2_6')] self.assertEqual(exp, self.cur.fetchall()) def test_without_load_local_infile(self): diff --git a/tests/test_cursor.py b/tests/test_cursor.py index f2e28a25..a161fd6a 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -1113,7 +1113,7 @@ def setUp(self): def test_callproc(self): cur = self.cnx.cursor(cursor_class=cursor.MySQLCursorPrepared) - self.assertRaises(errors.NotSupportedError, cur.callproc) + self.assertRaises(errors.NotSupportedError, cur.callproc, None) def test_close(self): cur = self.cnx.cursor(cursor_class=cursor.MySQLCursorPrepared) From 70a8da73b75ef7ec1b4ac25c4e085cb79dbb9e0a Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Wed, 2 May 2018 13:21:37 -0500 Subject: [PATCH 70/95] BUG27371245: Connection fails on unsupported default's auth_plugin The connection to a server configured with an unsupported authorization plugin fails in all cases, even if the user does not require such plugin to authenticate himself. This is because the connector raises an error if the server's default auth_plugin is not recognized or unsupported. This patch changes this behavior to fall back to a default auth_plugin supported by the connector in the case the server's default auth_plugin is not recognized by the connector. Note: the "mysql_native_password" has been set the default auth_plugin for the connector. But in case the user requires a different one, the server will send an AuthSwitchRequest to use a different plugin. --- lib/mysql/connector/connection.py | 25 ++++---- lib/mysql/connector/protocol.py | 21 ++++-- tests/test_connection.py | 102 ++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 18 deletions(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 97291733..6bf6b8f1 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -233,20 +233,17 @@ def _open_connection(self): """ self._protocol = MySQLProtocol() self._socket = self._get_connection() - try: - self._socket.open_connection() - self._do_handshake() - self._do_auth(self._user, self._password, - self._database, self._client_flags, self._charset_id, - self._ssl) - self.set_converter_class(self._converter_class) - if self._client_flags & ClientFlag.COMPRESS: - self._socket.recv = self._socket.recv_compressed - self._socket.send = self._socket.send_compressed - except: - # close socket - self.close() - raise + self._socket.open_connection() + self._do_handshake() + + self._do_auth(self._user, self._password, + self._database, self._client_flags, self._charset_id, + self._ssl) + + self.set_converter_class(self._converter_class) + if self._client_flags & ClientFlag.COMPRESS: + self._socket.recv = self._socket.recv_compressed + self._socket.send = self._socket.send_compressed def shutdown(self): """Shut down connection to MySQL Server. diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index 8a97481d..7daf93bd 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -96,10 +96,23 @@ def make_auth(self, handshake, username=None, password=None, database=None, client_flags, max_allowed_packet, charset, username_bytes) - packet += self._auth_response(client_flags, username, password, - database, - auth_plugin, - auth_data, ssl_enabled) + try: + packet += self._auth_response(client_flags, username, password, + database, + auth_plugin, + auth_data, ssl_enabled) + except errors.NotSupportedError: + # IF the default server authentication plugin is unsupported, + # fall back to default auth_plugin if default server auth plugin. + # In case our default auth_plugin is the one required to identify + # the user, the server will ask for the authentification data using + # this plugin, otherwise server will request the plugin used by the + # user and a AuthSwitchRequest will occur. + auth_plugin = "mysql_native_password" + packet += self._auth_response(client_flags, username, password, + database, + auth_plugin, + auth_data, ssl_enabled) packet += self._connect_with_db(client_flags, database) diff --git a/tests/test_connection.py b/tests/test_connection.py index 45bdceb2..9cf8d3c6 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -882,6 +882,108 @@ def test_caching_sha2_password(self): # Check the first auth packet self.assertEqual(packets[1][4:], auth_pkt) + @unittest.skipIf(not tests.SSL_AVAILABLE, "Python has no SSL support") + def test_auth_plugin_is_not_supported_but_required(self): + """Test behavior when server's default auth_plugin is required""" + self.cnx._socket.sock = tests.DummySocket() + flags = constants.ClientFlag.get_default() + flags |= constants.ClientFlag.SSL + kwargs = { + 'username': 'ham', + 'password': 'spam', + 'database': 'test', + 'charset': 33, + 'client_flags': flags, + 'ssl_options': { + 'ca': os.path.join(tests.SSL_DIR, 'tests_CA_cert.pem'), + 'cert': os.path.join(tests.SSL_DIR, 'tests_client_cert.pem'), + 'key': os.path.join(tests.SSL_DIR, 'tests_client_key.pem'), + }, + } + + self.cnx._handshake['auth_plugin'] = 'unsupported_auth_plugin' + self.cnx._handshake['auth_data'] = b'abcdef!012345' + self.cnx._socket.switch_to_ssl = \ + lambda ca, cert, key, verify_cert, cipher: None + + # Test perform_full_authentication + # Exchange: + # Client Server + # ------ ------ + # make_ssl_auth + # first_auth + # Sorry user requires the unsupported_auth_plugin + # second_auth + # OK + self.cnx._socket.sock.reset() + self.cnx._socket.sock.add_packets([ + bytearray(b'\x2c\x00\x00\x03\xfe\x75\x6e\x73\x75\x70\x70\x6f\x72' + b'\x74\x65\x64\x5f\x61\x75\x74\x68\x5f\x70\x6c\x75\x67' + b'\x69\x6e\x00\x60\x1e\x10\x78\x01\x3c\x1e\x33\x38\x6f' + b'\x08\x5f\x0d\x7a\x6f\x01\x7b\x7a\x4a\x0d\x00') + ]) + # Since the fictional authoritation plugin 'unsupported_auth_plugin' is + # not supported a NotSupportedError is raised + self.assertRaises(errors.NotSupportedError, self.cnx._do_auth, **kwargs) + + @unittest.skipIf(not tests.SSL_AVAILABLE, "Python has no SSL support") + @unittest.skipIf(tests.MYSQL_VERSION < (8, 0, 3), + "caching_sha2_password plugin not supported by server.") + def test_auth_plugin_fall_back_if_not_supported(self): + """Test Fall back to dflt auth_plugin if server's plugin is unknown""" + self.cnx._socket.sock = tests.DummySocket() + flags = constants.ClientFlag.get_default() + flags |= constants.ClientFlag.SSL + kwargs = { + 'username': 'ham', + 'password': 'spam', + 'database': 'test', + 'charset': 33, + 'client_flags': flags, + 'ssl_options': { + 'ca': os.path.join(tests.SSL_DIR, 'tests_CA_cert.pem'), + 'cert': os.path.join(tests.SSL_DIR, 'tests_client_cert.pem'), + 'key': os.path.join(tests.SSL_DIR, 'tests_client_key.pem'), + }, + } + + self.cnx._handshake['auth_plugin'] = 'unsupported_auth_plugin' + self.cnx._handshake['auth_data'] = b'abcdef!012345' + self.cnx._socket.switch_to_ssl = \ + lambda ca, cert, key, verify_cert, cipher: None + + # Test perform_full_authentication + # Exchange: + # Client Server + # ------ ------ + # make_ssl_auth + # first_auth + # auth_switch to mysql_native_password + # second_auth + # OK + self.cnx._socket.sock.reset() + self.cnx._socket.sock.add_packets([ + bytearray(b'\x8d\xaa\x0b\x00\x00\x00'), # full_auth request + bytearray(b'\x00@!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), + bytearray(b'\x07\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00') # OK + ]) + + # No exception should be raided + self.cnx._do_auth(**kwargs) + + packets = self.cnx._socket.sock._client_sends + + self.cnx._handshake['auth_plugin'] = 'mysql_native_password' + auth_pkt = self.cnx._protocol.make_auth( + self.cnx._handshake, kwargs['username'], + kwargs['password'], kwargs['database'], + charset=kwargs['charset'], + client_flags=kwargs['client_flags'], + ssl_enabled=True) + # Check the first_auth packet + self.assertEqual(packets[1][4:], auth_pkt) + @unittest.skipIf(not tests.SSL_AVAILABLE, "Python has no SSL support") def test__do_auth_ssl(self): """Authenticate with the MySQL server using SSL""" From 30cd233442f19dabf9d32c21552833b1e4bdae15 Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Wed, 2 May 2018 16:28:32 -0500 Subject: [PATCH 71/95] BUG26484601: unable to connect to a server using other than TLSv1 The connection to a server that is configured to use a different version of TLSv1 (as TLSv1.1 and TLSv1.2) is not possible, and ends with "system error: 1 [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:590)". This happens because the connector is wrongly restricting the connection to use only TLSv1. This patch changes the behavior to allow the server to specify which version should be used in the secured connection. However the the connector can still restrict which version it wants to use but this should be used for testing purposes since is more secure to leave the server to choose the version, who naturally chooses the latest available between the versions allowed in tsl_version configuration option. v2 --- lib/mysql/connector/connection.py | 3 +- lib/mysql/connector/constants.py | 1 + lib/mysql/connector/network.py | 17 ++++-- tests/test_bugs.py | 90 ++++++++++++++++++++++++++++++- tests/test_connection.py | 8 +-- 5 files changed, 108 insertions(+), 11 deletions(-) diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 6bf6b8f1..87637613 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -148,7 +148,8 @@ def _do_auth(self, username=None, password=None, database=None, ssl_options.get('cert'), ssl_options.get('key'), ssl_options.get('verify_cert') or False, - ssl_options.get('cipher')) + ssl_options.get('cipher'), + ssl_options.get('version', None)) self._ssl_active = True packet = self._protocol.make_auth( diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index 06acae7e..85e3f3a3 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -58,6 +58,7 @@ 'ssl_verify_cert': False, 'ssl_cipher': None, 'ssl_disabled': False, + 'ssl_version': None, 'passwd': None, 'db': None, 'connect_timeout': None, diff --git a/lib/mysql/connector/network.py b/lib/mysql/connector/network.py index 88522d0e..ad853ba5 100644 --- a/lib/mysql/connector/network.py +++ b/lib/mysql/connector/network.py @@ -403,7 +403,8 @@ def set_connection_timeout(self, timeout): self._connection_timeout = timeout # pylint: disable=C0103 - def switch_to_ssl(self, ca, cert, key, verify_cert=False, cipher=None): + def switch_to_ssl(self, ca, cert, key, verify_cert=False, cipher=None, + ssl_version=None): """Switch the socket to use SSL""" if not self.sock: raise errors.InterfaceError(errno=2048) @@ -414,10 +415,16 @@ def switch_to_ssl(self, ca, cert, key, verify_cert=False, cipher=None): else: cert_reqs = ssl.CERT_NONE - self.sock = ssl.wrap_socket( - self.sock, keyfile=key, certfile=cert, ca_certs=ca, - cert_reqs=cert_reqs, do_handshake_on_connect=False, - ssl_version=ssl.PROTOCOL_TLSv1, ciphers=cipher) + if ssl_version is None: + self.sock = ssl.wrap_socket( + self.sock, keyfile=key, certfile=cert, ca_certs=ca, + cert_reqs=cert_reqs, do_handshake_on_connect=False, + ciphers=cipher) + else: + self.sock = ssl.wrap_socket( + self.sock, keyfile=key, certfile=cert, ca_certs=ca, + cert_reqs=cert_reqs, do_handshake_on_connect=False, + ssl_version=ssl_version, ciphers=cipher) self.sock.do_handshake() except NameError: raise errors.NotSupportedError( diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 7e9b7245..89ae3b5a 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -48,6 +48,9 @@ import sys import tests +if tests.SSL_AVAILABLE: + import ssl + from tests import foreach_cnx, cnx_config from . import PY2 from mysql.connector import (connection, cursor, conversion, protocol, @@ -64,6 +67,10 @@ CMySQLConnection = None ERR_NO_CEXT = "C Extension not available" +if tests.SSL_AVAILABLE: + TLS_VERSIONS = {"TLSv1": ssl.PROTOCOL_TLSv1, + "TLSv1.1": ssl.PROTOCOL_TLSv1_1, + "TLSv1.2": ssl.PROTOCOL_TLSv1_2} @unittest.skipIf(tests.MYSQL_VERSION == (5, 7, 4), @@ -4486,7 +4493,8 @@ def test_pool_exhaustion(self): self.mysql_server.stop() self.mysql_server.wait_down() cur.execute(sql) - except mysql.connector.errors.OperationalError: + except (mysql.connector.errors.OperationalError, + mysql.connector.errors.ProgrammingError): try: cur.close() cnx.close() @@ -4932,3 +4940,83 @@ def test_cursor_prepared_statement_with_charset_utf8(self): @foreach_cnx() def test_cursor_prepared_statement_with_charset_latin1(self): self._test_charset('latin1', [u'ñ', u'Ñ']) + + +@unittest.skipIf(tests.MYSQL_VERSION < (5, 7, 21), + "Not support for TLSv1.2 or not available by default") +class Bug26484601(tests.MySQLConnectorTests): + """UNABLE TO CONNECT TO A MYSQL SERVER USING TLSV1.2""" + + def try_connect(self, tls_version, expected_ssl_version): + config = tests.get_mysql_config().copy() + config['ssl_version'] = tls_version + config['ssl_ca'] = '' + cnx = connection.MySQLConnection(**config) + query = "SHOW STATUS LIKE 'ssl_version%'" + cur = cnx.cursor() + cur.execute(query) + res = cur.fetchall() + msg = ("Not using the expected TLS version: {}, instead the " + "connection used: {}.") + self.assertEqual(res[0][1], expected_ssl_version, + msg.format(expected_ssl_version, res)) + + def test_get_connection_using_given_TLS_version(self): + """Test connect using the given TLS version + + The system variable tls_version determines which protocols the + server is permitted to use from those that are available (note#3). + +---------------+-----------------------+ + | Variable_name | Value | + +---------------+-----------------------+ + | tls_version | TLSv1,TLSv1.1,TLSv1.2 | + +---------------+-----------------------+ + + To restrict and permit only connections with a specific version, the + variable can be set with those specific versions that will be allowed, + changing the configuration file. + + [mysqld] + tls_version=TLSv1.1,TLSv1.2 + + This test will take adventage of the fact that the connector can + request to use a defined version of TLS to test that the connector can + connect to the server using such version instead of changing the + configuration of the server that will imply the stoping and restarting + of the server incrementing the time to run the test. In addition the + test relay in the default value of the 'tls_version' variable is set to + 'TLSv1,TLSv1.1,TLSv1.2' (note#2). + + On this test a connection will be + attempted forcing to use a determined version of TLS, (all of them + must be successfully) finally making sure that the connection was done + using the given TLS_version using the ssl.version() method (note#3). + + Notes: + 1.- tls_version is only available on MySQL 5.7 + 2.- 5.6.39 does not support TLSv1.2 so for test will be skip. Currently + in 5.7.21 is set to default values TLSv1,TLSv1.1,TLSv1.2 same as in + 8.0.11+. This test will be only run in such versions and above. + 3.- The ssl.version() method returns the version of tls used in during + the connection, however the version returned using ssl.cipher() is + not correct on windows, only indicates the newer version supported. + + """ + for tls_v_name, tls_version in TLS_VERSIONS.items(): + self.try_connect(tls_version, tls_v_name) + + def test_get_connection_using_servers_TLS_version(self): + """Test connect using the servers default TLS version + + The TLS version used during the secured connection is chosen by the + server at the time the ssl handshake is made if the connector does not + specifies any specific version to use. The default value of the + ssl_version is None, however this only mean to the connector that none + specific version will be chosen by the server when the ssl handshake + occurs. + """ + # The default value for the connector 'ssl_version' is None + # For the expected version, the server will use the latest version of + # TLS available "TLSv1.2". + tls_version = None + self.try_connect(tls_version, "TLSv1.2") diff --git a/tests/test_connection.py b/tests/test_connection.py index 9cf8d3c6..7ee0db4d 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -818,7 +818,7 @@ def test_caching_sha2_password(self): self.cnx._handshake['auth_plugin'] = 'caching_sha2_password' self.cnx._handshake['auth_data'] = b'h4i6oP!OLng9&PD@WrYH' self.cnx._socket.switch_to_ssl = \ - lambda ca, cert, key, verify_cert, cipher: None + lambda ca, cert, key, verify_cert, cipher, ssl_version: None # Test perform_full_authentication # Exchange: @@ -904,7 +904,7 @@ def test_auth_plugin_is_not_supported_but_required(self): self.cnx._handshake['auth_plugin'] = 'unsupported_auth_plugin' self.cnx._handshake['auth_data'] = b'abcdef!012345' self.cnx._socket.switch_to_ssl = \ - lambda ca, cert, key, verify_cert, cipher: None + lambda ca, cert, key, verify_cert, cipher, ssl_version: None # Test perform_full_authentication # Exchange: @@ -950,7 +950,7 @@ def test_auth_plugin_fall_back_if_not_supported(self): self.cnx._handshake['auth_plugin'] = 'unsupported_auth_plugin' self.cnx._handshake['auth_data'] = b'abcdef!012345' self.cnx._socket.switch_to_ssl = \ - lambda ca, cert, key, verify_cert, cipher: None + lambda ca, cert, key, verify_cert, cipher, ssl_version: None # Test perform_full_authentication # Exchange: @@ -1019,7 +1019,7 @@ def test__do_auth_ssl(self): ssl_enabled=True), ] self.cnx._socket.switch_to_ssl = \ - lambda ca, cert, key, verify_cert, cipher: None + lambda ca, cert, key, verify_cert, cipher, ssl_version: None self.cnx._socket.sock.reset() self.cnx._socket.sock.add_packets([ bytearray(b'\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00'), From a22be480d541691e29c1b1912946f4c7a1be1c7b Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 4 May 2018 21:31:35 +0100 Subject: [PATCH 72/95] WL11643: Update copyright source headers and license text --- cpyint | 2 +- examples/dates.py | 39 +++++++++------- examples/engines.py | 39 +++++++++------- examples/inserts.py | 39 +++++++++------- examples/microseconds.py | 39 +++++++++------- examples/multi_resultsets.py | 39 +++++++++------- examples/mysql_warnings.py | 39 +++++++++------- examples/prepared_statements.py | 40 ++++++++++------- examples/transaction.py | 39 +++++++++------- examples/unicode.py | 39 +++++++++------- examples/warnings.py | 39 +++++++++------- lib/cpy_distutils.py | 39 +++++++++------- lib/mysql/connector/__init__.py | 37 ++++++++------- lib/mysql/connector/abstracts.py | 37 ++++++++------- lib/mysql/connector/authentication.py | 37 ++++++++------- lib/mysql/connector/catch23.py | 37 ++++++++------- lib/mysql/connector/charsets.py | 45 ++++++++++--------- lib/mysql/connector/connection.py | 37 ++++++++------- lib/mysql/connector/connection_cext.py | 37 ++++++++------- lib/mysql/connector/constants.py | 37 ++++++++------- lib/mysql/connector/conversion.py | 37 ++++++++------- lib/mysql/connector/cursor.py | 37 ++++++++------- lib/mysql/connector/cursor_cext.py | 37 ++++++++------- lib/mysql/connector/custom_types.py | 39 +++++++++------- lib/mysql/connector/dbapi.py | 39 +++++++++------- lib/mysql/connector/errorcode.py | 45 ++++++++++--------- lib/mysql/connector/errors.py | 37 ++++++++------- lib/mysql/connector/fabric/__init__.py | 39 +++++++++------- lib/mysql/connector/fabric/balancing.py | 39 +++++++++------- lib/mysql/connector/fabric/caching.py | 37 ++++++++------- lib/mysql/connector/fabric/connection.py | 37 ++++++++------- lib/mysql/connector/locales/__init__.py | 39 +++++++++------- lib/mysql/connector/locales/eng/__init__.py | 39 +++++++++------- .../connector/locales/eng/client_error.py | 45 ++++++++++--------- lib/mysql/connector/network.py | 37 ++++++++------- lib/mysql/connector/optionfiles.py | 37 ++++++++------- lib/mysql/connector/pooling.py | 39 +++++++++------- lib/mysql/connector/protocol.py | 37 ++++++++------- lib/mysql/connector/utils.py | 37 ++++++++------- lib/mysql/connector/version.py | 40 ++++++++++------- setup.py | 39 +++++++++------- setupinfo.py | 39 +++++++++------- src/exceptions.c | 39 +++++++++------- src/force_cpp_linkage.cc | 39 +++++++++------- src/include/catch23.h | 41 +++++++++-------- src/include/exceptions.h | 39 +++++++++------- src/include/mysql_capi.h | 39 +++++++++------- src/include/mysql_capi_conversion.h | 41 +++++++++-------- src/include/mysql_connector.h | 39 +++++++++------- src/mysql_capi.c | 39 +++++++++------- src/mysql_capi_conversion.c | 39 +++++++++------- src/mysql_connector.c | 39 +++++++++------- support/django/run_django_tests.py | 39 +++++++++------- .../django/test_mysqlconnector_settings.py | 40 +++++++++-------- tests/__init__.py | 39 +++++++++------- tests/mysqld.py | 37 ++++++++------- tests/py26.py | 40 +++++++++-------- tests/test_abstracts.py | 37 ++++++++------- tests/test_authentication.py | 39 +++++++++------- tests/test_bugs.py | 37 ++++++++------- tests/test_connection.py | 37 ++++++++------- tests/test_constants.py | 39 +++++++++------- tests/test_conversion.py | 39 +++++++++------- tests/test_cursor.py | 36 ++++++++------- tests/test_django.py | 39 +++++++++------- tests/test_errorcode.py | 39 +++++++++------- tests/test_errors.py | 39 +++++++++------- tests/test_examples.py | 41 +++++++++-------- tests/test_fabric.py | 39 +++++++++------- tests/test_locales.py | 39 +++++++++------- tests/test_mysql_datatypes.py | 39 +++++++++------- tests/test_network.py | 39 +++++++++------- tests/test_optionfiles.py | 39 +++++++++------- tests/test_pep249.py | 39 +++++++++------- tests/test_pooling.py | 38 +++++++++------- tests/test_protocol.py | 39 +++++++++------- tests/test_setup.py | 39 +++++++++------- tests/test_style.py | 39 +++++++++------- tests/test_utils.py | 39 +++++++++------- unittests.py | 39 +++++++++------- 80 files changed, 1731 insertions(+), 1334 deletions(-) diff --git a/cpyint b/cpyint index 069010a3..83d14a44 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 069010a344f13dcc3cccdeb6488bacae88949bf3 +Subproject commit 83d14a44861c288ec772c9d0f3bc1e37e57dae9f diff --git a/examples/dates.py b/examples/dates.py index af599050..44a4e430 100644 --- a/examples/dates.py +++ b/examples/dates.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/engines.py b/examples/engines.py index 244bcc64..d1718e3b 100755 --- a/examples/engines.py +++ b/examples/engines.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/inserts.py b/examples/inserts.py index 6e3a2bcc..6a808c30 100755 --- a/examples/inserts.py +++ b/examples/inserts.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ Example using MySQL Connector/Python showing: diff --git a/examples/microseconds.py b/examples/microseconds.py index 9c30a343..3e9c17d8 100644 --- a/examples/microseconds.py +++ b/examples/microseconds.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ Example using MySQL Connector/Python showing: diff --git a/examples/multi_resultsets.py b/examples/multi_resultsets.py index ae9afee3..858c0bf2 100644 --- a/examples/multi_resultsets.py +++ b/examples/multi_resultsets.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/mysql_warnings.py b/examples/mysql_warnings.py index b0c651aa..3ca3f1ba 100755 --- a/examples/mysql_warnings.py +++ b/examples/mysql_warnings.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/prepared_statements.py b/examples/prepared_statements.py index 5522884a..b3fc6f6e 100644 --- a/examples/prepared_statements.py +++ b/examples/prepared_statements.py @@ -1,28 +1,34 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + """Example using MySQL Prepared Statements Example using MySQL Connector/Python showing: diff --git a/examples/transaction.py b/examples/transaction.py index 53e79eaa..2fd64552 100755 --- a/examples/transaction.py +++ b/examples/transaction.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/unicode.py b/examples/unicode.py index e32a7fa0..a519aa7b 100755 --- a/examples/unicode.py +++ b/examples/unicode.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/warnings.py b/examples/warnings.py index bd87c835..a8b2f9fb 100755 --- a/examples/warnings.py +++ b/examples/warnings.py @@ -1,28 +1,33 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import sys, os diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index bc87b8f3..a8b11fa9 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implements the DistUtils command 'build_ext' """ diff --git a/lib/mysql/connector/__init__.py b/lib/mysql/connector/__init__.py index f7e2c8ba..41d6b8ac 100644 --- a/lib/mysql/connector/__init__.py +++ b/lib/mysql/connector/__init__.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ MySQL Connector/Python - MySQL driver written in Python diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index ad7b6fbe..87d88cc1 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Module gathering all abstract base classes""" diff --git a/lib/mysql/connector/authentication.py b/lib/mysql/connector/authentication.py index acf6970b..2988bfe3 100644 --- a/lib/mysql/connector/authentication.py +++ b/lib/mysql/connector/authentication.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing support for MySQL Authentication Plugins""" diff --git a/lib/mysql/connector/catch23.py b/lib/mysql/connector/catch23.py index 2ed5d47c..2367bbd8 100644 --- a/lib/mysql/connector/catch23.py +++ b/lib/mysql/connector/catch23.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Python v2 to v3 migration module""" diff --git a/lib/mysql/connector/charsets.py b/lib/mysql/connector/charsets.py index 48b066e8..e2e78e47 100644 --- a/lib/mysql/connector/charsets.py +++ b/lib/mysql/connector/charsets.py @@ -1,27 +1,32 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . -# +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. _GENERATED_ON = '2015-08-24' diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index 87637613..d0d4b12e 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing communication with MySQL servers. """ diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index 04ff7fdf..5fa1a231 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Connection class using the C Extension """ diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index 85e3f3a3..afa2ee23 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Various MySQL constants and character sets """ diff --git a/lib/mysql/connector/conversion.py b/lib/mysql/connector/conversion.py index 706c6b3d..3a84ab13 100644 --- a/lib/mysql/connector/conversion.py +++ b/lib/mysql/connector/conversion.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Converting MySQL and Python types """ diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 4b4d3bca..9845a05f 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Cursor classes """ diff --git a/lib/mysql/connector/cursor_cext.py b/lib/mysql/connector/cursor_cext.py index 74415527..2df65ce9 100644 --- a/lib/mysql/connector/cursor_cext.py +++ b/lib/mysql/connector/cursor_cext.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Cursor classes using the C Extension """ diff --git a/lib/mysql/connector/custom_types.py b/lib/mysql/connector/custom_types.py index 1688eae2..a29eb302 100644 --- a/lib/mysql/connector/custom_types.py +++ b/lib/mysql/connector/custom_types.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Custom Python types used by MySQL Connector/Python""" diff --git a/lib/mysql/connector/dbapi.py b/lib/mysql/connector/dbapi.py index 35cb03b9..41e6a749 100644 --- a/lib/mysql/connector/dbapi.py +++ b/lib/mysql/connector/dbapi.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ This module implements some constructors and singletons as required by the diff --git a/lib/mysql/connector/errorcode.py b/lib/mysql/connector/errorcode.py index 63048119..32dea4d2 100644 --- a/lib/mysql/connector/errorcode.py +++ b/lib/mysql/connector/errorcode.py @@ -1,27 +1,32 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . -# +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. _GENERATED_ON = '2015-12-13' diff --git a/lib/mysql/connector/errors.py b/lib/mysql/connector/errors.py index c0225a77..43e0c942 100644 --- a/lib/mysql/connector/errors.py +++ b/lib/mysql/connector/errors.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Python exceptions """ diff --git a/lib/mysql/connector/fabric/__init__.py b/lib/mysql/connector/fabric/__init__.py index c88fe033..806e1a63 100644 --- a/lib/mysql/connector/fabric/__init__.py +++ b/lib/mysql/connector/fabric/__init__.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """MySQL Fabric support""" diff --git a/lib/mysql/connector/fabric/balancing.py b/lib/mysql/connector/fabric/balancing.py index 8ebf50bd..71fbac7a 100644 --- a/lib/mysql/connector/fabric/balancing.py +++ b/lib/mysql/connector/fabric/balancing.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing load balancing""" diff --git a/lib/mysql/connector/fabric/caching.py b/lib/mysql/connector/fabric/caching.py index b508fa4f..4cd34ea7 100644 --- a/lib/mysql/connector/fabric/caching.py +++ b/lib/mysql/connector/fabric/caching.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing caching mechanisms for MySQL Fabric""" diff --git a/lib/mysql/connector/fabric/connection.py b/lib/mysql/connector/fabric/connection.py index 2c9a1337..b2658e9b 100644 --- a/lib/mysql/connector/fabric/connection.py +++ b/lib/mysql/connector/fabric/connection.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing communication with MySQL Fabric""" diff --git a/lib/mysql/connector/locales/__init__.py b/lib/mysql/connector/locales/__init__.py index cd5e54f8..1473beba 100644 --- a/lib/mysql/connector/locales/__init__.py +++ b/lib/mysql/connector/locales/__init__.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Translations """ diff --git a/lib/mysql/connector/locales/eng/__init__.py b/lib/mysql/connector/locales/eng/__init__.py index cfddd846..05194705 100644 --- a/lib/mysql/connector/locales/eng/__init__.py +++ b/lib/mysql/connector/locales/eng/__init__.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """English Content """ diff --git a/lib/mysql/connector/locales/eng/client_error.py b/lib/mysql/connector/locales/eng/client_error.py index d145a174..9b482b38 100644 --- a/lib/mysql/connector/locales/eng/client_error.py +++ b/lib/mysql/connector/locales/eng/client_error.py @@ -1,27 +1,32 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . -# +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. _GENERATED_ON = '2015-12-13' diff --git a/lib/mysql/connector/network.py b/lib/mysql/connector/network.py index ad853ba5..2be04cc3 100644 --- a/lib/mysql/connector/network.py +++ b/lib/mysql/connector/network.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Module implementing low-level socket communication with MySQL servers. """ diff --git a/lib/mysql/connector/optionfiles.py b/lib/mysql/connector/optionfiles.py index 4c711f55..96b78562 100644 --- a/lib/mysql/connector/optionfiles.py +++ b/lib/mysql/connector/optionfiles.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implements parser to parse MySQL option files. """ diff --git a/lib/mysql/connector/pooling.py b/lib/mysql/connector/pooling.py index b6711202..b1201c59 100644 --- a/lib/mysql/connector/pooling.py +++ b/lib/mysql/connector/pooling.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing pooling of connections to MySQL servers. """ diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index 7daf93bd..e712c4ff 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implements the MySQL Client/Server protocol """ diff --git a/lib/mysql/connector/utils.py b/lib/mysql/connector/utils.py index af743a7b..163df2c0 100644 --- a/lib/mysql/connector/utils.py +++ b/lib/mysql/connector/utils.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Utilities """ diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index 387cb513..017dca3c 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -1,25 +1,31 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + """MySQL Connector/Python version information The file version.py gets installed and is available after installation diff --git a/setup.py b/setup.py index d83022b8..bb067520 100644 --- a/setup.py +++ b/setup.py @@ -1,27 +1,32 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/setupinfo.py b/setupinfo.py index cb31f889..59338016 100644 --- a/setupinfo.py +++ b/setupinfo.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from distutils.core import Extension import os diff --git a/src/exceptions.c b/src/exceptions.c index 2009cff8..37feef5c 100644 --- a/src/exceptions.c +++ b/src/exceptions.c @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/src/force_cpp_linkage.cc b/src/force_cpp_linkage.cc index e40e9c3d..fa3891bd 100644 --- a/src/force_cpp_linkage.cc +++ b/src/force_cpp_linkage.cc @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* diff --git a/src/include/catch23.h b/src/include/catch23.h index 505a4e46..c14607c8 100644 --- a/src/include/catch23.h +++ b/src/include/catch23.h @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_CATCH23_H @@ -88,4 +93,4 @@ #define PyBytesFromFormat PyString_FromFormat #endif -#endif \ No newline at end of file +#endif diff --git a/src/include/exceptions.h b/src/include/exceptions.h index c2391299..91f46f46 100644 --- a/src/include/exceptions.h +++ b/src/include/exceptions.h @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_EXCEPTIONS_H diff --git a/src/include/mysql_capi.h b/src/include/mysql_capi.h index d3c071db..1ab90136 100644 --- a/src/include/mysql_capi.h +++ b/src/include/mysql_capi.h @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_MYSQL_CAPI_H diff --git a/src/include/mysql_capi_conversion.h b/src/include/mysql_capi_conversion.h index c36ece3c..5b05f26b 100644 --- a/src/include/mysql_capi_conversion.h +++ b/src/include/mysql_capi_conversion.h @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_MYSQL_CAPI_CONVERSION_H @@ -69,4 +74,4 @@ mytopy_string(const char *data, const unsigned long length, const unsigned long flags, const char *charset, unsigned int use_unicode); -#endif /* MYCONNPY_MYSQL_CAPI_CONVERSION_H */ \ No newline at end of file +#endif /* MYCONNPY_MYSQL_CAPI_CONVERSION_H */ diff --git a/src/include/mysql_connector.h b/src/include/mysql_connector.h index 063223b4..a1d35526 100644 --- a/src/include/mysql_connector.h +++ b/src/include/mysql_connector.h @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_MYSQL_CONNECTOR_H diff --git a/src/mysql_capi.c b/src/mysql_capi.c index 6d60d0eb..d41bc7e6 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/src/mysql_capi_conversion.c b/src/mysql_capi_conversion.c index 56178ebd..384b7b13 100644 --- a/src/mysql_capi_conversion.c +++ b/src/mysql_capi_conversion.c @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/src/mysql_connector.c b/src/mysql_connector.c index 8f991251..327c72d3 100644 --- a/src/mysql_connector.c +++ b/src/mysql_connector.c @@ -1,26 +1,31 @@ /* -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/support/django/run_django_tests.py b/support/django/run_django_tests.py index 67e5eb49..74247a5d 100755 --- a/support/django/run_django_tests.py +++ b/support/django/run_django_tests.py @@ -1,27 +1,32 @@ #!/usr/bin/env python -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Script for executing Django unit tests diff --git a/support/django/test_mysqlconnector_settings.py b/support/django/test_mysqlconnector_settings.py index 0628cfc3..e81ed740 100644 --- a/support/django/test_mysqlconnector_settings.py +++ b/support/django/test_mysqlconnector_settings.py @@ -1,26 +1,30 @@ - -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA DATABASES = { 'default': { diff --git a/tests/__init__.py b/tests/__init__.py index 4788e908..88bea727 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests """ diff --git a/tests/mysqld.py b/tests/mysqld.py index 1495f034..69a75417 100644 --- a/tests/mysqld.py +++ b/tests/mysqld.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Module for managing and running a MySQL server""" diff --git a/tests/py26.py b/tests/py26.py index ec6a22c3..5638a878 100644 --- a/tests/py26.py +++ b/tests/py26.py @@ -1,27 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from functools import wraps import types diff --git a/tests/test_abstracts.py b/tests/test_abstracts.py index 7e4f0d28..b34bdce7 100644 --- a/tests/test_abstracts.py +++ b/tests/test_abstracts.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.abstracts """ diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 22803ac2..9c2a6dd1 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Test module for authentication diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 89ae3b5a..fd60d9b6 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Test module for bugs diff --git a/tests/test_connection.py b/tests/test_connection.py index 7ee0db4d..0fb80633 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.connection """ diff --git a/tests/test_constants.py b/tests/test_constants.py index 717751e7..8732c902 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.constants """ diff --git a/tests/test_conversion.py b/tests/test_conversion.py index d18171f9..c3e5ad47 100644 --- a/tests/test_conversion.py +++ b/tests/test_conversion.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.conversion """ diff --git a/tests/test_cursor.py b/tests/test_cursor.py index a161fd6a..d80b2f1b 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1,25 +1,31 @@ # -*- coding: utf-8 -*- # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Test module for bugs diff --git a/tests/test_django.py b/tests/test_django.py index 917ed3ba..3a221c17 100644 --- a/tests/test_django.py +++ b/tests/test_django.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.django """ diff --git a/tests/test_errorcode.py b/tests/test_errorcode.py index 829eacc8..3a13f952 100644 --- a/tests/test_errorcode.py +++ b/tests/test_errorcode.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.errorcode """ diff --git a/tests/test_errors.py b/tests/test_errors.py index bac81d73..0a5c9e91 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.errors """ diff --git a/tests/test_examples.py b/tests/test_examples.py index 4f7d516f..2aad2f0a 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for examples """ @@ -222,4 +227,4 @@ def tearDown(self): self.cnx.close() def test_prepared_statements(self): - pass \ No newline at end of file + pass diff --git a/tests/test_fabric.py b/tests/test_fabric.py index 295ca765..c006c4f7 100644 --- a/tests/test_fabric.py +++ b/tests/test_fabric.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.fabric """ diff --git a/tests/test_locales.py b/tests/test_locales.py index e6e1b672..3732e5e7 100644 --- a/tests/test_locales.py +++ b/tests/test_locales.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.locales """ diff --git a/tests/test_mysql_datatypes.py b/tests/test_mysql_datatypes.py index 7c4f5797..d43c2d3c 100644 --- a/tests/test_mysql_datatypes.py +++ b/tests/test_mysql_datatypes.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for MySQL data types """ diff --git a/tests/test_network.py b/tests/test_network.py index f0d20657..5340ff54 100644 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.network """ diff --git a/tests/test_optionfiles.py b/tests/test_optionfiles.py index f1d8450e..41d003e3 100644 --- a/tests/test_optionfiles.py +++ b/tests/test_optionfiles.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging import os diff --git a/tests/test_pep249.py b/tests/test_pep249.py index fd8917c5..0a618b22 100644 --- a/tests/test_pep249.py +++ b/tests/test_pep249.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for PEP-249 diff --git a/tests/test_pooling.py b/tests/test_pooling.py index cc88c940..66487a8b 100644 --- a/tests/test_pooling.py +++ b/tests/test_pooling.py @@ -1,25 +1,31 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.pooling """ diff --git a/tests/test_protocol.py b/tests/test_protocol.py index 269da05c..150fc149 100644 --- a/tests/test_protocol.py +++ b/tests/test_protocol.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.protocol """ diff --git a/tests/test_setup.py b/tests/test_setup.py index 9be8ffab..f040c2a9 100644 --- a/tests/test_setup.py +++ b/tests/test_setup.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unit tests for the setup script of Connector/Python """ diff --git a/tests/test_style.py b/tests/test_style.py index 51b621ce..76a1c651 100644 --- a/tests/test_style.py +++ b/tests/test_style.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests code analysis diff --git a/tests/test_utils.py b/tests/test_utils.py index 150bb799..b07d56d8 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,25 +1,30 @@ -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.utils """ diff --git a/unittests.py b/unittests.py index e6ae1681..6c721805 100644 --- a/unittests.py +++ b/unittests.py @@ -1,27 +1,32 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Script for running unittests From 9b9872af71e7ae08b8a39d30b523dd332ff32c56 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 4 May 2018 21:45:33 +0100 Subject: [PATCH 73/95] Update error codes for MySQL 8.0.11 --- lib/mysql/connector/errorcode.py | 3679 ++++++++++++++++- .../connector/locales/eng/client_error.py | 6 +- tests/test_errorcode.py | 2 +- 3 files changed, 3568 insertions(+), 119 deletions(-) diff --git a/lib/mysql/connector/errorcode.py b/lib/mysql/connector/errorcode.py index 32dea4d2..675c76b8 100644 --- a/lib/mysql/connector/errorcode.py +++ b/lib/mysql/connector/errorcode.py @@ -29,14 +29,14 @@ # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. -_GENERATED_ON = '2015-12-13' -_MYSQL_VERSION = (5, 7, 10) +_GENERATED_ON = '2018-03-16' +_MYSQL_VERSION = (8, 0, 11) """This module contains the MySQL Server and Client error codes""" # Start MySQL Errors -ER_HASHCHK = 1000 -ER_NISAMCHK = 1001 +OBSOLETE_ER_HASHCHK = 1000 +OBSOLETE_ER_NISAMCHK = 1001 ER_NO = 1002 ER_YES = 1003 ER_CANT_CREATE_FILE = 1004 @@ -44,27 +44,27 @@ ER_CANT_CREATE_DB = 1006 ER_DB_CREATE_EXISTS = 1007 ER_DB_DROP_EXISTS = 1008 -ER_DB_DROP_DELETE = 1009 +OBSOLETE_ER_DB_DROP_DELETE = 1009 ER_DB_DROP_RMDIR = 1010 -ER_CANT_DELETE_FILE = 1011 +OBSOLETE_ER_CANT_DELETE_FILE = 1011 ER_CANT_FIND_SYSTEM_REC = 1012 ER_CANT_GET_STAT = 1013 -ER_CANT_GET_WD = 1014 +OBSOLETE_ER_CANT_GET_WD = 1014 ER_CANT_LOCK = 1015 ER_CANT_OPEN_FILE = 1016 ER_FILE_NOT_FOUND = 1017 ER_CANT_READ_DIR = 1018 -ER_CANT_SET_WD = 1019 +OBSOLETE_ER_CANT_SET_WD = 1019 ER_CHECKREAD = 1020 -ER_DISK_FULL = 1021 +OBSOLETE_ER_DISK_FULL = 1021 ER_DUP_KEY = 1022 -ER_ERROR_ON_CLOSE = 1023 +OBSOLETE_ER_ERROR_ON_CLOSE = 1023 ER_ERROR_ON_READ = 1024 ER_ERROR_ON_RENAME = 1025 ER_ERROR_ON_WRITE = 1026 ER_FILE_USED = 1027 ER_FILSORT_ABORT = 1028 -ER_FORM_NOT_FOUND = 1029 +OBSOLETE_ER_FORM_NOT_FOUND = 1029 ER_GET_ERRNO = 1030 ER_ILLEGAL_HA = 1031 ER_KEY_NOT_FOUND = 1032 @@ -74,7 +74,7 @@ ER_OPEN_AS_READONLY = 1036 ER_OUTOFMEMORY = 1037 ER_OUT_OF_SORTMEMORY = 1038 -ER_UNEXPECTED_EOF = 1039 +OBSOLETE_ER_UNEXPECTED_EOF = 1039 ER_CON_COUNT_ERROR = 1040 ER_OUT_OF_RESOURCES = 1041 ER_BAD_HOST_ERROR = 1042 @@ -112,8 +112,8 @@ ER_TOO_BIG_FIELDLENGTH = 1074 ER_WRONG_AUTO_KEY = 1075 ER_READY = 1076 -ER_NORMAL_SHUTDOWN = 1077 -ER_GOT_SIGNAL = 1078 +OBSOLETE_ER_NORMAL_SHUTDOWN = 1077 +OBSOLETE_ER_GOT_SIGNAL = 1078 ER_SHUTDOWN_COMPLETE = 1079 ER_FORCING_CLOSE = 1080 ER_IPSOCK_ERROR = 1081 @@ -155,7 +155,7 @@ ER_TOO_MANY_FIELDS = 1117 ER_TOO_BIG_ROWSIZE = 1118 ER_STACK_OVERRUN = 1119 -ER_WRONG_OUTER_JOIN = 1120 +ER_WRONG_OUTER_JOIN_UNUSED = 1120 ER_NULL_COLUMN_IN_INDEX = 1121 ER_CANT_FIND_UDF = 1122 ER_CANT_INITIALIZE_UDF = 1123 @@ -185,8 +185,8 @@ ER_NONEXISTING_TABLE_GRANT = 1147 ER_NOT_ALLOWED_COMMAND = 1148 ER_SYNTAX_ERROR = 1149 -ER_UNUSED1 = 1150 -ER_UNUSED2 = 1151 +OBSOLETE_ER_UNUSED1 = 1150 +OBSOLETE_ER_UNUSED2 = 1151 ER_ABORTING_CONNECTION = 1152 ER_NET_PACKET_TOO_LARGE = 1153 ER_NET_READ_ERROR_FROM_PIPE = 1154 @@ -200,7 +200,7 @@ ER_TOO_LONG_STRING = 1162 ER_TABLE_CANT_HANDLE_BLOB = 1163 ER_TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164 -ER_UNUSED3 = 1165 +OBSOLETE_ER_UNUSED3 = 1165 ER_WRONG_COLUMN_NAME = 1166 ER_WRONG_KEY_COLUMN = 1167 ER_WRONG_MRG_TABLE = 1168 @@ -209,7 +209,7 @@ ER_PRIMARY_CANT_HAVE_NULL = 1171 ER_TOO_MANY_ROWS = 1172 ER_REQUIRES_PRIMARY_KEY = 1173 -ER_NO_RAID_COMPILED = 1174 +OBSOLETE_ER_NO_RAID_COMPILED = 1174 ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175 ER_KEY_DOES_NOT_EXITS = 1176 ER_CHECK_NO_SUCH_TABLE = 1177 @@ -218,11 +218,11 @@ ER_ERROR_DURING_COMMIT = 1180 ER_ERROR_DURING_ROLLBACK = 1181 ER_ERROR_DURING_FLUSH_LOGS = 1182 -ER_ERROR_DURING_CHECKPOINT = 1183 +OBSOLETE_ER_ERROR_DURING_CHECKPOINT = 1183 ER_NEW_ABORTING_CONNECTION = 1184 -ER_DUMP_NOT_IMPLEMENTED = 1185 -ER_FLUSH_MASTER_BINLOG_CLOSED = 1186 -ER_INDEX_REBUILD = 1187 +OBSOLETE_ER_DUMP_NOT_IMPLEMENTED = 1185 +OBSOLETE_ER_FLUSH_MASTER_BINLOG_CLOSED = 1186 +OBSOLETE_ER_INDEX_REBUILD = 1187 ER_MASTER = 1188 ER_MASTER_NET_READ = 1189 ER_MASTER_NET_WRITE = 1190 @@ -233,7 +233,7 @@ ER_CRASHED_ON_REPAIR = 1195 ER_WARNING_NOT_COMPLETE_ROLLBACK = 1196 ER_TRANS_CACHE_FULL = 1197 -ER_SLAVE_MUST_STOP = 1198 +OBSOLETE_ER_SLAVE_MUST_STOP = 1198 ER_SLAVE_NOT_RUNNING = 1199 ER_BAD_SLAVE = 1200 ER_MASTER_INFO = 1201 @@ -243,18 +243,18 @@ ER_LOCK_WAIT_TIMEOUT = 1205 ER_LOCK_TABLE_FULL = 1206 ER_READ_ONLY_TRANSACTION = 1207 -ER_DROP_DB_WITH_READ_LOCK = 1208 -ER_CREATE_DB_WITH_READ_LOCK = 1209 +OBSOLETE_ER_DROP_DB_WITH_READ_LOCK = 1208 +OBSOLETE_ER_CREATE_DB_WITH_READ_LOCK = 1209 ER_WRONG_ARGUMENTS = 1210 ER_NO_PERMISSION_TO_CREATE_USER = 1211 -ER_UNION_TABLES_IN_DIFFERENT_DIR = 1212 +OBSOLETE_ER_UNION_TABLES_IN_DIFFERENT_DIR = 1212 ER_LOCK_DEADLOCK = 1213 ER_TABLE_CANT_HANDLE_FT = 1214 ER_CANNOT_ADD_FOREIGN = 1215 ER_NO_REFERENCED_ROW = 1216 ER_ROW_IS_REFERENCED = 1217 ER_CONNECT_TO_MASTER = 1218 -ER_QUERY_ON_MASTER = 1219 +OBSOLETE_ER_QUERY_ON_MASTER = 1219 ER_ERROR_WHEN_EXECUTING_COMMAND = 1220 ER_WRONG_USAGE = 1221 ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222 @@ -280,7 +280,7 @@ ER_SUBQUERY_NO_1_ROW = 1242 ER_UNKNOWN_STMT_HANDLER = 1243 ER_CORRUPT_HELP_DB = 1244 -ER_CYCLIC_REFERENCE = 1245 +OBSOLETE_ER_CYCLIC_REFERENCE = 1245 ER_AUTO_CONVERT = 1246 ER_ILLEGAL_REFERENCE = 1247 ER_DERIVED_MUST_HAVE_ALIAS = 1248 @@ -289,8 +289,8 @@ ER_NOT_SUPPORTED_AUTH_MODE = 1251 ER_SPATIAL_CANT_HAVE_NULL = 1252 ER_COLLATION_CHARSET_MISMATCH = 1253 -ER_SLAVE_WAS_RUNNING = 1254 -ER_SLAVE_WAS_NOT_RUNNING = 1255 +OBSOLETE_ER_SLAVE_WAS_RUNNING = 1254 +OBSOLETE_ER_SLAVE_WAS_NOT_RUNNING = 1255 ER_TOO_BIG_FOR_UNCOMPRESS = 1256 ER_ZLIB_Z_MEM_ERROR = 1257 ER_ZLIB_Z_BUF_ERROR = 1258 @@ -303,7 +303,7 @@ WARN_DATA_TRUNCATED = 1265 ER_WARN_USING_OTHER_HANDLER = 1266 ER_CANT_AGGREGATE_2COLLATIONS = 1267 -ER_DROP_USER = 1268 +OBSOLETE_ER_DROP_USER = 1268 ER_REVOKE_GRANTS = 1269 ER_CANT_AGGREGATE_3COLLATIONS = 1270 ER_CANT_AGGREGATE_NCOLLATIONS = 1271 @@ -317,7 +317,7 @@ ER_UNTIL_COND_IGNORED = 1279 ER_WRONG_NAME_FOR_INDEX = 1280 ER_WRONG_NAME_FOR_CATALOG = 1281 -ER_WARN_QC_RESIZE = 1282 +OBSOLETE_ER_WARN_QC_RESIZE = 1282 ER_BAD_FT_COLUMN = 1283 ER_UNKNOWN_KEY_CACHE = 1284 ER_WARN_HOSTNAME_WONT_WORK = 1285 @@ -328,7 +328,7 @@ ER_OPTION_PREVENTS_STATEMENT = 1290 ER_DUPLICATED_VALUE_IN_TYPE = 1291 ER_TRUNCATED_WRONG_VALUE = 1292 -ER_TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293 +OBSOLETE_ER_TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293 ER_INVALID_ON_UPDATE = 1294 ER_UNSUPPORTED_PS = 1295 ER_GET_ERRMSG = 1296 @@ -381,10 +381,10 @@ ER_FPARSER_ERROR_IN_PARAMETER = 1343 ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER = 1344 ER_VIEW_NO_EXPLAIN = 1345 -ER_FRM_UNKNOWN_TYPE = 1346 +OBSOLETE_ER_FRM_UNKNOWN_TYPE = 1346 ER_WRONG_OBJECT = 1347 ER_NONUPDATEABLE_COLUMN = 1348 -ER_VIEW_SELECT_DERIVED_UNUSED = 1349 +OBSOLETE_ER_VIEW_SELECT_DERIVED_UNUSED = 1349 ER_VIEW_SELECT_CLAUSE = 1350 ER_VIEW_SELECT_VARIABLE = 1351 ER_VIEW_SELECT_TMPTABLE = 1352 @@ -393,7 +393,7 @@ ER_WARN_VIEW_WITHOUT_KEY = 1355 ER_VIEW_INVALID = 1356 ER_SP_NO_DROP_SP = 1357 -ER_SP_GOTO_IN_HNDLR = 1358 +OBSOLETE_ER_SP_GOTO_IN_HNDLR = 1358 ER_TRG_ALREADY_EXISTS = 1359 ER_TRG_DOES_NOT_EXIST = 1360 ER_TRG_ON_VIEW_OR_TEMP_TABLE = 1361 @@ -407,7 +407,7 @@ ER_VIEW_CHECK_FAILED = 1369 ER_PROCACCESS_DENIED_ERROR = 1370 ER_RELAY_LOG_FAIL = 1371 -ER_PASSWD_LENGTH = 1372 +OBSOLETE_ER_PASSWD_LENGTH = 1372 ER_UNKNOWN_TARGET_BINLOG = 1373 ER_IO_ERR_LOG_INDEX_READ = 1374 ER_BINLOG_PURGE_PROHIBITED = 1375 @@ -418,13 +418,13 @@ ER_RELAY_LOG_INIT = 1380 ER_NO_BINARY_LOGGING = 1381 ER_RESERVED_SYNTAX = 1382 -ER_WSAS_FAILED = 1383 -ER_DIFF_GROUPS_PROC = 1384 -ER_NO_GROUP_FOR_PROC = 1385 -ER_ORDER_WITH_PROC = 1386 -ER_LOGGING_PROHIBIT_CHANGING_OF = 1387 -ER_NO_FILE_MAPPING = 1388 -ER_WRONG_MAGIC = 1389 +OBSOLETE_ER_WSAS_FAILED = 1383 +OBSOLETE_ER_DIFF_GROUPS_PROC = 1384 +OBSOLETE_ER_NO_GROUP_FOR_PROC = 1385 +OBSOLETE_ER_ORDER_WITH_PROC = 1386 +OBSOLETE_ER_LOGGING_PROHIBIT_CHANGING_OF = 1387 +OBSOLETE_ER_NO_FILE_MAPPING = 1388 +OBSOLETE_ER_WRONG_MAGIC = 1389 ER_PS_MANY_PARAM = 1390 ER_KEY_PART_0 = 1391 ER_VIEW_CHECKSUM = 1392 @@ -452,10 +452,10 @@ ER_SP_NOT_VAR_ARG = 1414 ER_SP_NO_RETSET = 1415 ER_CANT_CREATE_GEOMETRY_OBJECT = 1416 -ER_FAILED_ROUTINE_BREAK_BINLOG = 1417 +OBSOLETE_ER_FAILED_ROUTINE_BREAK_BINLOG = 1417 ER_BINLOG_UNSAFE_ROUTINE = 1418 ER_BINLOG_CREATE_ROUTINE_NEED_SUPER = 1419 -ER_EXEC_STMT_WITH_OPEN_CURSOR = 1420 +OBSOLETE_ER_EXEC_STMT_WITH_OPEN_CURSOR = 1420 ER_STMT_HAS_NO_OPEN_CURSOR = 1421 ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG = 1422 ER_NO_DEFAULT_FOR_VIEW_FIELD = 1423 @@ -469,7 +469,7 @@ ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST = 1431 ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE = 1432 ER_FOREIGN_DATA_STRING_INVALID = 1433 -ER_CANT_CREATE_FEDERATED_TABLE = 1434 +OBSOLETE_ER_CANT_CREATE_FEDERATED_TABLE = 1434 ER_TRG_IN_WRONG_SCHEMA = 1435 ER_STACK_OVERRUN_NEED_MORE = 1436 ER_TOO_LONG_BODY = 1437 @@ -481,7 +481,7 @@ ER_VIEW_PREVENT_UPDATE = 1443 ER_PS_NO_RECURSION = 1444 ER_SP_CANT_SET_AUTOCOMMIT = 1445 -ER_MALFORMED_DEFINER = 1446 +OBSOLETE_ER_MALFORMED_DEFINER = 1446 ER_VIEW_FRM_NO_USER = 1447 ER_VIEW_OTHER_USER = 1448 ER_NO_SUCH_USER = 1449 @@ -492,7 +492,7 @@ ER_TRG_NO_DEFINER = 1454 ER_OLD_FILE_FORMAT = 1455 ER_SP_RECURSION_LIMIT = 1456 -ER_SP_PROC_TABLE_CORRUPT = 1457 +OBSOLETE_ER_SP_PROC_TABLE_CORRUPT = 1457 ER_SP_WRONG_NAME = 1458 ER_TABLE_NEEDS_UPGRADE = 1459 ER_SP_NO_AGGREGATE = 1460 @@ -517,14 +517,14 @@ ER_PARTITION_REQUIRES_VALUES_ERROR = 1479 ER_PARTITION_WRONG_VALUES_ERROR = 1480 ER_PARTITION_MAXVALUE_ERROR = 1481 -ER_PARTITION_SUBPARTITION_ERROR = 1482 -ER_PARTITION_SUBPART_MIX_ERROR = 1483 +OBSOLETE_ER_PARTITION_SUBPARTITION_ERROR = 1482 +OBSOLETE_ER_PARTITION_SUBPART_MIX_ERROR = 1483 ER_PARTITION_WRONG_NO_PART_ERROR = 1484 ER_PARTITION_WRONG_NO_SUBPART_ERROR = 1485 ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR = 1486 -ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR = 1487 +OBSOLETE_ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR = 1487 ER_FIELD_NOT_FOUND_PART_ERROR = 1488 -ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR = 1489 +OBSOLETE_ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR = 1489 ER_INCONSISTENT_PARTITION_INFO_ERROR = 1490 ER_PARTITION_FUNC_NOT_ALLOWED_ERROR = 1491 ER_PARTITIONS_MUST_BE_DEFINED_ERROR = 1492 @@ -557,7 +557,7 @@ ER_CONSECUTIVE_REORG_PARTITIONS = 1519 ER_REORG_OUTSIDE_RANGE = 1520 ER_PARTITION_FUNCTION_FAILURE = 1521 -ER_PART_STATE_ERROR = 1522 +OBSOLETE_ER_PART_STATE_ERROR = 1522 ER_LIMITED_PART_RANGE = 1523 ER_PLUGIN_IS_NOT_LOADED = 1524 ER_WRONG_VALUE = 1525 @@ -570,49 +570,49 @@ ER_SIZE_OVERFLOW_ERROR = 1532 ER_ALTER_FILEGROUP_FAILED = 1533 ER_BINLOG_ROW_LOGGING_FAILED = 1534 -ER_BINLOG_ROW_WRONG_TABLE_DEF = 1535 -ER_BINLOG_ROW_RBR_TO_SBR = 1536 +OBSOLETE_ER_BINLOG_ROW_WRONG_TABLE_DEF = 1535 +OBSOLETE_ER_BINLOG_ROW_RBR_TO_SBR = 1536 ER_EVENT_ALREADY_EXISTS = 1537 -ER_EVENT_STORE_FAILED = 1538 +OBSOLETE_ER_EVENT_STORE_FAILED = 1538 ER_EVENT_DOES_NOT_EXIST = 1539 -ER_EVENT_CANT_ALTER = 1540 -ER_EVENT_DROP_FAILED = 1541 +OBSOLETE_ER_EVENT_CANT_ALTER = 1540 +OBSOLETE_ER_EVENT_DROP_FAILED = 1541 ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG = 1542 ER_EVENT_ENDS_BEFORE_STARTS = 1543 ER_EVENT_EXEC_TIME_IN_THE_PAST = 1544 -ER_EVENT_OPEN_TABLE_FAILED = 1545 -ER_EVENT_NEITHER_M_EXPR_NOR_M_AT = 1546 -ER_OBSOLETE_COL_COUNT_DOESNT_MATCH_CORRUPTED = 1547 -ER_OBSOLETE_CANNOT_LOAD_FROM_TABLE = 1548 -ER_EVENT_CANNOT_DELETE = 1549 -ER_EVENT_COMPILE_ERROR = 1550 +OBSOLETE_ER_EVENT_OPEN_TABLE_FAILED = 1545 +OBSOLETE_ER_EVENT_NEITHER_M_EXPR_NOR_M_AT = 1546 +OBSOLETE_ER_COL_COUNT_DOESNT_MATCH_CORRUPTED = 1547 +OBSOLETE_ER_CANNOT_LOAD_FROM_TABLE = 1548 +OBSOLETE_ER_EVENT_CANNOT_DELETE = 1549 +OBSOLETE_ER_EVENT_COMPILE_ERROR = 1550 ER_EVENT_SAME_NAME = 1551 -ER_EVENT_DATA_TOO_LONG = 1552 +OBSOLETE_ER_EVENT_DATA_TOO_LONG = 1552 ER_DROP_INDEX_FK = 1553 ER_WARN_DEPRECATED_SYNTAX_WITH_VER = 1554 -ER_CANT_WRITE_LOCK_LOG_TABLE = 1555 +OBSOLETE_ER_CANT_WRITE_LOCK_LOG_TABLE = 1555 ER_CANT_LOCK_LOG_TABLE = 1556 ER_FOREIGN_DUPLICATE_KEY_OLD_UNUSED = 1557 ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE = 1558 ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR = 1559 ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1560 -ER_NDB_CANT_SWITCH_BINLOG_FORMAT = 1561 +OBSOLETE_ER_NDB_CANT_SWITCH_BINLOG_FORMAT = 1561 ER_PARTITION_NO_TEMPORARY = 1562 ER_PARTITION_CONST_DOMAIN_ERROR = 1563 ER_PARTITION_FUNCTION_IS_NOT_ALLOWED = 1564 -ER_DDL_LOG_ERROR = 1565 +OBSOLETE_ER_DDL_LOG_ERROR_UNUSED = 1565 ER_NULL_IN_VALUES_LESS_THAN = 1566 ER_WRONG_PARTITION_NAME = 1567 ER_CANT_CHANGE_TX_CHARACTERISTICS = 1568 ER_DUP_ENTRY_AUTOINCREMENT_CASE = 1569 -ER_EVENT_MODIFY_QUEUE_ERROR = 1570 +OBSOLETE_ER_EVENT_MODIFY_QUEUE_ERROR = 1570 ER_EVENT_SET_VAR_ERROR = 1571 ER_PARTITION_MERGE_ERROR = 1572 -ER_CANT_ACTIVATE_LOG = 1573 -ER_RBR_NOT_AVAILABLE = 1574 +OBSOLETE_ER_CANT_ACTIVATE_LOG = 1573 +OBSOLETE_ER_RBR_NOT_AVAILABLE = 1574 ER_BASE64_DECODE_ERROR = 1575 ER_EVENT_RECURSION_FORBIDDEN = 1576 -ER_EVENTS_DB_ERROR = 1577 +OBSOLETE_ER_EVENTS_DB_ERROR = 1577 ER_ONLY_INTEGERS_ALLOWED = 1578 ER_UNSUPORTED_LOG_ENGINE = 1579 ER_BAD_LOG_STATEMENT = 1580 @@ -625,40 +625,40 @@ ER_BINLOG_PURGE_EMFILE = 1587 ER_EVENT_CANNOT_CREATE_IN_THE_PAST = 1588 ER_EVENT_CANNOT_ALTER_IN_THE_PAST = 1589 -ER_SLAVE_INCIDENT = 1590 +OBSOLETE_ER_SLAVE_INCIDENT = 1590 ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT = 1591 ER_BINLOG_UNSAFE_STATEMENT = 1592 -ER_SLAVE_FATAL_ERROR = 1593 -ER_SLAVE_RELAY_LOG_READ_FAILURE = 1594 -ER_SLAVE_RELAY_LOG_WRITE_FAILURE = 1595 -ER_SLAVE_CREATE_EVENT_FAILURE = 1596 -ER_SLAVE_MASTER_COM_FAILURE = 1597 +ER_BINLOG_FATAL_ERROR = 1593 +OBSOLETE_ER_SLAVE_RELAY_LOG_READ_FAILURE = 1594 +OBSOLETE_ER_SLAVE_RELAY_LOG_WRITE_FAILURE = 1595 +OBSOLETE_ER_SLAVE_CREATE_EVENT_FAILURE = 1596 +OBSOLETE_ER_SLAVE_MASTER_COM_FAILURE = 1597 ER_BINLOG_LOGGING_IMPOSSIBLE = 1598 ER_VIEW_NO_CREATION_CTX = 1599 ER_VIEW_INVALID_CREATION_CTX = 1600 -ER_SR_INVALID_CREATION_CTX = 1601 +OBSOLETE_ER_SR_INVALID_CREATION_CTX = 1601 ER_TRG_CORRUPTED_FILE = 1602 ER_TRG_NO_CREATION_CTX = 1603 ER_TRG_INVALID_CREATION_CTX = 1604 ER_EVENT_INVALID_CREATION_CTX = 1605 ER_TRG_CANT_OPEN_TABLE = 1606 -ER_CANT_CREATE_SROUTINE = 1607 -ER_NEVER_USED = 1608 +OBSOLETE_ER_CANT_CREATE_SROUTINE = 1607 +OBSOLETE_ER_NEVER_USED = 1608 ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT = 1609 ER_SLAVE_CORRUPT_EVENT = 1610 -ER_LOAD_DATA_INVALID_COLUMN_UNUSED = 1611 +OBSOLETE_ER_LOAD_DATA_INVALID_COLUMN_UNUSED = 1611 ER_LOG_PURGE_NO_FILE = 1612 ER_XA_RBTIMEOUT = 1613 ER_XA_RBDEADLOCK = 1614 ER_NEED_REPREPARE = 1615 -ER_DELAYED_NOT_SUPPORTED = 1616 +OBSOLETE_ER_DELAYED_NOT_SUPPORTED = 1616 WARN_NO_MASTER_INFO = 1617 WARN_OPTION_IGNORED = 1618 ER_PLUGIN_DELETE_BUILTIN = 1619 WARN_PLUGIN_BUSY = 1620 ER_VARIABLE_IS_READONLY = 1621 ER_WARN_ENGINE_TRANSACTION_ROLLBACK = 1622 -ER_SLAVE_HEARTBEAT_FAILURE = 1623 +OBSOLETE_ER_SLAVE_HEARTBEAT_FAILURE = 1623 ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE = 1624 ER_NDB_REPLICATION_SCHEMA_ERROR = 1625 ER_CONFLICT_FN_PARSE_ERROR = 1626 @@ -686,7 +686,7 @@ ER_COND_ITEM_TOO_LONG = 1648 ER_UNKNOWN_LOCALE = 1649 ER_SLAVE_IGNORE_SERVER_IDS = 1650 -ER_QUERY_CACHE_DISABLED = 1651 +OBSOLETE_ER_QUERY_CACHE_DISABLED = 1651 ER_SAME_NAME_PARTITION_FIELD = 1652 ER_PARTITION_COLUMN_LIST_ERROR = 1653 ER_WRONG_TYPE_COLUMN_VALUE_ERROR = 1654 @@ -704,7 +704,7 @@ ER_BINLOG_ROW_INJECTION_AND_STMT_MODE = 1666 ER_BINLOG_MULTIPLE_ENGINES_AND_SELF_LOGGING_ENGINE = 1667 ER_BINLOG_UNSAFE_LIMIT = 1668 -ER_UNUSED4 = 1669 +OBSOLETE_ER_UNUSED4 = 1669 ER_BINLOG_UNSAFE_SYSTEM_TABLE = 1670 ER_BINLOG_UNSAFE_AUTOINC_COLUMNS = 1671 ER_BINLOG_UNSAFE_UDF = 1672 @@ -712,7 +712,7 @@ ER_BINLOG_UNSAFE_SYSTEM_FUNCTION = 1674 ER_BINLOG_UNSAFE_NONTRANS_AFTER_TRANS = 1675 ER_MESSAGE_AND_STATEMENT = 1676 -ER_SLAVE_CONVERSION_FAILED = 1677 +OBSOLETE_ER_SLAVE_CONVERSION_FAILED = 1677 ER_SLAVE_CANT_CREATE_CONVERSION = 1678 ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT = 1679 ER_PATH_LENGTH = 1680 @@ -735,7 +735,7 @@ ER_VALUES_IS_NOT_INT_TYPE_ERROR = 1697 ER_ACCESS_DENIED_NO_PASSWORD_ERROR = 1698 ER_SET_PASSWORD_AUTH_PLUGIN = 1699 -ER_GRANT_PLUGIN_USER_EXISTS = 1700 +OBSOLETE_ER_GRANT_PLUGIN_USER_EXISTS = 1700 ER_TRUNCATE_ILLEGAL_FK = 1701 ER_PLUGIN_IS_PERMANENT = 1702 ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN = 1703 @@ -776,15 +776,15 @@ ER_BINLOG_CACHE_SIZE_GREATER_THAN_MAX = 1738 ER_WARN_INDEX_NOT_APPLICABLE = 1739 ER_PARTITION_EXCHANGE_FOREIGN_KEY = 1740 -ER_NO_SUCH_KEY_VALUE = 1741 +OBSOLETE_ER_NO_SUCH_KEY_VALUE = 1741 ER_RPL_INFO_DATA_TOO_LONG = 1742 -ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE = 1743 -ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE = 1744 +OBSOLETE_ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE = 1743 +OBSOLETE_ER_BINLOG_READ_EVENT_CHECKSUM_FAILURE = 1744 ER_BINLOG_STMT_CACHE_SIZE_GREATER_THAN_MAX = 1745 ER_CANT_UPDATE_TABLE_IN_CREATE_TABLE_SELECT = 1746 ER_PARTITION_CLAUSE_ON_NONPARTITIONED = 1747 ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET = 1748 -ER_NO_SUCH_PARTITION__UNUSED = 1749 +OBSOLETE_ER_NO_SUCH_PARTITION__UNUSED = 1749 ER_CHANGE_RPL_INFO_REPOSITORY_FAILURE = 1750 ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_CREATED_TEMP_TABLE = 1751 ER_WARNING_NOT_COMPLETE_ROLLBACK_WITH_DROPPED_TEMP_TABLE = 1752 @@ -802,11 +802,11 @@ ER_TABLE_HAS_NO_FT = 1764 ER_VARIABLE_NOT_SETTABLE_IN_SF_OR_TRIGGER = 1765 ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION = 1766 -ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST = 1767 -ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION = 1768 +OBSOLETE_ER_GTID_NEXT_IS_NOT_IN_GTID_NEXT_LIST = 1767 +OBSOLETE_ER_CANT_CHANGE_GTID_NEXT_IN_TRANSACTION = 1768 ER_SET_STATEMENT_CANNOT_INVOKE_FUNCTION = 1769 ER_GTID_NEXT_CANT_BE_AUTOMATIC_IF_GTID_NEXT_LIST_IS_NON_NULL = 1770 -ER_SKIPPING_LOGGED_TRANSACTION = 1771 +OBSOLETE_ER_SKIPPING_LOGGED_TRANSACTION = 1771 ER_MALFORMED_GTID_SET_SPECIFICATION = 1772 ER_MALFORMED_GTID_SET_ENCODING = 1773 ER_MALFORMED_GTID_SPECIFICATION = 1774 @@ -815,11 +815,11 @@ ER_AUTO_POSITION_REQUIRES_GTID_MODE_NOT_OFF = 1777 ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET = 1778 ER_GTID_MODE_ON_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON = 1779 -ER_GTID_MODE_REQUIRES_BINLOG = 1780 +OBSOLETE_ER_GTID_MODE_REQUIRES_BINLOG = 1780 ER_CANT_SET_GTID_NEXT_TO_GTID_WHEN_GTID_MODE_IS_OFF = 1781 ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON = 1782 ER_CANT_SET_GTID_NEXT_LIST_TO_NON_NULL_WHEN_GTID_MODE_IS_OFF = 1783 -ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED = 1784 +OBSOLETE_ER_FOUND_GTID_EVENT_WHEN_GTID_MODE_IS_OFF__UNUSED = 1784 ER_GTID_UNSAFE_NON_TRANSACTIONAL_TABLE = 1785 ER_GTID_UNSAFE_CREATE_SELECT = 1786 ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION = 1787 @@ -869,12 +869,12 @@ ER_DUP_INDEX = 1831 ER_FK_COLUMN_CANNOT_CHANGE = 1832 ER_FK_COLUMN_CANNOT_CHANGE_CHILD = 1833 -ER_UNUSED5 = 1834 +OBSOLETE_ER_UNUSED5 = 1834 ER_MALFORMED_PACKET = 1835 ER_READ_ONLY_MODE = 1836 -ER_GTID_NEXT_TYPE_UNDEFINED_GROUP = 1837 +ER_GTID_NEXT_TYPE_UNDEFINED_GTID = 1837 ER_VARIABLE_NOT_SETTABLE_IN_SP = 1838 -ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF = 1839 +OBSOLETE_ER_CANT_SET_GTID_PURGED_WHEN_GTID_MODE_IS_OFF = 1839 ER_CANT_SET_GTID_PURGED_WHEN_GTID_EXECUTED_IS_NOT_EMPTY = 1840 ER_CANT_SET_GTID_PURGED_WHEN_OWNED_GTIDS_IS_NOT_EMPTY = 1841 ER_GTID_PURGED_WAS_CHANGED = 1842 @@ -887,7 +887,7 @@ ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_RENAME = 1849 ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_COLUMN_TYPE = 1850 ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_FK_CHECK = 1851 -ER_UNUSED6 = 1852 +OBSOLETE_ER_UNUSED6 = 1852 ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOPK = 1853 ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_AUTOINC = 1854 ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_HIDDEN_FTS = 1855 @@ -900,7 +900,7 @@ ER_MUST_CHANGE_PASSWORD_LOGIN = 1862 ER_ROW_IN_WRONG_PARTITION = 1863 ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX = 1864 -ER_INNODB_NO_FT_USES_PARSER = 1865 +OBSOLETE_ER_INNODB_NO_FT_USES_PARSER = 1865 ER_BINLOG_LOGICAL_CORRUPTION = 1866 ER_WARN_PURGE_LOG_IN_USE = 1867 ER_WARN_PURGE_LOG_IS_ACTIVE = 1868 @@ -919,11 +919,12 @@ ER_INNODB_FORCED_RECOVERY = 1881 ER_AES_INVALID_IV = 1882 ER_PLUGIN_CANNOT_BE_UNINSTALLED = 1883 -ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_GTID_GROUP = 1884 +ER_GTID_UNSAFE_BINLOG_SPLITTABLE_STATEMENT_AND_ASSIGNED_GTID = 1884 ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER = 1885 +ER_MISSING_KEY = 1886 ER_FILE_CORRUPT = 3000 ER_ERROR_ON_MASTER = 3001 -ER_INCONSISTENT_ERROR = 3002 +OBSOLETE_ER_INCONSISTENT_ERROR = 3002 ER_STORAGE_ENGINE_NOT_LOADED = 3003 ER_GET_STACKED_DA_WITHOUT_ACTIVE_HANDLER = 3004 ER_WARN_LEGACY_SYNTAX_CONVERTED = 3005 @@ -948,7 +949,7 @@ ER_QUERY_TIMEOUT = 3024 ER_NON_RO_SELECT_DISABLE_TIMER = 3025 ER_DUP_LIST_ENTRY = 3026 -ER_SQL_MODE_NO_EFFECT = 3027 +OBSOLETE_ER_SQL_MODE_NO_EFFECT = 3027 ER_AGGREGATE_ORDER_FOR_UNION = 3028 ER_AGGREGATE_ORDER_NON_AGG_QUERY = 3029 ER_SLAVE_WORKER_STOPPED_PREVIOUS_THD_ERROR = 3030 @@ -984,7 +985,7 @@ ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_GIS = 3060 ER_ILLEGAL_USER_VAR = 3061 ER_GTID_MODE_OFF = 3062 -ER_UNSUPPORTED_BY_REPLICATION_THREAD = 3063 +OBSOLETE_ER_UNSUPPORTED_BY_REPLICATION_THREAD = 3063 ER_INCORRECT_TYPE = 3064 ER_FIELD_IN_ORDER_NOT_SELECT = 3065 ER_AGGREGATE_IN_ORDER_NOT_SELECT = 3066 @@ -996,10 +997,10 @@ ER_INVALID_GEOJSON_UNSPECIFIED = 3072 ER_DIMENSION_UNSUPPORTED = 3073 ER_SLAVE_CHANNEL_DOES_NOT_EXIST = 3074 -ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT = 3075 +OBSOLETE_ER_SLAVE_MULTIPLE_CHANNELS_HOST_PORT = 3075 ER_SLAVE_CHANNEL_NAME_INVALID_OR_TOO_LONG = 3076 ER_SLAVE_NEW_CHANNEL_WRONG_REPOSITORY = 3077 -ER_SLAVE_CHANNEL_DELETE = 3078 +OBSOLETE_ER_SLAVE_CHANNEL_DELETE = 3078 ER_SLAVE_MULTIPLE_CHANNELS_CMD = 3079 ER_SLAVE_MAX_CHANNELS_EXCEEDED = 3080 ER_SLAVE_CHANNEL_MUST_STOP = 3081 @@ -1034,11 +1035,11 @@ ER_FEATURE_NOT_AVAILABLE = 3110 ER_CANT_SET_GTID_MODE = 3111 ER_CANT_USE_AUTO_POSITION_WITH_GTID_MODE_OFF = 3112 -ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION = 3113 -ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON = 3114 -ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF = 3115 -ER_CANT_SET_ENFORCE_GTID_CONSISTENCY_ON_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS = 3116 -ER_SET_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TRANSACTIONS = 3117 +OBSOLETE_ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION = 3113 +OBSOLETE_ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON = 3114 +OBSOLETE_ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF = 3115 +ER_CANT_ENFORCE_GTID_CONSISTENCY_WITH_ONGOING_GTID_VIOLATING_TX = 3116 +ER_ENFORCE_GTID_CONSISTENCY_WARN_WITH_ONGOING_GTID_VIOLATING_TX = 3117 ER_ACCOUNT_HAS_BEEN_LOCKED = 3118 ER_WRONG_TABLESPACE_NAME = 3119 ER_TABLESPACE_IS_NOT_EMPTY = 3120 @@ -1093,10 +1094,3454 @@ ER_SESSION_WAS_KILLED = 3169 ER_CAPACITY_EXCEEDED = 3170 ER_CAPACITY_EXCEEDED_IN_RANGE_OPTIMIZER = 3171 -ER_TABLE_NEEDS_UPG_PART = 3172 +OBSOLETE_ER_TABLE_NEEDS_UPG_PART = 3172 ER_CANT_WAIT_FOR_EXECUTED_GTID_SET_WHILE_OWNING_A_GTID = 3173 ER_CANNOT_ADD_FOREIGN_BASE_COL_VIRTUAL = 3174 ER_CANNOT_CREATE_VIRTUAL_INDEX_CONSTRAINT = 3175 +ER_ERROR_ON_MODIFYING_GTID_EXECUTED_TABLE = 3176 +ER_LOCK_REFUSED_BY_ENGINE = 3177 +ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN = 3178 +ER_MASTER_KEY_ROTATION_NOT_SUPPORTED_BY_SE = 3179 +OBSOLETE_ER_MASTER_KEY_ROTATION_ERROR_BY_SE = 3180 +ER_MASTER_KEY_ROTATION_BINLOG_FAILED = 3181 +ER_MASTER_KEY_ROTATION_SE_UNAVAILABLE = 3182 +ER_TABLESPACE_CANNOT_ENCRYPT = 3183 +ER_INVALID_ENCRYPTION_OPTION = 3184 +ER_CANNOT_FIND_KEY_IN_KEYRING = 3185 +ER_CAPACITY_EXCEEDED_IN_PARSER = 3186 +ER_UNSUPPORTED_ALTER_ENCRYPTION_INPLACE = 3187 +ER_KEYRING_UDF_KEYRING_SERVICE_ERROR = 3188 +ER_USER_COLUMN_OLD_LENGTH = 3189 +ER_CANT_RESET_MASTER = 3190 +ER_GROUP_REPLICATION_MAX_GROUP_SIZE = 3191 +ER_CANNOT_ADD_FOREIGN_BASE_COL_STORED = 3192 +ER_TABLE_REFERENCED = 3193 +OBSOLETE_ER_PARTITION_ENGINE_DEPRECATED_FOR_TABLE = 3194 +OBSOLETE_ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID_ZERO = 3195 +OBSOLETE_ER_WARN_USING_GEOMFROMWKB_TO_SET_SRID = 3196 +ER_XA_RETRY = 3197 +ER_KEYRING_AWS_UDF_AWS_KMS_ERROR = 3198 +ER_BINLOG_UNSAFE_XA = 3199 +ER_UDF_ERROR = 3200 +ER_KEYRING_MIGRATION_FAILURE = 3201 +ER_KEYRING_ACCESS_DENIED_ERROR = 3202 +ER_KEYRING_MIGRATION_STATUS = 3203 +OBSOLETE_ER_PLUGIN_FAILED_TO_OPEN_TABLES = 3204 +OBSOLETE_ER_PLUGIN_FAILED_TO_OPEN_TABLE = 3205 +OBSOLETE_ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED = 3206 +OBSOLETE_ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET = 3207 +OBSOLETE_ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY = 3208 +OBSOLETE_ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED = 3209 +OBSOLETE_ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED = 3210 +OBSOLETE_ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE = 3211 +ER_AUDIT_LOG_SUPER_PRIVILEGE_REQUIRED = 3212 +OBSOLETE_ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS = 3213 +ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_TYPE = 3214 +ER_AUDIT_LOG_UDF_INVALID_ARGUMENT_COUNT = 3215 +ER_AUDIT_LOG_HAS_NOT_BEEN_INSTALLED = 3216 +ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_TYPE = 3217 +ER_AUDIT_LOG_UDF_READ_INVALID_MAX_ARRAY_LENGTH_ARG_VALUE = 3218 +OBSOLETE_ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR = 3219 +OBSOLETE_ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY = 3220 +OBSOLETE_ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY = 3221 +OBSOLETE_ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXISTS = 3222 +OBSOLETE_ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC = 3223 +OBSOLETE_ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER = 3224 +OBSOLETE_ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER = 3225 +ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE = 3500 +ER_ACL_OPERATION_FAILED = 3501 +ER_UNSUPPORTED_INDEX_ALGORITHM = 3502 +ER_NO_SUCH_DB = 3503 +ER_TOO_BIG_ENUM = 3504 +ER_TOO_LONG_SET_ENUM_VALUE = 3505 +ER_INVALID_DD_OBJECT = 3506 +ER_UPDATING_DD_TABLE = 3507 +ER_INVALID_DD_OBJECT_ID = 3508 +ER_INVALID_DD_OBJECT_NAME = 3509 +ER_TABLESPACE_MISSING_WITH_NAME = 3510 +ER_TOO_LONG_ROUTINE_COMMENT = 3511 +ER_SP_LOAD_FAILED = 3512 +ER_INVALID_BITWISE_OPERANDS_SIZE = 3513 +ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE = 3514 +ER_WARN_UNSUPPORTED_HINT = 3515 +ER_UNEXPECTED_GEOMETRY_TYPE = 3516 +ER_SRS_PARSE_ERROR = 3517 +ER_SRS_PROJ_PARAMETER_MISSING = 3518 +ER_WARN_SRS_NOT_FOUND = 3519 +ER_SRS_NOT_CARTESIAN = 3520 +ER_SRS_NOT_CARTESIAN_UNDEFINED = 3521 +ER_PK_INDEX_CANT_BE_INVISIBLE = 3522 +ER_UNKNOWN_AUTHID = 3523 +ER_FAILED_ROLE_GRANT = 3524 +ER_OPEN_ROLE_TABLES = 3525 +ER_FAILED_DEFAULT_ROLES = 3526 +ER_COMPONENTS_NO_SCHEME = 3527 +ER_COMPONENTS_NO_SCHEME_SERVICE = 3528 +ER_COMPONENTS_CANT_LOAD = 3529 +ER_ROLE_NOT_GRANTED = 3530 +ER_FAILED_REVOKE_ROLE = 3531 +ER_RENAME_ROLE = 3532 +ER_COMPONENTS_CANT_ACQUIRE_SERVICE_IMPLEMENTATION = 3533 +ER_COMPONENTS_CANT_SATISFY_DEPENDENCY = 3534 +ER_COMPONENTS_LOAD_CANT_REGISTER_SERVICE_IMPLEMENTATION = 3535 +ER_COMPONENTS_LOAD_CANT_INITIALIZE = 3536 +ER_COMPONENTS_UNLOAD_NOT_LOADED = 3537 +ER_COMPONENTS_UNLOAD_CANT_DEINITIALIZE = 3538 +ER_COMPONENTS_CANT_RELEASE_SERVICE = 3539 +ER_COMPONENTS_UNLOAD_CANT_UNREGISTER_SERVICE = 3540 +ER_COMPONENTS_CANT_UNLOAD = 3541 +ER_WARN_UNLOAD_THE_NOT_PERSISTED = 3542 +ER_COMPONENT_TABLE_INCORRECT = 3543 +ER_COMPONENT_MANIPULATE_ROW_FAILED = 3544 +ER_COMPONENTS_UNLOAD_DUPLICATE_IN_GROUP = 3545 +ER_CANT_SET_GTID_PURGED_DUE_SETS_CONSTRAINTS = 3546 +ER_CANNOT_LOCK_USER_MANAGEMENT_CACHES = 3547 +ER_SRS_NOT_FOUND = 3548 +ER_VARIABLE_NOT_PERSISTED = 3549 +ER_IS_QUERY_INVALID_CLAUSE = 3550 +ER_UNABLE_TO_STORE_STATISTICS = 3551 +ER_NO_SYSTEM_SCHEMA_ACCESS = 3552 +ER_NO_SYSTEM_TABLESPACE_ACCESS = 3553 +ER_NO_SYSTEM_TABLE_ACCESS = 3554 +ER_NO_SYSTEM_TABLE_ACCESS_FOR_DICTIONARY_TABLE = 3555 +ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE = 3556 +ER_NO_SYSTEM_TABLE_ACCESS_FOR_TABLE = 3557 +ER_INVALID_OPTION_KEY = 3558 +ER_INVALID_OPTION_VALUE = 3559 +ER_INVALID_OPTION_KEY_VALUE_PAIR = 3560 +ER_INVALID_OPTION_START_CHARACTER = 3561 +ER_INVALID_OPTION_END_CHARACTER = 3562 +ER_INVALID_OPTION_CHARACTERS = 3563 +ER_DUPLICATE_OPTION_KEY = 3564 +ER_WARN_SRS_NOT_FOUND_AXIS_ORDER = 3565 +ER_NO_ACCESS_TO_NATIVE_FCT = 3566 +ER_RESET_MASTER_TO_VALUE_OUT_OF_RANGE = 3567 +ER_UNRESOLVED_TABLE_LOCK = 3568 +ER_DUPLICATE_TABLE_LOCK = 3569 +ER_BINLOG_UNSAFE_SKIP_LOCKED = 3570 +ER_BINLOG_UNSAFE_NOWAIT = 3571 +ER_LOCK_NOWAIT = 3572 +ER_CTE_RECURSIVE_REQUIRES_UNION = 3573 +ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST = 3574 +ER_CTE_RECURSIVE_FORBIDS_AGGREGATION = 3575 +ER_CTE_RECURSIVE_FORBIDDEN_JOIN_ORDER = 3576 +ER_CTE_RECURSIVE_REQUIRES_SINGLE_REFERENCE = 3577 +ER_SWITCH_TMP_ENGINE = 3578 +ER_WINDOW_NO_SUCH_WINDOW = 3579 +ER_WINDOW_CIRCULARITY_IN_WINDOW_GRAPH = 3580 +ER_WINDOW_NO_CHILD_PARTITIONING = 3581 +ER_WINDOW_NO_INHERIT_FRAME = 3582 +ER_WINDOW_NO_REDEFINE_ORDER_BY = 3583 +ER_WINDOW_FRAME_START_ILLEGAL = 3584 +ER_WINDOW_FRAME_END_ILLEGAL = 3585 +ER_WINDOW_FRAME_ILLEGAL = 3586 +ER_WINDOW_RANGE_FRAME_ORDER_TYPE = 3587 +ER_WINDOW_RANGE_FRAME_TEMPORAL_TYPE = 3588 +ER_WINDOW_RANGE_FRAME_NUMERIC_TYPE = 3589 +ER_WINDOW_RANGE_BOUND_NOT_CONSTANT = 3590 +ER_WINDOW_DUPLICATE_NAME = 3591 +ER_WINDOW_ILLEGAL_ORDER_BY = 3592 +ER_WINDOW_INVALID_WINDOW_FUNC_USE = 3593 +ER_WINDOW_INVALID_WINDOW_FUNC_ALIAS_USE = 3594 +ER_WINDOW_NESTED_WINDOW_FUNC_USE_IN_WINDOW_SPEC = 3595 +ER_WINDOW_ROWS_INTERVAL_USE = 3596 +ER_WINDOW_NO_GROUP_ORDER = 3597 +ER_WINDOW_EXPLAIN_JSON = 3598 +ER_WINDOW_FUNCTION_IGNORES_FRAME = 3599 +ER_WL9236_NOW_UNUSED = 3600 +ER_INVALID_NO_OF_ARGS = 3601 +ER_FIELD_IN_GROUPING_NOT_GROUP_BY = 3602 +ER_TOO_LONG_TABLESPACE_COMMENT = 3603 +ER_ENGINE_CANT_DROP_TABLE = 3604 +ER_ENGINE_CANT_DROP_MISSING_TABLE = 3605 +ER_TABLESPACE_DUP_FILENAME = 3606 +ER_DB_DROP_RMDIR2 = 3607 +ER_IMP_NO_FILES_MATCHED = 3608 +ER_IMP_SCHEMA_DOES_NOT_EXIST = 3609 +ER_IMP_TABLE_ALREADY_EXISTS = 3610 +ER_IMP_INCOMPATIBLE_MYSQLD_VERSION = 3611 +ER_IMP_INCOMPATIBLE_DD_VERSION = 3612 +ER_IMP_INCOMPATIBLE_SDI_VERSION = 3613 +ER_WARN_INVALID_HINT = 3614 +ER_VAR_DOES_NOT_EXIST = 3615 +ER_LONGITUDE_OUT_OF_RANGE = 3616 +ER_LATITUDE_OUT_OF_RANGE = 3617 +ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS = 3618 +ER_ILLEGAL_PRIVILEGE_LEVEL = 3619 +ER_NO_SYSTEM_VIEW_ACCESS = 3620 +ER_COMPONENT_FILTER_FLABBERGASTED = 3621 +ER_PART_EXPR_TOO_LONG = 3622 +ER_UDF_DROP_DYNAMICALLY_REGISTERED = 3623 +ER_UNABLE_TO_STORE_COLUMN_STATISTICS = 3624 +ER_UNABLE_TO_UPDATE_COLUMN_STATISTICS = 3625 +ER_UNABLE_TO_DROP_COLUMN_STATISTICS = 3626 +ER_UNABLE_TO_BUILD_HISTOGRAM = 3627 +ER_MANDATORY_ROLE = 3628 +ER_MISSING_TABLESPACE_FILE = 3629 +ER_PERSIST_ONLY_ACCESS_DENIED_ERROR = 3630 +ER_CMD_NEED_SUPER = 3631 +ER_PATH_IN_DATADIR = 3632 +ER_DDL_IN_PROGRESS = 3633 +ER_TOO_MANY_CONCURRENT_CLONES = 3634 +ER_APPLIER_LOG_EVENT_VALIDATION_ERROR = 3635 +ER_CTE_MAX_RECURSION_DEPTH = 3636 +ER_NOT_HINT_UPDATABLE_VARIABLE = 3637 +ER_CREDENTIALS_CONTRADICT_TO_HISTORY = 3638 +ER_WARNING_PASSWORD_HISTORY_CLAUSES_VOID = 3639 +ER_CLIENT_DOES_NOT_SUPPORT = 3640 +ER_I_S_SKIPPED_TABLESPACE = 3641 +ER_TABLESPACE_ENGINE_MISMATCH = 3642 +ER_WRONG_SRID_FOR_COLUMN = 3643 +ER_CANNOT_ALTER_SRID_DUE_TO_INDEX = 3644 +ER_WARN_BINLOG_PARTIAL_UPDATES_DISABLED = 3645 +ER_WARN_BINLOG_V1_ROW_EVENTS_DISABLED = 3646 +ER_WARN_BINLOG_PARTIAL_UPDATES_SUGGESTS_PARTIAL_IMAGES = 3647 +ER_COULD_NOT_APPLY_JSON_DIFF = 3648 +ER_CORRUPTED_JSON_DIFF = 3649 +ER_RESOURCE_GROUP_EXISTS = 3650 +ER_RESOURCE_GROUP_NOT_EXISTS = 3651 +ER_INVALID_VCPU_ID = 3652 +ER_INVALID_VCPU_RANGE = 3653 +ER_INVALID_THREAD_PRIORITY = 3654 +ER_DISALLOWED_OPERATION = 3655 +ER_RESOURCE_GROUP_BUSY = 3656 +ER_RESOURCE_GROUP_DISABLED = 3657 +ER_FEATURE_UNSUPPORTED = 3658 +ER_ATTRIBUTE_IGNORED = 3659 +ER_INVALID_THREAD_ID = 3660 +ER_RESOURCE_GROUP_BIND_FAILED = 3661 +ER_INVALID_USE_OF_FORCE_OPTION = 3662 +ER_GROUP_REPLICATION_COMMAND_FAILURE = 3663 +ER_SDI_OPERATION_FAILED = 3664 +ER_MISSING_JSON_TABLE_VALUE = 3665 +ER_WRONG_JSON_TABLE_VALUE = 3666 +ER_TF_MUST_HAVE_ALIAS = 3667 +ER_TF_FORBIDDEN_JOIN_TYPE = 3668 +ER_JT_VALUE_OUT_OF_RANGE = 3669 +ER_JT_MAX_NESTED_PATH = 3670 +ER_PASSWORD_EXPIRATION_NOT_SUPPORTED_BY_AUTH_METHOD = 3671 +ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL = 3672 +ER_BAD_NULL_ERROR_NOT_IGNORED = 3673 +WARN_USELESS_SPATIAL_INDEX = 3674 +ER_DISK_FULL_NOWAIT = 3675 +ER_PARSE_ERROR_IN_DIGEST_FN = 3676 +ER_UNDISCLOSED_PARSE_ERROR_IN_DIGEST_FN = 3677 +ER_SCHEMA_DIR_EXISTS = 3678 +ER_SCHEMA_DIR_MISSING = 3679 +ER_SCHEMA_DIR_CREATE_FAILED = 3680 +ER_SCHEMA_DIR_UNKNOWN = 3681 +ER_ONLY_IMPLEMENTED_FOR_SRID_0_AND_4326 = 3682 +ER_BINLOG_EXPIRE_LOG_DAYS_AND_SECS_USED_TOGETHER = 3683 +ER_REGEXP_BUFFER_OVERFLOW = 3684 +ER_REGEXP_ILLEGAL_ARGUMENT = 3685 +ER_REGEXP_INDEX_OUTOFBOUNDS_ERROR = 3686 +ER_REGEXP_INTERNAL_ERROR = 3687 +ER_REGEXP_RULE_SYNTAX = 3688 +ER_REGEXP_BAD_ESCAPE_SEQUENCE = 3689 +ER_REGEXP_UNIMPLEMENTED = 3690 +ER_REGEXP_MISMATCHED_PAREN = 3691 +ER_REGEXP_BAD_INTERVAL = 3692 +ER_REGEXP_MAX_LT_MIN = 3693 +ER_REGEXP_INVALID_BACK_REF = 3694 +ER_REGEXP_LOOK_BEHIND_LIMIT = 3695 +ER_REGEXP_MISSING_CLOSE_BRACKET = 3696 +ER_REGEXP_INVALID_RANGE = 3697 +ER_REGEXP_STACK_OVERFLOW = 3698 +ER_REGEXP_TIME_OUT = 3699 +ER_REGEXP_PATTERN_TOO_BIG = 3700 +ER_CANT_SET_ERROR_LOG_SERVICE = 3701 +ER_EMPTY_PIPELINE_FOR_ERROR_LOG_SERVICE = 3702 +ER_COMPONENT_FILTER_DIAGNOSTICS = 3703 +ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS = 3704 +ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS = 3705 +ER_NONPOSITIVE_RADIUS = 3706 +ER_RESTART_SERVER_FAILED = 3707 +ER_SRS_MISSING_MANDATORY_ATTRIBUTE = 3708 +ER_SRS_MULTIPLE_ATTRIBUTE_DEFINITIONS = 3709 +ER_SRS_NAME_CANT_BE_EMPTY_OR_WHITESPACE = 3710 +ER_SRS_ORGANIZATION_CANT_BE_EMPTY_OR_WHITESPACE = 3711 +ER_SRS_ID_ALREADY_EXISTS = 3712 +ER_WARN_SRS_ID_ALREADY_EXISTS = 3713 +ER_CANT_MODIFY_SRID_0 = 3714 +ER_WARN_RESERVED_SRID_RANGE = 3715 +ER_CANT_MODIFY_SRS_USED_BY_COLUMN = 3716 +ER_SRS_INVALID_CHARACTER_IN_ATTRIBUTE = 3717 +ER_SRS_ATTRIBUTE_STRING_TOO_LONG = 3718 +ER_DEPRECATED_UTF8_ALIAS = 3719 +ER_DEPRECATED_NATIONAL = 3720 +ER_INVALID_DEFAULT_UTF8MB4_COLLATION = 3721 +ER_UNABLE_TO_COLLECT_INSTANCE_LOG_STATUS = 3722 +ER_RESERVED_TABLESPACE_NAME = 3723 +ER_UNABLE_TO_SET_OPTION = 3724 +ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL = 3725 +ER_PARSER_TRACE = 10000 +ER_BOOTSTRAP_CANT_THREAD = 10001 +ER_TRIGGER_INVALID_VALUE = 10002 +ER_OPT_WRONG_TREE = 10003 +ER_DD_FAILSAFE = 10004 +ER_DD_NO_WRITES_NO_REPOPULATION = 10005 +ER_DD_VERSION_FOUND = 10006 +ER_DD_VERSION_INSTALLED = 10007 +ER_DD_VERSION_UNSUPPORTED = 10008 +ER_LOG_SYSLOG_FACILITY_FAIL = 10009 +ER_LOG_SYSLOG_CANNOT_OPEN = 10010 +ER_LOG_SLOW_CANNOT_OPEN = 10011 +ER_LOG_GENERAL_CANNOT_OPEN = 10012 +ER_LOG_CANNOT_WRITE = 10013 +ER_RPL_ZOMBIE_ENCOUNTERED = 10014 +ER_RPL_GTID_TABLE_CANNOT_OPEN = 10015 +ER_SYSTEM_SCHEMA_NOT_FOUND = 10016 +ER_DD_INIT_UPGRADE_FAILED = 10017 +ER_VIEW_UNKNOWN_CHARSET_OR_COLLATION = 10018 +ER_DD_VIEW_CANT_ALLOC_CHARSET = 10019 +ER_DD_INIT_FAILED = 10020 +ER_DD_UPDATING_PLUGIN_MD_FAILED = 10021 +ER_DD_POPULATING_TABLES_FAILED = 10022 +ER_DD_VIEW_CANT_CREATE = 10023 +ER_DD_METADATA_NOT_FOUND = 10024 +ER_DD_CACHE_NOT_EMPTY_AT_SHUTDOWN = 10025 +ER_DD_OBJECT_REMAINS = 10026 +ER_DD_OBJECT_REMAINS_IN_RELEASER = 10027 +ER_DD_OBJECT_RELEASER_REMAINS = 10028 +ER_DD_CANT_GET_OBJECT_KEY = 10029 +ER_DD_CANT_CREATE_OBJECT_KEY = 10030 +ER_CANT_CREATE_HANDLE_MGR_THREAD = 10031 +ER_RPL_REPO_HAS_GAPS = 10032 +ER_INVALID_VALUE_FOR_ENFORCE_GTID_CONSISTENCY = 10033 +ER_CHANGED_ENFORCE_GTID_CONSISTENCY = 10034 +ER_CHANGED_GTID_MODE = 10035 +ER_DISABLED_STORAGE_ENGINE_AS_DEFAULT = 10036 +ER_DEBUG_SYNC_HIT = 10037 +ER_DEBUG_SYNC_EXECUTED = 10038 +ER_DEBUG_SYNC_THREAD_MAX = 10039 +ER_DEBUG_SYNC_OOM = 10040 +ER_CANT_INIT_TC_LOG = 10041 +ER_EVENT_CANT_INIT_QUEUE = 10042 +ER_EVENT_PURGING_QUEUE = 10043 +ER_EVENT_LAST_EXECUTION = 10044 +ER_EVENT_MESSAGE_STACK = 10045 +ER_EVENT_EXECUTION_FAILED = 10046 +ER_CANT_INIT_SCHEDULER_THREAD = 10047 +ER_SCHEDULER_STOPPED = 10048 +ER_CANT_CREATE_SCHEDULER_THREAD = 10049 +ER_SCHEDULER_WAITING = 10050 +ER_SCHEDULER_STARTED = 10051 +ER_SCHEDULER_STOPPING_FAILED_TO_GET_EVENT = 10052 +ER_SCHEDULER_STOPPING_FAILED_TO_CREATE_WORKER = 10053 +ER_SCHEDULER_KILLING = 10054 +ER_UNABLE_TO_RESOLVE_IP = 10055 +ER_UNABLE_TO_RESOLVE_HOSTNAME = 10056 +ER_HOSTNAME_RESEMBLES_IPV4 = 10057 +ER_HOSTNAME_DOESNT_RESOLVE_TO = 10058 +ER_ADDRESSES_FOR_HOSTNAME_HEADER = 10059 +ER_ADDRESSES_FOR_HOSTNAME_LIST_ITEM = 10060 +ER_TRG_WITHOUT_DEFINER = 10061 +ER_TRG_NO_CLIENT_CHARSET = 10062 +ER_PARSING_VIEW = 10063 +ER_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP = 10064 +ER_COMPONENTS_INFRASTRUCTURE_SHUTDOWN = 10065 +ER_COMPONENTS_PERSIST_LOADER_BOOTSTRAP = 10066 +ER_DEPART_WITH_GRACE = 10067 +ER_CA_SELF_SIGNED = 10068 +ER_SSL_LIBRARY_ERROR = 10069 +ER_NO_THD_NO_UUID = 10070 +ER_UUID_SALT = 10071 +ER_UUID_IS = 10072 +ER_UUID_INVALID = 10073 +ER_UUID_SCRUB = 10074 +ER_CREATING_NEW_UUID = 10075 +ER_CANT_CREATE_UUID = 10076 +ER_UNKNOWN_UNSUPPORTED_STORAGE_ENGINE = 10077 +ER_SECURE_AUTH_VALUE_UNSUPPORTED = 10078 +ER_INVALID_INSTRUMENT = 10079 +ER_INNODB_MANDATORY = 10080 +OBSOLETE_ER_INNODB_CANNOT_BE_IGNORED = 10081 +ER_OLD_PASSWORDS_NO_MIDDLE_GROUND = 10082 +ER_VERBOSE_REQUIRES_HELP = 10083 +ER_POINTLESS_WITHOUT_SLOWLOG = 10084 +ER_WASTEFUL_NET_BUFFER_SIZE = 10085 +ER_DEPRECATED_TIMESTAMP_IMPLICIT_DEFAULTS = 10086 +ER_FT_BOOL_SYNTAX_INVALID = 10087 +ER_CREDENTIALLESS_AUTO_USER_BAD = 10088 +ER_CONNECTION_HANDLING_OOM = 10089 +ER_THREAD_HANDLING_OOM = 10090 +ER_CANT_CREATE_TEST_FILE = 10091 +ER_CANT_CREATE_PID_FILE = 10092 +ER_CANT_REMOVE_PID_FILE = 10093 +ER_CANT_CREATE_SHUTDOWN_THREAD = 10094 +ER_SEC_FILE_PRIV_CANT_ACCESS_DIR = 10095 +ER_SEC_FILE_PRIV_IGNORED = 10096 +ER_SEC_FILE_PRIV_EMPTY = 10097 +ER_SEC_FILE_PRIV_NULL = 10098 +ER_SEC_FILE_PRIV_DIRECTORY_INSECURE = 10099 +ER_SEC_FILE_PRIV_CANT_STAT = 10100 +ER_SEC_FILE_PRIV_DIRECTORY_PERMISSIONS = 10101 +ER_SEC_FILE_PRIV_ARGUMENT_TOO_LONG = 10102 +ER_CANT_CREATE_NAMED_PIPES_THREAD = 10103 +ER_CANT_CREATE_TCPIP_THREAD = 10104 +ER_CANT_CREATE_SHM_THREAD = 10105 +ER_CANT_CREATE_INTERRUPT_THREAD = 10106 +ER_WRITABLE_CONFIG_REMOVED = 10107 +ER_CORE_VALUES = 10108 +ER_WRONG_DATETIME_SPEC = 10109 +ER_RPL_BINLOG_FILTERS_OOM = 10110 +ER_KEYCACHE_OOM = 10111 +ER_CONFIRMING_THE_FUTURE = 10112 +ER_BACK_IN_TIME = 10113 +ER_FUTURE_DATE = 10114 +ER_UNSUPPORTED_DATE = 10115 +ER_STARTING_AS = 10116 +ER_SHUTTING_DOWN_SLAVE_THREADS = 10117 +ER_DISCONNECTING_REMAINING_CLIENTS = 10118 +ER_ABORTING = 10119 +ER_BINLOG_END = 10120 +ER_CALL_ME_LOCALHOST = 10121 +ER_USER_REQUIRES_ROOT = 10122 +ER_REALLY_RUN_AS_ROOT = 10123 +ER_USER_WHAT_USER = 10124 +ER_TRANSPORTS_WHAT_TRANSPORTS = 10125 +ER_FAIL_SETGID = 10126 +ER_FAIL_SETUID = 10127 +ER_FAIL_SETREGID = 10128 +ER_FAIL_SETREUID = 10129 +ER_FAIL_CHROOT = 10130 +ER_WIN_LISTEN_BUT_HOW = 10131 +ER_NOT_RIGHT_NOW = 10132 +ER_FIXING_CLIENT_CHARSET = 10133 +ER_OOM = 10134 +ER_FAILED_TO_LOCK_MEM = 10135 +ER_MYINIT_FAILED = 10136 +ER_BEG_INITFILE = 10137 +ER_END_INITFILE = 10138 +ER_CHANGED_MAX_OPEN_FILES = 10139 +ER_CANT_INCREASE_MAX_OPEN_FILES = 10140 +ER_CHANGED_MAX_CONNECTIONS = 10141 +ER_CHANGED_TABLE_OPEN_CACHE = 10142 +ER_THE_USER_ABIDES = 10143 +ER_RPL_CANT_ADD_DO_TABLE = 10144 +ER_RPL_CANT_ADD_IGNORE_TABLE = 10145 +ER_TRACK_VARIABLES_BOGUS = 10146 +ER_EXCESS_ARGUMENTS = 10147 +ER_VERBOSE_HINT = 10148 +ER_CANT_READ_ERRMSGS = 10149 +ER_CANT_INIT_DBS = 10150 +ER_LOG_OUTPUT_CONTRADICTORY = 10151 +ER_NO_CSV_NO_LOG_TABLES = 10152 +ER_RPL_REWRITEDB_MISSING_ARROW = 10153 +ER_RPL_REWRITEDB_EMPTY_FROM = 10154 +ER_RPL_REWRITEDB_EMPTY_TO = 10155 +ER_LOG_FILES_GIVEN_LOG_OUTPUT_IS_TABLE = 10156 +ER_LOG_FILE_INVALID = 10157 +ER_LOWER_CASE_TABLE_NAMES_CS_DD_ON_CI_FS_UNSUPPORTED = 10158 +ER_LOWER_CASE_TABLE_NAMES_USING_2 = 10159 +ER_LOWER_CASE_TABLE_NAMES_USING_0 = 10160 +ER_NEED_LOG_BIN = 10161 +ER_NEED_FILE_INSTEAD_OF_DIR = 10162 +ER_LOG_BIN_BETTER_WITH_NAME = 10163 +ER_BINLOG_NEEDS_SERVERID = 10164 +ER_RPL_CANT_MAKE_PATHS = 10165 +ER_CANT_INITIALIZE_GTID = 10166 +ER_CANT_INITIALIZE_EARLY_PLUGINS = 10167 +ER_CANT_INITIALIZE_BUILTIN_PLUGINS = 10168 +ER_CANT_INITIALIZE_DYNAMIC_PLUGINS = 10169 +ER_PERFSCHEMA_INIT_FAILED = 10170 +ER_STACKSIZE_UNEXPECTED = 10171 +ER_CANT_SET_DATADIR = 10172 +ER_CANT_STAT_DATADIR = 10173 +ER_CANT_CHOWN_DATADIR = 10174 +ER_CANT_SET_UP_PERSISTED_VALUES = 10175 +ER_CANT_SAVE_GTIDS = 10176 +ER_AUTH_CANT_SET_DEFAULT_PLUGIN = 10177 +ER_CANT_JOIN_SHUTDOWN_THREAD = 10178 +ER_CANT_HASH_DO_AND_IGNORE_RULES = 10179 +ER_CANT_OPEN_CA = 10180 +ER_CANT_ACCESS_CAPATH = 10181 +ER_SSL_TRYING_DATADIR_DEFAULTS = 10182 +ER_AUTO_OPTIONS_FAILED = 10183 +ER_CANT_INIT_TIMER = 10184 +ER_SERVERID_TOO_LARGE = 10185 +ER_DEFAULT_SE_UNAVAILABLE = 10186 +ER_CANT_OPEN_ERROR_LOG = 10187 +ER_INVALID_ERROR_LOG_NAME = 10188 +ER_RPL_INFINITY_DENIED = 10189 +ER_RPL_INFINITY_IGNORED = 10190 +ER_NDB_TABLES_NOT_READY = 10191 +ER_TABLE_CHECK_INTACT = 10192 +ER_DD_TABLESPACE_NOT_FOUND = 10193 +ER_DD_TRG_CONNECTION_COLLATION_MISSING = 10194 +ER_DD_TRG_DB_COLLATION_MISSING = 10195 +ER_DD_TRG_DEFINER_OOM = 10196 +ER_DD_TRG_FILE_UNREADABLE = 10197 +ER_TRG_CANT_PARSE = 10198 +ER_DD_TRG_CANT_ADD = 10199 +ER_DD_CANT_RESOLVE_VIEW = 10200 +ER_DD_VIEW_WITHOUT_DEFINER = 10201 +ER_PLUGIN_INIT_FAILED = 10202 +ER_RPL_TRX_DELEGATES_INIT_FAILED = 10203 +ER_RPL_BINLOG_STORAGE_DELEGATES_INIT_FAILED = 10204 +ER_RPL_BINLOG_TRANSMIT_DELEGATES_INIT_FAILED = 10205 +ER_RPL_BINLOG_RELAY_DELEGATES_INIT_FAILED = 10206 +ER_RPL_PLUGIN_FUNCTION_FAILED = 10207 +ER_SQL_HA_READ_FAILED = 10208 +ER_SR_BOGUS_VALUE = 10209 +ER_SR_INVALID_CONTEXT = 10210 +ER_READING_TABLE_FAILED = 10211 +ER_DES_FILE_WRONG_KEY = 10212 +ER_CANT_SET_PERSISTED = 10213 +ER_JSON_PARSE_ERROR = 10214 +ER_CONFIG_OPTION_WITHOUT_GROUP = 10215 +ER_VALGRIND_DO_QUICK_LEAK_CHECK = 10216 +ER_VALGRIND_COUNT_LEAKS = 10217 +ER_LOAD_DATA_INFILE_FAILED_IN_UNEXPECTED_WAY = 10218 +ER_UNKNOWN_ERROR_NUMBER = 10219 +ER_UDF_CANT_ALLOC_FOR_STRUCTURES = 10220 +ER_UDF_CANT_ALLOC_FOR_FUNCTION = 10221 +ER_UDF_INVALID_ROW_IN_FUNCTION_TABLE = 10222 +ER_UDF_CANT_OPEN_FUNCTION_TABLE = 10223 +ER_XA_RECOVER_FOUND_TRX_IN_SE = 10224 +ER_XA_RECOVER_FOUND_XA_TRX = 10225 +ER_XA_IGNORING_XID = 10226 +ER_XA_COMMITTING_XID = 10227 +ER_XA_ROLLING_BACK_XID = 10228 +ER_XA_STARTING_RECOVERY = 10229 +ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER = 10230 +ER_XA_RECOVER_EXPLANATION = 10231 +ER_XA_RECOVERY_DONE = 10232 +ER_TRX_GTID_COLLECT_REJECT = 10233 +ER_SQL_AUTHOR_DEFAULT_ROLES_FAIL = 10234 +ER_SQL_USER_TABLE_CREATE_WARNING = 10235 +ER_SQL_USER_TABLE_ALTER_WARNING = 10236 +ER_ROW_IN_WRONG_PARTITION_PLEASE_REPAIR = 10237 +ER_MYISAM_CRASHED_ERROR_IN_THREAD = 10238 +ER_MYISAM_CRASHED_ERROR_IN = 10239 +ER_TOO_MANY_STORAGE_ENGINES = 10240 +ER_SE_TYPECODE_CONFLICT = 10241 +ER_TRX_WRITE_SET_OOM = 10242 +ER_HANDLERTON_OOM = 10243 +ER_CONN_SHM_LISTENER = 10244 +ER_CONN_SHM_CANT_CREATE_SERVICE = 10245 +ER_CONN_SHM_CANT_CREATE_CONNECTION = 10246 +ER_CONN_PIP_CANT_CREATE_EVENT = 10247 +ER_CONN_PIP_CANT_CREATE_PIPE = 10248 +ER_CONN_PER_THREAD_NO_THREAD = 10249 +ER_CONN_TCP_NO_SOCKET = 10250 +ER_CONN_TCP_CREATED = 10251 +ER_CONN_TCP_ADDRESS = 10252 +ER_CONN_TCP_IPV6_AVAILABLE = 10253 +ER_CONN_TCP_IPV6_UNAVAILABLE = 10254 +ER_CONN_TCP_ERROR_WITH_STRERROR = 10255 +ER_CONN_TCP_CANT_RESOLVE_HOSTNAME = 10256 +ER_CONN_TCP_IS_THERE_ANOTHER_USING_PORT = 10257 +ER_CONN_UNIX_IS_THERE_ANOTHER_USING_SOCKET = 10258 +ER_CONN_UNIX_PID_CLAIMED_SOCKET_FILE = 10259 +ER_CONN_TCP_CANT_RESET_V6ONLY = 10260 +ER_CONN_TCP_BIND_RETRY = 10261 +ER_CONN_TPC_BIND_FAIL = 10262 +ER_CONN_TCP_IP_NOT_LOGGED = 10263 +ER_CONN_TCP_RESOLVE_INFO = 10264 +ER_CONN_TCP_START_FAIL = 10265 +ER_CONN_TCP_LISTEN_FAIL = 10266 +ER_CONN_UNIX_PATH_TOO_LONG = 10267 +ER_CONN_UNIX_LOCK_FILE_FAIL = 10268 +ER_CONN_UNIX_NO_FD = 10269 +ER_CONN_UNIX_NO_BIND_NO_START = 10270 +ER_CONN_UNIX_LISTEN_FAILED = 10271 +ER_CONN_UNIX_LOCK_FILE_GIVING_UP = 10272 +ER_CONN_UNIX_LOCK_FILE_CANT_CREATE = 10273 +ER_CONN_UNIX_LOCK_FILE_CANT_OPEN = 10274 +ER_CONN_UNIX_LOCK_FILE_CANT_READ = 10275 +ER_CONN_UNIX_LOCK_FILE_EMPTY = 10276 +ER_CONN_UNIX_LOCK_FILE_PIDLESS = 10277 +ER_CONN_UNIX_LOCK_FILE_CANT_WRITE = 10278 +ER_CONN_UNIX_LOCK_FILE_CANT_DELETE = 10279 +ER_CONN_UNIX_LOCK_FILE_CANT_SYNC = 10280 +ER_CONN_UNIX_LOCK_FILE_CANT_CLOSE = 10281 +ER_CONN_SOCKET_SELECT_FAILED = 10282 +ER_CONN_SOCKET_ACCEPT_FAILED = 10283 +ER_AUTH_RSA_CANT_FIND = 10284 +ER_AUTH_RSA_CANT_PARSE = 10285 +ER_AUTH_RSA_CANT_READ = 10286 +ER_AUTH_RSA_FILES_NOT_FOUND = 10287 +ER_CONN_ATTR_TRUNCATED = 10288 +ER_X509_CIPHERS_MISMATCH = 10289 +ER_X509_ISSUER_MISMATCH = 10290 +ER_X509_SUBJECT_MISMATCH = 10291 +ER_AUTH_CANT_ACTIVATE_ROLE = 10292 +ER_X509_NEEDS_RSA_PRIVKEY = 10293 +ER_X509_CANT_WRITE_KEY = 10294 +ER_X509_CANT_CHMOD_KEY = 10295 +ER_X509_CANT_READ_CA_KEY = 10296 +ER_X509_CANT_READ_CA_CERT = 10297 +ER_X509_CANT_CREATE_CERT = 10298 +ER_X509_CANT_WRITE_CERT = 10299 +ER_AUTH_CANT_CREATE_RSA_PAIR = 10300 +ER_AUTH_CANT_WRITE_PRIVKEY = 10301 +ER_AUTH_CANT_WRITE_PUBKEY = 10302 +ER_AUTH_SSL_CONF_PREVENTS_CERT_GENERATION = 10303 +ER_AUTH_USING_EXISTING_CERTS = 10304 +ER_AUTH_CERTS_SAVED_TO_DATADIR = 10305 +ER_AUTH_CERT_GENERATION_DISABLED = 10306 +ER_AUTH_RSA_CONF_PREVENTS_KEY_GENERATION = 10307 +ER_AUTH_KEY_GENERATION_SKIPPED_PAIR_PRESENT = 10308 +ER_AUTH_KEYS_SAVED_TO_DATADIR = 10309 +ER_AUTH_KEY_GENERATION_DISABLED = 10310 +ER_AUTHCACHE_PROXIES_PRIV_SKIPPED_NEEDS_RESOLVE = 10311 +ER_AUTHCACHE_PLUGIN_MISSING = 10312 +ER_AUTHCACHE_PLUGIN_CONFIG = 10313 +OBSOLETE_ER_AUTHCACHE_ROLE_TABLES_DODGY = 10314 +ER_AUTHCACHE_USER_SKIPPED_NEEDS_RESOLVE = 10315 +ER_AUTHCACHE_USER_TABLE_DODGY = 10316 +ER_AUTHCACHE_USER_IGNORED_DEPRECATED_PASSWORD = 10317 +ER_AUTHCACHE_USER_IGNORED_NEEDS_PLUGIN = 10318 +ER_AUTHCACHE_USER_IGNORED_INVALID_PASSWORD = 10319 +ER_AUTHCACHE_EXPIRED_PASSWORD_UNSUPPORTED = 10320 +ER_NO_SUPER_WITHOUT_USER_PLUGIN = 10321 +ER_AUTHCACHE_DB_IGNORED_EMPTY_NAME = 10322 +ER_AUTHCACHE_DB_SKIPPED_NEEDS_RESOLVE = 10323 +ER_AUTHCACHE_DB_ENTRY_LOWERCASED_REVOKE_WILL_FAIL = 10324 +ER_AUTHCACHE_TABLE_PROXIES_PRIV_MISSING = 10325 +ER_AUTHCACHE_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES = 10326 +ER_AUTHCACHE_CANT_INIT_GRANT_SUBSYSTEM = 10327 +ER_AUTHCACHE_PROCS_PRIV_SKIPPED_NEEDS_RESOLVE = 10328 +ER_AUTHCACHE_PROCS_PRIV_ENTRY_IGNORED_BAD_ROUTINE_TYPE = 10329 +ER_AUTHCACHE_TABLES_PRIV_SKIPPED_NEEDS_RESOLVE = 10330 +ER_USER_NOT_IN_EXTRA_USERS_BINLOG_POSSIBLY_INCOMPLETE = 10331 +ER_DD_SCHEMA_NOT_FOUND = 10332 +ER_DD_TABLE_NOT_FOUND = 10333 +ER_DD_SE_INIT_FAILED = 10334 +ER_DD_ABORTING_PARTIAL_UPGRADE = 10335 +ER_DD_FRM_EXISTS_FOR_TABLE = 10336 +ER_DD_CREATED_FOR_UPGRADE = 10337 +ER_ERRMSG_CANT_FIND_FILE = 10338 +ER_ERRMSG_LOADING_55_STYLE = 10339 +ER_ERRMSG_MISSING_IN_FILE = 10340 +ER_ERRMSG_OOM = 10341 +ER_ERRMSG_CANT_READ = 10342 +ER_TABLE_INCOMPATIBLE_DECIMAL_FIELD = 10343 +ER_TABLE_INCOMPATIBLE_YEAR_FIELD = 10344 +ER_INVALID_CHARSET_AND_DEFAULT_IS_MB = 10345 +ER_TABLE_WRONG_KEY_DEFINITION = 10346 +ER_CANT_OPEN_FRM_FILE = 10347 +ER_CANT_READ_FRM_FILE = 10348 +ER_TABLE_CREATED_WITH_DIFFERENT_VERSION = 10349 +ER_VIEW_UNPARSABLE = 10350 +ER_FILE_TYPE_UNKNOWN = 10351 +ER_INVALID_INFO_IN_FRM = 10352 +ER_CANT_OPEN_AND_LOCK_PRIVILEGE_TABLES = 10353 +ER_AUDIT_PLUGIN_DOES_NOT_SUPPORT_AUDIT_AUTH_EVENTS = 10354 +ER_AUDIT_PLUGIN_HAS_INVALID_DATA = 10355 +ER_TZ_OOM_INITIALIZING_TIME_ZONES = 10356 +ER_TZ_CANT_OPEN_AND_LOCK_TIME_ZONE_TABLE = 10357 +ER_TZ_OOM_LOADING_LEAP_SECOND_TABLE = 10358 +ER_TZ_TOO_MANY_LEAPS_IN_LEAP_SECOND_TABLE = 10359 +ER_TZ_ERROR_LOADING_LEAP_SECOND_TABLE = 10360 +ER_TZ_UNKNOWN_OR_ILLEGAL_DEFAULT_TIME_ZONE = 10361 +ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE = 10362 +ER_TZ_CANT_FIND_DESCRIPTION_FOR_TIME_ZONE_ID = 10363 +ER_TZ_TRANSITION_TYPE_TABLE_TYPE_TOO_LARGE = 10364 +ER_TZ_TRANSITION_TYPE_TABLE_ABBREVIATIONS_EXCEED_SPACE = 10365 +ER_TZ_TRANSITION_TYPE_TABLE_LOAD_ERROR = 10366 +ER_TZ_TRANSITION_TABLE_TOO_MANY_TRANSITIONS = 10367 +ER_TZ_TRANSITION_TABLE_BAD_TRANSITION_TYPE = 10368 +ER_TZ_TRANSITION_TABLE_LOAD_ERROR = 10369 +ER_TZ_NO_TRANSITION_TYPES_IN_TIME_ZONE = 10370 +ER_TZ_OOM_LOADING_TIME_ZONE_DESCRIPTION = 10371 +ER_TZ_CANT_BUILD_MKTIME_MAP = 10372 +ER_TZ_OOM_WHILE_LOADING_TIME_ZONE = 10373 +ER_TZ_OOM_WHILE_SETTING_TIME_ZONE = 10374 +ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_CONDITION_BAD = 10375 +ER_SLAVE_SQL_THREAD_STOPPED_UNTIL_POSITION_REACHED = 10376 +ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_ALREADY_APPLIED = 10377 +ER_SLAVE_SQL_THREAD_STOPPED_BEFORE_GTIDS_REACHED = 10378 +ER_SLAVE_SQL_THREAD_STOPPED_AFTER_GTIDS_REACHED = 10379 +ER_SLAVE_SQL_THREAD_STOPPED_GAP_TRX_PROCESSED = 10380 +ER_GROUP_REPLICATION_PLUGIN_NOT_INSTALLED = 10381 +ER_GTID_ALREADY_ADDED_BY_USER = 10382 +ER_FAILED_TO_DELETE_FROM_GTID_EXECUTED_TABLE = 10383 +ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE = 10384 +ER_FAILED_TO_COMPRESS_GTID_EXECUTED_TABLE_OOM = 10385 +ER_FAILED_TO_INIT_THREAD_ATTR_FOR_GTID_TABLE_COMPRESSION = 10386 +ER_FAILED_TO_CREATE_GTID_TABLE_COMPRESSION_THREAD = 10387 +ER_FAILED_TO_JOIN_GTID_TABLE_COMPRESSION_THREAD = 10388 +ER_NPIPE_FAILED_TO_INIT_SECURITY_DESCRIPTOR = 10389 +ER_NPIPE_FAILED_TO_SET_SECURITY_DESCRIPTOR = 10390 +ER_NPIPE_PIPE_ALREADY_IN_USE = 10391 +ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS_ON_START = 10392 +ER_NDB_SLAVE_SAW_EPOCH_LOWER_THAN_PREVIOUS = 10393 +ER_NDB_SLAVE_SAW_ALREADY_COMMITTED_EPOCH = 10394 +ER_NDB_SLAVE_PREVIOUS_EPOCH_NOT_COMMITTED = 10395 +ER_NDB_SLAVE_MISSING_DATA_FOR_TIMESTAMP_COLUMN = 10396 +ER_NDB_SLAVE_LOGGING_EXCEPTIONS_TO = 10397 +ER_NDB_SLAVE_LOW_EPOCH_RESOLUTION = 10398 +ER_NDB_INFO_FOUND_UNEXPECTED_FIELD_TYPE = 10399 +ER_NDB_INFO_FAILED_TO_CREATE_NDBINFO = 10400 +ER_NDB_INFO_FAILED_TO_INIT_NDBINFO = 10401 +ER_NDB_CLUSTER_WRONG_NUMBER_OF_FUNCTION_ARGUMENTS = 10402 +ER_NDB_CLUSTER_SCHEMA_INFO = 10403 +ER_NDB_CLUSTER_GENERIC_MESSAGE = 10404 +ER_RPL_CANT_OPEN_INFO_TABLE = 10405 +ER_RPL_CANT_SCAN_INFO_TABLE = 10406 +ER_RPL_CORRUPTED_INFO_TABLE = 10407 +ER_RPL_CORRUPTED_KEYS_IN_INFO_TABLE = 10408 +ER_RPL_WORKER_ID_IS = 10409 +ER_RPL_INCONSISTENT_TIMESTAMPS_IN_TRX = 10410 +ER_RPL_INCONSISTENT_SEQUENCE_NO_IN_TRX = 10411 +ER_RPL_CHANNELS_REQUIRE_TABLES_AS_INFO_REPOSITORIES = 10412 +ER_RPL_CHANNELS_REQUIRE_NON_ZERO_SERVER_ID = 10413 +ER_RPL_REPO_SHOULD_BE_TABLE = 10414 +ER_RPL_ERROR_CREATING_MASTER_INFO = 10415 +ER_RPL_ERROR_CHANGING_MASTER_INFO_REPO_TYPE = 10416 +ER_RPL_CHANGING_RELAY_LOG_INFO_REPO_TYPE_FAILED_DUE_TO_GAPS = 10417 +ER_RPL_ERROR_CREATING_RELAY_LOG_INFO = 10418 +ER_RPL_ERROR_CHANGING_RELAY_LOG_INFO_REPO_TYPE = 10419 +ER_RPL_FAILED_TO_DELETE_FROM_SLAVE_WORKERS_INFO_REPOSITORY = 10420 +ER_RPL_FAILED_TO_RESET_STATE_IN_SLAVE_INFO_REPOSITORY = 10421 +ER_RPL_ERROR_CHECKING_REPOSITORY = 10422 +ER_RPL_SLAVE_GENERIC_MESSAGE = 10423 +ER_RPL_SLAVE_COULD_NOT_CREATE_CHANNEL_LIST = 10424 +ER_RPL_MULTISOURCE_REQUIRES_TABLE_TYPE_REPOSITORIES = 10425 +ER_RPL_SLAVE_FAILED_TO_INIT_A_MASTER_INFO_STRUCTURE = 10426 +ER_RPL_SLAVE_FAILED_TO_INIT_MASTER_INFO_STRUCTURE = 10427 +ER_RPL_SLAVE_FAILED_TO_CREATE_CHANNEL_FROM_MASTER_INFO = 10428 +ER_RPL_FAILED_TO_CREATE_NEW_INFO_FILE = 10429 +ER_RPL_FAILED_TO_CREATE_CACHE_FOR_INFO_FILE = 10430 +ER_RPL_FAILED_TO_OPEN_INFO_FILE = 10431 +ER_RPL_GTID_MEMORY_FINALLY_AVAILABLE = 10432 +ER_SERVER_COST_UNKNOWN_COST_CONSTANT = 10433 +ER_SERVER_COST_INVALID_COST_CONSTANT = 10434 +ER_ENGINE_COST_UNKNOWN_COST_CONSTANT = 10435 +ER_ENGINE_COST_UNKNOWN_STORAGE_ENGINE = 10436 +ER_ENGINE_COST_INVALID_DEVICE_TYPE_FOR_SE = 10437 +ER_ENGINE_COST_INVALID_CONST_CONSTANT_FOR_SE_AND_DEVICE = 10438 +ER_SERVER_COST_FAILED_TO_READ = 10439 +ER_ENGINE_COST_FAILED_TO_READ = 10440 +ER_FAILED_TO_OPEN_COST_CONSTANT_TABLES = 10441 +ER_RPL_UNSUPPORTED_UNIGNORABLE_EVENT_IN_STREAM = 10442 +ER_RPL_GTID_LOG_EVENT_IN_STREAM = 10443 +ER_RPL_UNEXPECTED_BEGIN_IN_STREAM = 10444 +ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM = 10445 +ER_RPL_UNEXPECTED_XA_ROLLBACK_IN_STREAM = 10446 +ER_EVENT_EXECUTION_FAILED_CANT_AUTHENTICATE_USER = 10447 +ER_EVENT_EXECUTION_FAILED_USER_LOST_EVEN_PRIVILEGE = 10448 +ER_EVENT_ERROR_DURING_COMPILATION = 10449 +ER_EVENT_DROPPING = 10450 +ER_NDB_SCHEMA_GENERIC_MESSAGE = 10451 +ER_RPL_INCOMPATIBLE_DECIMAL_IN_RBR = 10452 +ER_INIT_ROOT_WITHOUT_PASSWORD = 10453 +ER_INIT_GENERATING_TEMP_PASSWORD_FOR_ROOT = 10454 +ER_INIT_CANT_OPEN_BOOTSTRAP_FILE = 10455 +ER_INIT_BOOTSTRAP_COMPLETE = 10456 +ER_INIT_DATADIR_NOT_EMPTY_WONT_INITIALIZE = 10457 +ER_INIT_DATADIR_EXISTS_WONT_INITIALIZE = 10458 +ER_INIT_DATADIR_EXISTS_AND_PATH_TOO_LONG_WONT_INITIALIZE = 10459 +ER_INIT_DATADIR_EXISTS_AND_NOT_WRITABLE_WONT_INITIALIZE = 10460 +ER_INIT_CREATING_DD = 10461 +ER_RPL_BINLOG_STARTING_DUMP = 10462 +ER_RPL_BINLOG_MASTER_SENDS_HEARTBEAT = 10463 +ER_RPL_BINLOG_SKIPPING_REMAINING_HEARTBEAT_INFO = 10464 +ER_RPL_BINLOG_MASTER_USES_CHECKSUM_AND_SLAVE_CANT = 10465 +ER_NDB_QUERY_FAILED = 10466 +ER_KILLING_THREAD = 10467 +ER_DETACHING_SESSION_LEFT_BY_PLUGIN = 10468 +ER_CANT_DETACH_SESSION_LEFT_BY_PLUGIN = 10469 +ER_DETACHED_SESSIONS_LEFT_BY_PLUGIN = 10470 +ER_FAILED_TO_DECREMENT_NUMBER_OF_THREADS = 10471 +ER_PLUGIN_DID_NOT_DEINITIALIZE_THREADS = 10472 +ER_KILLED_THREADS_OF_PLUGIN = 10473 +ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_UNKNOWN = 10474 +ER_NDB_SLAVE_MAX_REPLICATED_EPOCH_SET_TO = 10475 +ER_NDB_NODE_ID_AND_MANAGEMENT_SERVER_INFO = 10476 +ER_NDB_DISCONNECT_INFO = 10477 +ER_NDB_COLUMN_DEFAULTS_DIFFER = 10478 +ER_NDB_COLUMN_SHOULD_NOT_HAVE_NATIVE_DEFAULT = 10479 +ER_NDB_FIELD_INFO = 10480 +ER_NDB_COLUMN_INFO = 10481 +ER_NDB_OOM_IN_FIX_UNIQUE_INDEX_ATTR_ORDER = 10482 +ER_NDB_SLAVE_MALFORMED_EVENT_RECEIVED_ON_TABLE = 10483 +ER_NDB_SLAVE_CONFLICT_FUNCTION_REQUIRES_ROLE = 10484 +ER_NDB_SLAVE_CONFLICT_DETECTION_REQUIRES_TRANSACTION_IDS = 10485 +ER_NDB_SLAVE_BINLOG_MISSING_INFO_FOR_CONFLICT_DETECTION = 10486 +ER_NDB_ERROR_IN_READAUTOINCREMENTVALUE = 10487 +ER_NDB_FOUND_UNCOMMITTED_AUTOCOMMIT = 10488 +ER_NDB_SLAVE_TOO_MANY_RETRIES = 10489 +ER_NDB_SLAVE_ERROR_IN_UPDATE_CREATE_INFO = 10490 +ER_NDB_SLAVE_CANT_ALLOCATE_TABLE_SHARE = 10491 +ER_NDB_BINLOG_ERROR_INFO_FROM_DA = 10492 +ER_NDB_BINLOG_CREATE_TABLE_EVENT = 10493 +ER_NDB_BINLOG_FAILED_CREATE_TABLE_EVENT_OPERATIONS = 10494 +ER_NDB_BINLOG_RENAME_EVENT = 10495 +ER_NDB_BINLOG_FAILED_CREATE_EVENT_OPERATIONS_DURING_RENAME = 10496 +ER_NDB_UNEXPECTED_RENAME_TYPE = 10497 +ER_NDB_ERROR_IN_GET_AUTO_INCREMENT = 10498 +ER_NDB_CREATING_SHARE_IN_OPEN = 10499 +ER_NDB_TABLE_OPENED_READ_ONLY = 10500 +ER_NDB_INITIALIZE_GIVEN_CLUSTER_PLUGIN_DISABLED = 10501 +ER_NDB_BINLOG_FORMAT_CHANGED_FROM_STMT_TO_MIXED = 10502 +ER_NDB_TRAILING_SHARE_RELEASED_BY_CLOSE_CACHED_TABLES = 10503 +ER_NDB_SHARE_ALREADY_EXISTS = 10504 +ER_NDB_HANDLE_TRAILING_SHARE_INFO = 10505 +ER_NDB_CLUSTER_GET_SHARE_INFO = 10506 +ER_NDB_CLUSTER_REAL_FREE_SHARE_INFO = 10507 +ER_NDB_CLUSTER_REAL_FREE_SHARE_DROP_FAILED = 10508 +ER_NDB_CLUSTER_FREE_SHARE_INFO = 10509 +ER_NDB_CLUSTER_MARK_SHARE_DROPPED_INFO = 10510 +ER_NDB_CLUSTER_MARK_SHARE_DROPPED_DESTROYING_SHARE = 10511 +ER_NDB_CLUSTER_OOM_THD_NDB = 10512 +ER_NDB_BINLOG_NDB_TABLES_INITIALLY_READ_ONLY = 10513 +ER_NDB_UTIL_THREAD_OOM = 10514 +ER_NDB_ILLEGAL_VALUE_FOR_NDB_RECV_THREAD_CPU_MASK = 10515 +ER_NDB_TOO_MANY_CPUS_IN_NDB_RECV_THREAD_CPU_MASK = 10516 +ER_DBUG_CHECK_SHARES_OPEN = 10517 +ER_DBUG_CHECK_SHARES_INFO = 10518 +ER_DBUG_CHECK_SHARES_DROPPED = 10519 +ER_INVALID_OR_OLD_TABLE_OR_DB_NAME = 10520 +ER_TC_RECOVERING_AFTER_CRASH_USING = 10521 +ER_TC_CANT_AUTO_RECOVER_WITH_TC_HEURISTIC_RECOVER = 10522 +ER_TC_BAD_MAGIC_IN_TC_LOG = 10523 +ER_TC_NEED_N_SE_SUPPORTING_2PC_FOR_RECOVERY = 10524 +ER_TC_RECOVERY_FAILED_THESE_ARE_YOUR_OPTIONS = 10525 +ER_TC_HEURISTIC_RECOVERY_MODE = 10526 +ER_TC_HEURISTIC_RECOVERY_FAILED = 10527 +ER_TC_RESTART_WITHOUT_TC_HEURISTIC_RECOVER = 10528 +ER_RPL_SLAVE_FAILED_TO_CREATE_OR_RECOVER_INFO_REPOSITORIES = 10529 +ER_RPL_SLAVE_AUTO_POSITION_IS_1_AND_GTID_MODE_IS_OFF = 10530 +ER_RPL_SLAVE_CANT_START_SLAVE_FOR_CHANNEL = 10531 +ER_RPL_SLAVE_CANT_STOP_SLAVE_FOR_CHANNEL = 10532 +ER_RPL_RECOVERY_NO_ROTATE_EVENT_FROM_MASTER = 10533 +ER_RPL_RECOVERY_ERROR_READ_RELAY_LOG = 10534 +ER_RPL_RECOVERY_ERROR_FREEING_IO_CACHE = 10535 +ER_RPL_RECOVERY_SKIPPED_GROUP_REPLICATION_CHANNEL = 10536 +ER_RPL_RECOVERY_ERROR = 10537 +ER_RPL_RECOVERY_IO_ERROR_READING_RELAY_LOG_INDEX = 10538 +ER_RPL_RECOVERY_FILE_MASTER_POS_INFO = 10539 +ER_RPL_RECOVERY_REPLICATE_SAME_SERVER_ID_REQUIRES_POSITION = 10540 +ER_RPL_MTS_RECOVERY_STARTING_COORDINATOR = 10541 +ER_RPL_MTS_RECOVERY_FAILED_TO_START_COORDINATOR = 10542 +ER_RPL_MTS_AUTOMATIC_RECOVERY_FAILED = 10543 +ER_RPL_MTS_RECOVERY_CANT_OPEN_RELAY_LOG = 10544 +ER_RPL_MTS_RECOVERY_SUCCESSFUL = 10545 +ER_RPL_SERVER_ID_MISSING = 10546 +ER_RPL_CANT_CREATE_SLAVE_THREAD = 10547 +ER_RPL_SLAVE_IO_THREAD_WAS_KILLED = 10548 +ER_RPL_SLAVE_MASTER_UUID_HAS_CHANGED = 10549 +ER_RPL_SLAVE_USES_CHECKSUM_AND_MASTER_PRE_50 = 10550 +ER_RPL_SLAVE_SECONDS_BEHIND_MASTER_DUBIOUS = 10551 +ER_RPL_SLAVE_CANT_FLUSH_MASTER_INFO_FILE = 10552 +ER_RPL_SLAVE_REPORT_HOST_TOO_LONG = 10553 +ER_RPL_SLAVE_REPORT_USER_TOO_LONG = 10554 +ER_RPL_SLAVE_REPORT_PASSWORD_TOO_LONG = 10555 +ER_RPL_SLAVE_ERROR_RETRYING = 10556 +ER_RPL_SLAVE_ERROR_READING_FROM_SERVER = 10557 +ER_RPL_SLAVE_DUMP_THREAD_KILLED_BY_MASTER = 10558 +ER_RPL_MTS_STATISTICS = 10559 +ER_RPL_MTS_RECOVERY_COMPLETE = 10560 +ER_RPL_SLAVE_CANT_INIT_RELAY_LOG_POSITION = 10561 +ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_STARTED = 10562 +ER_RPL_SLAVE_IO_THREAD_KILLED = 10563 +ER_RPL_SLAVE_IO_THREAD_CANT_REGISTER_ON_MASTER = 10564 +ER_RPL_SLAVE_FORCING_TO_RECONNECT_IO_THREAD = 10565 +ER_RPL_SLAVE_ERROR_REQUESTING_BINLOG_DUMP = 10566 +ER_RPL_LOG_ENTRY_EXCEEDS_SLAVE_MAX_ALLOWED_PACKET = 10567 +ER_RPL_SLAVE_STOPPING_AS_MASTER_OOM = 10568 +ER_RPL_SLAVE_IO_THREAD_ABORTED_WAITING_FOR_RELAY_LOG_SPACE = 10569 +ER_RPL_SLAVE_IO_THREAD_EXITING = 10570 +ER_RPL_SLAVE_CANT_INITIALIZE_SLAVE_WORKER = 10571 +ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO_FOR_WORKER = 10572 +ER_RPL_ERROR_LOOKING_FOR_LOG = 10573 +ER_RPL_MTS_GROUP_RECOVERY_RELAY_LOG_INFO = 10574 +ER_RPL_CANT_FIND_FOLLOWUP_FILE = 10575 +ER_RPL_MTS_CHECKPOINT_PERIOD_DIFFERS_FROM_CNT = 10576 +ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED = 10577 +ER_RPL_SLAVE_WORKER_THREAD_CREATION_FAILED_WITH_ERRNO = 10578 +ER_RPL_SLAVE_FAILED_TO_INIT_PARTITIONS_HASH = 10579 +ER_RPL_SLAVE_NDB_TABLES_NOT_AVAILABLE = 10580 +ER_RPL_SLAVE_SQL_THREAD_STARTING = 10581 +ER_RPL_SLAVE_SKIP_COUNTER_EXECUTED = 10582 +ER_RPL_SLAVE_ADDITIONAL_ERROR_INFO_FROM_DA = 10583 +ER_RPL_SLAVE_ERROR_INFO_FROM_DA = 10584 +ER_RPL_SLAVE_ERROR_LOADING_USER_DEFINED_LIBRARY = 10585 +ER_RPL_SLAVE_ERROR_RUNNING_QUERY = 10586 +ER_RPL_SLAVE_SQL_THREAD_EXITING = 10587 +ER_RPL_SLAVE_READ_INVALID_EVENT_FROM_MASTER = 10588 +ER_RPL_SLAVE_QUEUE_EVENT_FAILED_INVALID_CONFIGURATION = 10589 +ER_RPL_SLAVE_IO_THREAD_DETECTED_UNEXPECTED_EVENT_SEQUENCE = 10590 +ER_RPL_SLAVE_CANT_USE_CHARSET = 10591 +ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_RESUMED = 10592 +ER_RPL_SLAVE_NEXT_LOG_IS_ACTIVE = 10593 +ER_RPL_SLAVE_NEXT_LOG_IS_INACTIVE = 10594 +ER_RPL_SLAVE_SQL_THREAD_IO_ERROR_READING_EVENT = 10595 +ER_RPL_SLAVE_ERROR_READING_RELAY_LOG_EVENTS = 10596 +ER_SLAVE_CHANGE_MASTER_TO_EXECUTED = 10597 +ER_RPL_SLAVE_NEW_MASTER_INFO_NEEDS_REPOS_TYPE_OTHER_THAN_FILE = 10598 +ER_RPL_FAILED_TO_STAT_LOG_IN_INDEX = 10599 +ER_RPL_LOG_NOT_FOUND_WHILE_COUNTING_RELAY_LOG_SPACE = 10600 +ER_SLAVE_CANT_USE_TEMPDIR = 10601 +ER_RPL_RELAY_LOG_NEEDS_FILE_NOT_DIRECTORY = 10602 +ER_RPL_RELAY_LOG_INDEX_NEEDS_FILE_NOT_DIRECTORY = 10603 +ER_RPL_PLEASE_USE_OPTION_RELAY_LOG = 10604 +ER_RPL_OPEN_INDEX_FILE_FAILED = 10605 +ER_RPL_CANT_INITIALIZE_GTID_SETS_IN_RLI_INIT_INFO = 10606 +ER_RPL_CANT_OPEN_LOG_IN_RLI_INIT_INFO = 10607 +ER_RPL_ERROR_WRITING_RELAY_LOG_CONFIGURATION = 10608 +ER_NDB_OOM_GET_NDB_BLOBS_VALUE = 10609 +ER_NDB_THREAD_TIMED_OUT = 10610 +ER_NDB_TABLE_IS_NOT_DISTRIBUTED = 10611 +ER_NDB_CREATING_TABLE = 10612 +ER_NDB_FLUSHING_TABLE_INFO = 10613 +ER_NDB_CLEANING_STRAY_TABLES = 10614 +ER_NDB_DISCOVERED_MISSING_DB = 10615 +ER_NDB_DISCOVERED_REMAINING_DB = 10616 +ER_NDB_CLUSTER_FIND_ALL_DBS_RETRY = 10617 +ER_NDB_CLUSTER_FIND_ALL_DBS_FAIL = 10618 +ER_NDB_SKIPPING_SETUP_TABLE = 10619 +ER_NDB_FAILED_TO_SET_UP_TABLE = 10620 +ER_NDB_MISSING_FRM_DISCOVERING = 10621 +ER_NDB_MISMATCH_IN_FRM_DISCOVERING = 10622 +ER_NDB_BINLOG_CLEANING_UP_SETUP_LEFTOVERS = 10623 +ER_NDB_WAITING_INFO = 10624 +ER_NDB_WAITING_INFO_WITH_MAP = 10625 +ER_NDB_TIMEOUT_WHILE_DISTRIBUTING = 10626 +ER_NDB_NOT_WAITING_FOR_DISTRIBUTING = 10627 +ER_NDB_DISTRIBUTED_INFO = 10628 +ER_NDB_DISTRIBUTION_COMPLETE = 10629 +ER_NDB_SCHEMA_DISTRIBUTION_FAILED = 10630 +ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_SUBSCRIBE = 10631 +ER_NDB_SCHEMA_DISTRIBUTION_REPORTS_UNSUBSCRIBE = 10632 +ER_NDB_BINLOG_CANT_DISCOVER_TABLE_FROM_SCHEMA_EVENT = 10633 +ER_NDB_BINLOG_SIGNALLING_UNKNOWN_VALUE = 10634 +ER_NDB_BINLOG_REPLY_TO = 10635 +ER_NDB_BINLOG_CANT_RELEASE_SLOCK = 10636 +ER_NDB_CANT_FIND_TABLE = 10637 +ER_NDB_DISCARDING_EVENT_NO_OBJ = 10638 +ER_NDB_DISCARDING_EVENT_ID_VERSION_MISMATCH = 10639 +ER_NDB_CLEAR_SLOCK_INFO = 10640 +ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE = 10641 +ER_NDB_BINLOG_ONLINE_ALTER_RENAME = 10642 +ER_NDB_BINLOG_CANT_REOPEN_SHADOW_TABLE = 10643 +ER_NDB_BINLOG_ONLINE_ALTER_RENAME_COMPLETE = 10644 +ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE = 10645 +ER_NDB_BINLOG_SKIPPING_RENAME_OF_LOCAL_TABLE = 10646 +ER_NDB_BINLOG_SKIPPING_DROP_OF_DB_CONTAINING_LOCAL_TABLES = 10647 +ER_NDB_BINLOG_GOT_DIST_PRIV_EVENT_FLUSHING_PRIVILEGES = 10648 +ER_NDB_BINLOG_GOT_SCHEMA_EVENT = 10649 +ER_NDB_BINLOG_SKIPPING_OLD_SCHEMA_OPERATION = 10650 +ER_NDB_CLUSTER_FAILURE = 10651 +ER_NDB_TABLES_INITIALLY_READ_ONLY_ON_RECONNECT = 10652 +ER_NDB_IGNORING_UNKNOWN_EVENT = 10653 +ER_NDB_BINLOG_OPENING_INDEX = 10654 +ER_NDB_BINLOG_CANT_LOCK_NDB_BINLOG_INDEX = 10655 +ER_NDB_BINLOG_INJECTING_RANDOM_WRITE_FAILURE = 10656 +ER_NDB_BINLOG_CANT_WRITE_TO_NDB_BINLOG_INDEX = 10657 +ER_NDB_BINLOG_WRITING_TO_NDB_BINLOG_INDEX = 10658 +ER_NDB_BINLOG_CANT_COMMIT_TO_NDB_BINLOG_INDEX = 10659 +ER_NDB_BINLOG_WRITE_TO_NDB_BINLOG_INDEX_FAILED_AFTER_KILL = 10660 +ER_NDB_BINLOG_USING_SERVER_ID_0_SLAVES_WILL_NOT = 10661 +ER_NDB_SERVER_ID_RESERVED_OR_TOO_LARGE = 10662 +ER_NDB_BINLOG_NDB_LOG_TRANSACTION_ID_REQUIRES_V2_ROW_EVENTS = 10663 +ER_NDB_BINLOG_NDB_LOG_APPLY_STATUS_FORCING_FULL_USE_WRITE = 10664 +ER_NDB_BINLOG_GENERIC_MESSAGE = 10665 +ER_NDB_CONFLICT_GENERIC_MESSAGE = 10666 +ER_NDB_TRANS_DEPENDENCY_TRACKER_ERROR = 10667 +ER_NDB_CONFLICT_FN_PARSE_ERROR = 10668 +ER_NDB_CONFLICT_FN_SETUP_ERROR = 10669 +ER_NDB_BINLOG_FAILED_TO_GET_TABLE = 10670 +ER_NDB_BINLOG_NOT_LOGGING = 10671 +ER_NDB_BINLOG_CREATE_TABLE_EVENT_FAILED = 10672 +ER_NDB_BINLOG_CREATE_TABLE_EVENT_INFO = 10673 +ER_NDB_BINLOG_DISCOVER_TABLE_EVENT_INFO = 10674 +ER_NDB_BINLOG_BLOB_REQUIRES_PK = 10675 +ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB = 10676 +ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_AND_CANT_DROP = 10677 +ER_NDB_BINLOG_CANT_CREATE_EVENT_IN_DB_DROPPED = 10678 +ER_NDB_BINLOG_DISCOVER_REUSING_OLD_EVENT_OPS = 10679 +ER_NDB_BINLOG_CREATING_NDBEVENTOPERATION_FAILED = 10680 +ER_NDB_BINLOG_CANT_CREATE_BLOB = 10681 +ER_NDB_BINLOG_NDBEVENT_EXECUTE_FAILED = 10682 +ER_NDB_CREATE_EVENT_OPS_LOGGING_INFO = 10683 +ER_NDB_BINLOG_CANT_DROP_EVENT_FROM_DB = 10684 +ER_NDB_TIMED_OUT_IN_DROP_TABLE = 10685 +ER_NDB_BINLOG_UNHANDLED_ERROR_FOR_TABLE = 10686 +ER_NDB_BINLOG_CLUSTER_FAILURE = 10687 +ER_NDB_BINLOG_UNKNOWN_NON_DATA_EVENT = 10688 +ER_NDB_BINLOG_INJECTOR_DISCARDING_ROW_EVENT_METADATA = 10689 +ER_NDB_REMAINING_OPEN_TABLES = 10690 +ER_NDB_REMAINING_OPEN_TABLE_INFO = 10691 +ER_NDB_COULD_NOT_GET_APPLY_STATUS_SHARE = 10692 +ER_NDB_BINLOG_SERVER_SHUTDOWN_DURING_NDB_CLUSTER_START = 10693 +ER_NDB_BINLOG_CLUSTER_RESTARTED_RESET_MASTER_SUGGESTED = 10694 +ER_NDB_BINLOG_CLUSTER_HAS_RECONNECTED = 10695 +ER_NDB_BINLOG_STARTING_LOG_AT_EPOCH = 10696 +ER_NDB_BINLOG_NDB_TABLES_WRITABLE = 10697 +ER_NDB_BINLOG_SHUTDOWN_DETECTED = 10698 +ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_WAITING = 10699 +ER_NDB_BINLOG_LOST_SCHEMA_CONNECTION_CONTINUING = 10700 +ER_NDB_BINLOG_ERROR_HANDLING_SCHEMA_EVENT = 10701 +ER_NDB_BINLOG_CANT_INJECT_APPLY_STATUS_WRITE_ROW = 10702 +ER_NDB_BINLOG_ERROR_DURING_GCI_ROLLBACK = 10703 +ER_NDB_BINLOG_ERROR_DURING_GCI_COMMIT = 10704 +ER_NDB_BINLOG_LATEST_TRX_IN_EPOCH_NOT_IN_BINLOG = 10705 +ER_NDB_BINLOG_RELEASING_EXTRA_SHARE_REFERENCES = 10706 +ER_NDB_BINLOG_REMAINING_OPEN_TABLES = 10707 +ER_NDB_BINLOG_REMAINING_OPEN_TABLE_INFO = 10708 +ER_TREE_CORRUPT_PARENT_SHOULD_POINT_AT_PARENT = 10709 +ER_TREE_CORRUPT_ROOT_SHOULD_BE_BLACK = 10710 +ER_TREE_CORRUPT_2_CONSECUTIVE_REDS = 10711 +ER_TREE_CORRUPT_RIGHT_IS_LEFT = 10712 +ER_TREE_CORRUPT_INCORRECT_BLACK_COUNT = 10713 +ER_WRONG_COUNT_FOR_ORIGIN = 10714 +ER_WRONG_COUNT_FOR_KEY = 10715 +ER_WRONG_COUNT_OF_ELEMENTS = 10716 +ER_RPL_ERROR_READING_SLAVE_WORKER_CONFIGURATION = 10717 +ER_RPL_ERROR_WRITING_SLAVE_WORKER_CONFIGURATION = 10718 +ER_RPL_FAILED_TO_OPEN_RELAY_LOG = 10719 +ER_RPL_WORKER_CANT_READ_RELAY_LOG = 10720 +ER_RPL_WORKER_CANT_FIND_NEXT_RELAY_LOG = 10721 +ER_RPL_MTS_SLAVE_COORDINATOR_HAS_WAITED = 10722 +ER_BINLOG_FAILED_TO_WRITE_DROP_FOR_TEMP_TABLES = 10723 +ER_BINLOG_OOM_WRITING_DELETE_WHILE_OPENING_HEAP_TABLE = 10724 +ER_FAILED_TO_REPAIR_TABLE = 10725 +ER_FAILED_TO_REMOVE_TEMP_TABLE = 10726 +ER_SYSTEM_TABLE_NOT_TRANSACTIONAL = 10727 +ER_RPL_ERROR_WRITING_MASTER_CONFIGURATION = 10728 +ER_RPL_ERROR_READING_MASTER_CONFIGURATION = 10729 +ER_RPL_SSL_INFO_IN_MASTER_INFO_IGNORED = 10730 +ER_PLUGIN_FAILED_DEINITIALIZATION = 10731 +ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_DEINITIALIZATION = 10732 +ER_PLUGIN_SHUTTING_DOWN_PLUGIN = 10733 +ER_PLUGIN_REGISTRATION_FAILED = 10734 +ER_PLUGIN_CANT_OPEN_PLUGIN_TABLE = 10735 +ER_PLUGIN_CANT_LOAD = 10736 +ER_PLUGIN_LOAD_PARAMETER_TOO_LONG = 10737 +ER_PLUGIN_FORCING_SHUTDOWN = 10738 +ER_PLUGIN_HAS_NONZERO_REFCOUNT_AFTER_SHUTDOWN = 10739 +ER_PLUGIN_UNKNOWN_VARIABLE_TYPE = 10740 +ER_PLUGIN_VARIABLE_SET_READ_ONLY = 10741 +ER_PLUGIN_VARIABLE_MISSING_NAME = 10742 +ER_PLUGIN_VARIABLE_NOT_ALLOCATED_THREAD_LOCAL = 10743 +ER_PLUGIN_OOM = 10744 +ER_PLUGIN_BAD_OPTIONS = 10745 +ER_PLUGIN_PARSING_OPTIONS_FAILED = 10746 +ER_PLUGIN_DISABLED = 10747 +ER_PLUGIN_HAS_CONFLICTING_SYSTEM_VARIABLES = 10748 +ER_PLUGIN_CANT_SET_PERSISTENT_OPTIONS = 10749 +ER_MY_NET_WRITE_FAILED_FALLING_BACK_ON_STDERR = 10750 +ER_RETRYING_REPAIR_WITHOUT_QUICK = 10751 +ER_RETRYING_REPAIR_WITH_KEYCACHE = 10752 +ER_FOUND_ROWS_WHILE_REPAIRING = 10753 +ER_ERROR_DURING_OPTIMIZE_TABLE = 10754 +ER_ERROR_ENABLING_KEYS = 10755 +ER_CHECKING_TABLE = 10756 +ER_RECOVERING_TABLE = 10757 +ER_CANT_CREATE_TABLE_SHARE_FROM_FRM = 10758 +ER_CANT_LOCK_TABLE = 10759 +ER_CANT_ALLOC_TABLE_OBJECT = 10760 +ER_CANT_CREATE_HANDLER_OBJECT_FOR_TABLE = 10761 +ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE = 10762 +ER_CANT_LOCK_TABLESPACE = 10763 +ER_CANT_UPGRADE_GENERATED_COLUMNS_TO_DD = 10764 +ER_DD_ERROR_CREATING_ENTRY = 10765 +ER_DD_CANT_FETCH_TABLE_DATA = 10766 +ER_DD_CANT_FIX_SE_DATA = 10767 +ER_DD_CANT_CREATE_SP = 10768 +ER_CANT_OPEN_DB_OPT_USING_DEFAULT_CHARSET = 10769 +ER_CANT_CREATE_CACHE_FOR_DB_OPT = 10770 +ER_CANT_IDENTIFY_CHARSET_USING_DEFAULT = 10771 +ER_DB_OPT_NOT_FOUND_USING_DEFAULT_CHARSET = 10772 +ER_EVENT_CANT_GET_TIMEZONE_FROM_FIELD = 10773 +ER_EVENT_CANT_FIND_TIMEZONE = 10774 +ER_EVENT_CANT_GET_CHARSET = 10775 +ER_EVENT_CANT_GET_COLLATION = 10776 +ER_EVENT_CANT_OPEN_TABLE_MYSQL_EVENT = 10777 +ER_CANT_PARSE_STORED_ROUTINE_BODY = 10778 +ER_CANT_OPEN_TABLE_MYSQL_PROC = 10779 +ER_CANT_READ_TABLE_MYSQL_PROC = 10780 +ER_FILE_EXISTS_DURING_UPGRADE = 10781 +ER_CANT_OPEN_DATADIR_AFTER_UPGRADE_FAILURE = 10782 +ER_CANT_SET_PATH_FOR = 10783 +ER_CANT_OPEN_DIR = 10784 +ER_NDB_EMPTY_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS = 10785 +ER_NDB_CANT_PARSE_NDB_CLUSTER_CONNECTION_POOL_NODEIDS = 10786 +ER_NDB_INVALID_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS = 10787 +ER_NDB_DUPLICATE_NODEID_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS = 10788 +ER_NDB_POOL_SIZE_MUST_MATCH_NDB_CLUSTER_CONNECTION_POOL_NODEIDS = 10789 +ER_NDB_NODEID_NOT_FIRST_IN_NDB_CLUSTER_CONNECTION_POOL_NODEIDS = 10790 +ER_NDB_USING_NODEID = 10791 +ER_NDB_CANT_ALLOC_GLOBAL_NDB_CLUSTER_CONNECTION = 10792 +ER_NDB_CANT_ALLOC_GLOBAL_NDB_OBJECT = 10793 +ER_NDB_USING_NODEID_LIST = 10794 +ER_NDB_CANT_ALLOC_NDB_CLUSTER_CONNECTION = 10795 +ER_NDB_STARTING_CONNECT_THREAD = 10796 +ER_NDB_NODE_INFO = 10797 +ER_NDB_CANT_START_CONNECT_THREAD = 10798 +ER_NDB_GENERIC_ERROR = 10799 +ER_NDB_CPU_MASK_TOO_SHORT = 10800 +ER_EVENT_ERROR_CREATING_QUERY_TO_WRITE_TO_BINLOG = 10801 +ER_EVENT_SCHEDULER_ERROR_LOADING_FROM_DB = 10802 +ER_EVENT_SCHEDULER_ERROR_GETTING_EVENT_OBJECT = 10803 +ER_EVENT_SCHEDULER_GOT_BAD_DATA_FROM_TABLE = 10804 +ER_EVENT_CANT_GET_LOCK_FOR_DROPPING_EVENT = 10805 +ER_EVENT_UNABLE_TO_DROP_EVENT = 10806 +ER_BINLOG_ATTACHING_THREAD_MEMORY_FINALLY_AVAILABLE = 10807 +ER_BINLOG_CANT_RESIZE_CACHE = 10808 +ER_BINLOG_FILE_BEING_READ_NOT_PURGED = 10809 +ER_BINLOG_IO_ERROR_READING_HEADER = 10810 +ER_BINLOG_CANT_OPEN_LOG = 10811 +ER_BINLOG_CANT_CREATE_CACHE_FOR_LOG = 10812 +ER_BINLOG_FILE_EXTENSION_NUMBER_EXHAUSTED = 10813 +ER_BINLOG_FILE_NAME_TOO_LONG = 10814 +ER_BINLOG_FILE_EXTENSION_NUMBER_RUNNING_LOW = 10815 +ER_BINLOG_CANT_OPEN_FOR_LOGGING = 10816 +ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE = 10817 +ER_BINLOG_ERROR_READING_GTIDS_FROM_RELAY_LOG = 10818 +ER_BINLOG_EVENTS_READ_FROM_RELAY_LOG_INFO = 10819 +ER_BINLOG_ERROR_READING_GTIDS_FROM_BINARY_LOG = 10820 +ER_BINLOG_EVENTS_READ_FROM_BINLOG_INFO = 10821 +ER_BINLOG_CANT_GENERATE_NEW_FILE_NAME = 10822 +ER_BINLOG_FAILED_TO_SYNC_INDEX_FILE_IN_OPEN = 10823 +ER_BINLOG_CANT_USE_FOR_LOGGING = 10824 +ER_BINLOG_FAILED_TO_CLOSE_INDEX_FILE_WHILE_REBUILDING = 10825 +ER_BINLOG_FAILED_TO_DELETE_INDEX_FILE_WHILE_REBUILDING = 10826 +ER_BINLOG_FAILED_TO_RENAME_INDEX_FILE_WHILE_REBUILDING = 10827 +ER_BINLOG_FAILED_TO_OPEN_INDEX_FILE_AFTER_REBUILDING = 10828 +ER_BINLOG_CANT_APPEND_LOG_TO_TMP_INDEX = 10829 +ER_BINLOG_CANT_LOCATE_OLD_BINLOG_OR_RELAY_LOG_FILES = 10830 +ER_BINLOG_CANT_DELETE_FILE = 10831 +ER_BINLOG_CANT_SET_TMP_INDEX_NAME = 10832 +ER_BINLOG_FAILED_TO_OPEN_TEMPORARY_INDEX_FILE = 10833 +ER_BINLOG_ERROR_GETTING_NEXT_LOG_FROM_INDEX = 10834 +ER_BINLOG_CANT_OPEN_TMP_INDEX = 10835 +ER_BINLOG_CANT_COPY_INDEX_TO_TMP = 10836 +ER_BINLOG_CANT_CLOSE_TMP_INDEX = 10837 +ER_BINLOG_CANT_MOVE_TMP_TO_INDEX = 10838 +ER_BINLOG_PURGE_LOGS_CALLED_WITH_FILE_NOT_IN_INDEX = 10839 +ER_BINLOG_PURGE_LOGS_CANT_SYNC_INDEX_FILE = 10840 +ER_BINLOG_PURGE_LOGS_CANT_COPY_TO_REGISTER_FILE = 10841 +ER_BINLOG_PURGE_LOGS_CANT_FLUSH_REGISTER_FILE = 10842 +ER_BINLOG_PURGE_LOGS_CANT_UPDATE_INDEX_FILE = 10843 +ER_BINLOG_PURGE_LOGS_FAILED_TO_PURGE_LOG = 10844 +ER_BINLOG_FAILED_TO_SET_PURGE_INDEX_FILE_NAME = 10845 +ER_BINLOG_FAILED_TO_OPEN_REGISTER_FILE = 10846 +ER_BINLOG_FAILED_TO_REINIT_REGISTER_FILE = 10847 +ER_BINLOG_FAILED_TO_READ_REGISTER_FILE = 10848 +ER_CANT_STAT_FILE = 10849 +ER_BINLOG_CANT_DELETE_LOG_FILE_DOES_INDEX_MATCH_FILES = 10850 +ER_BINLOG_CANT_DELETE_FILE_AND_READ_BINLOG_INDEX = 10851 +ER_BINLOG_FAILED_TO_DELETE_LOG_FILE = 10852 +ER_BINLOG_LOGGING_INCIDENT_TO_STOP_SLAVES = 10853 +ER_BINLOG_CANT_FIND_LOG_IN_INDEX = 10854 +ER_BINLOG_RECOVERING_AFTER_CRASH_USING = 10855 +ER_BINLOG_CANT_OPEN_CRASHED_BINLOG = 10856 +ER_BINLOG_CANT_TRIM_CRASHED_BINLOG = 10857 +ER_BINLOG_CRASHED_BINLOG_TRIMMED = 10858 +ER_BINLOG_CANT_CLEAR_IN_USE_FLAG_FOR_CRASHED_BINLOG = 10859 +ER_BINLOG_FAILED_TO_RUN_AFTER_SYNC_HOOK = 10860 +ER_TURNING_LOGGING_OFF_FOR_THE_DURATION = 10861 +ER_BINLOG_FAILED_TO_RUN_AFTER_FLUSH_HOOK = 10862 +ER_BINLOG_CRASH_RECOVERY_FAILED = 10863 +ER_BINLOG_WARNING_SUPPRESSED = 10864 +ER_NDB_LOG_ENTRY = 10865 +ER_NDB_LOG_ENTRY_WITH_PREFIX = 10866 +ER_NDB_BINLOG_CANT_CREATE_PURGE_THD = 10867 +ER_INNODB_UNKNOWN_COLLATION = 10868 +ER_INNODB_INVALID_LOG_GROUP_HOME_DIR = 10869 +ER_INNODB_INVALID_INNODB_UNDO_DIRECTORY = 10870 +ER_INNODB_ILLEGAL_COLON_IN_POOL = 10871 +ER_INNODB_INVALID_PAGE_SIZE = 10872 +ER_INNODB_DIRTY_WATER_MARK_NOT_LOW = 10873 +ER_INNODB_IO_CAPACITY_EXCEEDS_MAX = 10874 +ER_INNODB_FILES_SAME = 10875 +ER_INNODB_UNREGISTERED_TRX_ACTIVE = 10876 +ER_INNODB_CLOSING_CONNECTION_ROLLS_BACK = 10877 +ER_INNODB_TRX_XLATION_TABLE_OOM = 10878 +ER_INNODB_CANT_FIND_INDEX_IN_INNODB_DD = 10879 +ER_INNODB_INDEX_COLUMN_INFO_UNLIKE_MYSQLS = 10880 +ER_INNODB_CANT_OPEN_TABLE = 10881 +ER_INNODB_CANT_BUILD_INDEX_XLATION_TABLE_FOR = 10882 +ER_INNODB_PK_NOT_IN_MYSQL = 10883 +ER_INNODB_PK_ONLY_IN_MYSQL = 10884 +ER_INNODB_CLUSTERED_INDEX_PRIVATE = 10885 +ER_INNODB_PARTITION_TABLE_LOWERCASED = 10886 +ER_ERRMSG_REPLACEMENT_DODGY = 10887 +ER_ERRMSG_REPLACEMENTS_FAILED = 10888 +ER_NPIPE_CANT_CREATE = 10889 +ER_PARTITION_MOVE_CREATED_DUPLICATE_ROW_PLEASE_FIX = 10890 +ER_AUDIT_CANT_ABORT_COMMAND = 10891 +ER_AUDIT_CANT_ABORT_EVENT = 10892 +ER_AUDIT_WARNING = 10893 +ER_NDB_NUMBER_OF_CHANNELS = 10894 +ER_NDB_SLAVE_PARALLEL_WORKERS = 10895 +ER_NDB_DISTRIBUTING_ERR = 10896 +ER_RPL_SLAVE_INSECURE_CHANGE_MASTER = 10897 +ER_RPL_SLAVE_FLUSH_RELAY_LOGS_NOT_ALLOWED = 10898 +ER_RPL_SLAVE_INCORRECT_CHANNEL = 10899 +ER_FAILED_TO_FIND_DL_ENTRY = 10900 +ER_FAILED_TO_OPEN_SHARED_LIBRARY = 10901 +ER_THREAD_PRIORITY_IGNORED = 10902 +ER_BINLOG_CACHE_SIZE_TOO_LARGE = 10903 +ER_BINLOG_STMT_CACHE_SIZE_TOO_LARGE = 10904 +ER_FAILED_TO_GENERATE_UNIQUE_LOGFILE = 10905 +ER_FAILED_TO_READ_FILE = 10906 +ER_FAILED_TO_WRITE_TO_FILE = 10907 +ER_BINLOG_UNSAFE_MESSAGE_AND_STATEMENT = 10908 +ER_FORCE_CLOSE_THREAD = 10909 +ER_SERVER_SHUTDOWN_COMPLETE = 10910 +ER_RPL_CANT_HAVE_SAME_BASENAME = 10911 +ER_RPL_GTID_MODE_REQUIRES_ENFORCE_GTID_CONSISTENCY_ON = 10912 +ER_WARN_NO_SERVERID_SPECIFIED = 10913 +ER_ABORTING_USER_CONNECTION = 10914 +ER_SQL_MODE_MERGED_WITH_STRICT_MODE = 10915 +ER_GTID_PURGED_WAS_UPDATED = 10916 +ER_GTID_EXECUTED_WAS_UPDATED = 10917 +ER_DEPRECATE_MSG_WITH_REPLACEMENT = 10918 +ER_TRG_CREATION_CTX_NOT_SET = 10919 +ER_FILE_HAS_OLD_FORMAT = 10920 +ER_VIEW_CREATION_CTX_NOT_SET = 10921 +ER_TABLE_NAME_CAUSES_TOO_LONG_PATH = 10922 +ER_TABLE_UPGRADE_REQUIRED = 10923 +ER_GET_ERRNO_FROM_STORAGE_ENGINE = 10924 +ER_ACCESS_DENIED_ERROR_WITHOUT_PASSWORD = 10925 +ER_ACCESS_DENIED_ERROR_WITH_PASSWORD = 10926 +ER_ACCESS_DENIED_FOR_USER_ACCOUNT_LOCKED = 10927 +ER_MUST_CHANGE_EXPIRED_PASSWORD = 10928 +ER_SYSTEM_TABLES_NOT_SUPPORTED_BY_STORAGE_ENGINE = 10929 +ER_FILESORT_TERMINATED = 10930 +ER_SERVER_STARTUP_MSG = 10931 +ER_FAILED_TO_FIND_LOCALE_NAME = 10932 +ER_FAILED_TO_FIND_COLLATION_NAME = 10933 +ER_SERVER_OUT_OF_RESOURCES = 10934 +ER_SERVER_OUTOFMEMORY = 10935 +ER_INVALID_COLLATION_FOR_CHARSET = 10936 +ER_CANT_START_ERROR_LOG_SERVICE = 10937 +ER_CREATING_NEW_UUID_FIRST_START = 10938 +ER_FAILED_TO_GET_ABSOLUTE_PATH = 10939 +ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_BOOTSTRAP = 10940 +ER_PERFSCHEMA_COMPONENTS_INFRASTRUCTURE_SHUTDOWN = 10941 +ER_DUP_FD_OPEN_FAILED = 10942 +ER_SYSTEM_VIEW_INIT_FAILED = 10943 +ER_RESOURCE_GROUP_POST_INIT_FAILED = 10944 +ER_RESOURCE_GROUP_SUBSYSTEM_INIT_FAILED = 10945 +ER_FAILED_START_MYSQLD_DAEMON = 10946 +ER_CANNOT_CHANGE_TO_ROOT_DIR = 10947 +ER_PERSISTENT_PRIVILEGES_BOOTSTRAP = 10948 +ER_BASEDIR_SET_TO = 10949 +ER_RPL_FILTER_ADD_WILD_DO_TABLE_FAILED = 10950 +ER_RPL_FILTER_ADD_WILD_IGNORE_TABLE_FAILED = 10951 +ER_PRIVILEGE_SYSTEM_INIT_FAILED = 10952 +ER_CANNOT_SET_LOG_ERROR_SERVICES = 10953 +ER_PERFSCHEMA_TABLES_INIT_FAILED = 10954 +ER_TX_EXTRACTION_ALGORITHM_FOR_BINLOG_TX_DEPEDENCY_TRACKING = 10955 +ER_INVALID_REPLICATION_TIMESTAMPS = 10956 +ER_RPL_TIMESTAMPS_RETURNED_TO_NORMAL = 10957 +ER_BINLOG_FILE_OPEN_FAILED = 10958 +ER_BINLOG_EVENT_WRITE_TO_STMT_CACHE_FAILED = 10959 +ER_SLAVE_RELAY_LOG_TRUNCATE_INFO = 10960 +ER_SLAVE_RELAY_LOG_PURGE_FAILED = 10961 +ER_RPL_SLAVE_FILTER_CREATE_FAILED = 10962 +ER_RPL_SLAVE_GLOBAL_FILTERS_COPY_FAILED = 10963 +ER_RPL_SLAVE_RESET_FILTER_OPTIONS = 10964 +ER_MISSING_GRANT_SYSTEM_TABLE = 10965 +ER_MISSING_ACL_SYSTEM_TABLE = 10966 +ER_ANONYMOUS_AUTH_ID_NOT_ALLOWED_IN_MANDATORY_ROLES = 10967 +ER_UNKNOWN_AUTH_ID_IN_MANDATORY_ROLE = 10968 +ER_WRITE_ROW_TO_PARTITION_FAILED = 10969 +ER_RESOURCE_GROUP_METADATA_UPDATE_SKIPPED = 10970 +ER_FAILED_TO_PERSIST_RESOURCE_GROUP_METADATA = 10971 +ER_FAILED_TO_DESERIALIZE_RESOURCE_GROUP = 10972 +ER_FAILED_TO_UPDATE_RESOURCE_GROUP = 10973 +ER_RESOURCE_GROUP_VALIDATION_FAILED = 10974 +ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP = 10975 +ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP_HASH = 10976 +ER_FAILED_TO_ADD_RESOURCE_GROUP_TO_MAP = 10977 +ER_RESOURCE_GROUP_IS_DISABLED = 10978 +ER_FAILED_TO_APPLY_RESOURCE_GROUP_CONTROLLER = 10979 +ER_FAILED_TO_ACQUIRE_LOCK_ON_RESOURCE_GROUP = 10980 +ER_PFS_NOTIFICATION_FUNCTION_REGISTER_FAILED = 10981 +ER_RES_GRP_SET_THR_AFFINITY_FAILED = 10982 +ER_RES_GRP_SET_THR_AFFINITY_TO_CPUS_FAILED = 10983 +ER_RES_GRP_THD_UNBIND_FROM_CPU_FAILED = 10984 +ER_RES_GRP_SET_THREAD_PRIORITY_FAILED = 10985 +ER_RES_GRP_FAILED_TO_DETERMINE_NICE_CAPABILITY = 10986 +ER_RES_GRP_FAILED_TO_GET_THREAD_HANDLE = 10987 +ER_RES_GRP_GET_THREAD_PRIO_NOT_SUPPORTED = 10988 +ER_RES_GRP_FAILED_DETERMINE_CPU_COUNT = 10989 +ER_RES_GRP_FEATURE_NOT_AVAILABLE = 10990 +ER_RES_GRP_INVALID_THREAD_PRIORITY = 10991 +ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_CPUID_FAILED = 10992 +ER_RES_GRP_SOLARIS_PROCESSOR_BIND_TO_THREAD_FAILED = 10993 +ER_RES_GRP_SOLARIS_PROCESSOR_AFFINITY_FAILED = 10994 +ER_DD_UPGRADE_RENAME_IDX_STATS_FILE_FAILED = 10995 +ER_DD_UPGRADE_DD_OPEN_FAILED = 10996 +ER_DD_UPGRADE_FAILED_TO_FETCH_TABLESPACES = 10997 +ER_DD_UPGRADE_FAILED_TO_ACQUIRE_TABLESPACE = 10998 +ER_DD_UPGRADE_FAILED_TO_RESOLVE_TABLESPACE_ENGINE = 10999 +ER_FAILED_TO_CREATE_SDI_FOR_TABLESPACE = 11000 +ER_FAILED_TO_STORE_SDI_FOR_TABLESPACE = 11001 +ER_DD_UPGRADE_FAILED_TO_FETCH_TABLES = 11002 +ER_DD_UPGRADE_DD_POPULATED = 11003 +ER_DD_UPGRADE_INFO_FILE_OPEN_FAILED = 11004 +ER_DD_UPGRADE_INFO_FILE_CLOSE_FAILED = 11005 +ER_DD_UPGRADE_TABLESPACE_MIGRATION_FAILED = 11006 +ER_DD_UPGRADE_FAILED_TO_CREATE_TABLE_STATS = 11007 +ER_DD_UPGRADE_TABLE_STATS_MIGRATE_COMPLETED = 11008 +ER_DD_UPGRADE_FAILED_TO_CREATE_INDEX_STATS = 11009 +ER_DD_UPGRADE_INDEX_STATS_MIGRATE_COMPLETED = 11010 +ER_DD_UPGRADE_FAILED_FIND_VALID_DATA_DIR = 11011 +ER_DD_UPGRADE_START = 11012 +ER_DD_UPGRADE_FAILED_INIT_DD_SE = 11013 +ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_ABORT = 11014 +ER_DD_UPGRADE_FOUND_PARTIALLY_UPGRADED_DD_CONTINUE = 11015 +ER_DD_UPGRADE_SE_LOGS_FAILED = 11016 +ER_DD_UPGRADE_SDI_INFO_UPDATE_FAILED = 11017 +ER_SKIP_UPDATING_METADATA_IN_SE_RO_MODE = 11018 +ER_CREATED_SYSTEM_WITH_VERSION = 11019 +ER_UNKNOWN_ERROR_DETECTED_IN_SE = 11020 +ER_READ_LOG_EVENT_FAILED = 11021 +ER_ROW_DATA_TOO_BIG_TO_WRITE_IN_BINLOG = 11022 +ER_FAILED_TO_CONSTRUCT_DROP_EVENT_QUERY = 11023 +ER_FAILED_TO_BINLOG_DROP_EVENT = 11024 +ER_FAILED_TO_START_SLAVE_THREAD = 11025 +ER_RPL_IO_THREAD_KILLED = 11026 +ER_SLAVE_RECONNECT_FAILED = 11027 +ER_SLAVE_KILLED_AFTER_RECONNECT = 11028 +ER_SLAVE_NOT_STARTED_ON_SOME_CHANNELS = 11029 +ER_FAILED_TO_ADD_RPL_FILTER = 11030 +ER_PER_CHANNEL_RPL_FILTER_CONF_FOR_GRP_RPL = 11031 +ER_RPL_FILTERS_NOT_ATTACHED_TO_CHANNEL = 11032 +ER_FAILED_TO_BUILD_DO_AND_IGNORE_TABLE_HASHES = 11033 +ER_CLONE_PLUGIN_NOT_LOADED = 11034 +ER_CLONE_HANDLER_EXISTS = 11035 +ER_FAILED_TO_CREATE_CLONE_HANDLER = 11036 +ER_CYCLE_TIMER_IS_NOT_AVAILABLE = 11037 +ER_NANOSECOND_TIMER_IS_NOT_AVAILABLE = 11038 +ER_MICROSECOND_TIMER_IS_NOT_AVAILABLE = 11039 +ER_PFS_MALLOC_ARRAY_OVERFLOW = 11040 +ER_PFS_MALLOC_ARRAY_OOM = 11041 +ER_INNODB_FAILED_TO_FIND_IDX_WITH_KEY_NO = 11042 +ER_INNODB_FAILED_TO_FIND_IDX = 11043 +ER_INNODB_FAILED_TO_FIND_IDX_FROM_DICT_CACHE = 11044 +ER_INNODB_ACTIVE_INDEX_CHANGE_FAILED = 11045 +ER_INNODB_DIFF_IN_REF_LEN = 11046 +ER_WRONG_TYPE_FOR_COLUMN_PREFIX_IDX_FLD = 11047 +ER_INNODB_CANNOT_CREATE_TABLE = 11048 +ER_INNODB_INTERNAL_INDEX = 11049 +ER_INNODB_IDX_CNT_MORE_THAN_DEFINED_IN_MYSQL = 11050 +ER_INNODB_IDX_CNT_FEWER_THAN_DEFINED_IN_MYSQL = 11051 +ER_INNODB_IDX_COLUMN_CNT_DIFF = 11052 +ER_INNODB_USE_MONITOR_GROUP_NAME = 11053 +ER_INNODB_MONITOR_DEFAULT_VALUE_NOT_DEFINED = 11054 +ER_INNODB_MONITOR_IS_ENABLED = 11055 +ER_INNODB_INVALID_MONITOR_COUNTER_NAME = 11056 +ER_WIN_LOAD_LIBRARY_FAILED = 11057 +ER_PARTITION_HANDLER_ADMIN_MSG = 11058 +ER_RPL_RLI_INIT_INFO_MSG = 11059 +ER_DD_UPGRADE_TABLE_INTACT_ERROR = 11060 +ER_SERVER_INIT_COMPILED_IN_COMMANDS = 11061 +ER_MYISAM_CHECK_METHOD_ERROR = 11062 +ER_MYISAM_CRASHED_ERROR = 11063 +ER_WAITPID_FAILED = 11064 +ER_FAILED_TO_FIND_MYSQLD_STATUS = 11065 +ER_INNODB_ERROR_LOGGER_MSG = 11066 +ER_INNODB_ERROR_LOGGER_FATAL_MSG = 11067 +ER_DEPRECATED_SYNTAX_WITH_REPLACEMENT = 11068 +ER_DEPRECATED_SYNTAX_NO_REPLACEMENT = 11069 +ER_DEPRECATE_MSG_NO_REPLACEMENT = 11070 +ER_LOG_PRINTF_MSG = 11071 +ER_BINLOG_LOGGING_NOT_POSSIBLE = 11072 +ER_FAILED_TO_SET_PERSISTED_OPTIONS = 11073 +ER_COMPONENTS_FAILED_TO_ACQUIRE_SERVICE_IMPLEMENTATION = 11074 +ER_RES_GRP_INVALID_VCPU_RANGE = 11075 +ER_RES_GRP_INVALID_VCPU_ID = 11076 +ER_ERROR_DURING_FLUSH_LOG_COMMIT_PHASE = 11077 +ER_DROP_DATABASE_FAILED_RMDIR_MANUALLY = 11078 +ER_EXPIRE_LOGS_DAYS_IGNORED = 11079 +ER_BINLOG_MALFORMED_OR_OLD_RELAY_LOG = 11080 +ER_DD_UPGRADE_VIEW_COLUMN_NAME_TOO_LONG = 11081 +ER_TABLE_NEEDS_DUMP_UPGRADE = 11082 +ER_DD_UPGRADE_FAILED_TO_UPDATE_VER_NO_IN_TABLESPACE = 11083 +ER_KEYRING_MIGRATION_FAILED = 11084 +ER_KEYRING_MIGRATION_SUCCESSFUL = 11085 +ER_RESTART_RECEIVED_INFO = 11086 +ER_LCTN_CHANGED = 11087 +ER_DD_INITIALIZE = 11088 +ER_DD_RESTART = 11089 +ER_DD_UPGRADE = 11090 +ER_DD_UPGRADE_OFF = 11091 +ER_DD_UPGRADE_VERSION_NOT_SUPPORTED = 11092 +ER_DD_UPGRADE_SCHEMA_UNAVAILABLE = 11093 +ER_DD_MINOR_DOWNGRADE = 11094 +ER_DD_MINOR_DOWNGRADE_VERSION_NOT_SUPPORTED = 11095 +ER_DD_NO_VERSION_FOUND = 11096 +ER_THREAD_POOL_NOT_SUPPORTED_ON_PLATFORM = 11097 +ER_THREAD_POOL_SIZE_TOO_LOW = 11098 +ER_THREAD_POOL_SIZE_TOO_HIGH = 11099 +ER_THREAD_POOL_ALGORITHM_INVALID = 11100 +ER_THREAD_POOL_INVALID_STALL_LIMIT = 11101 +ER_THREAD_POOL_INVALID_PRIO_KICKUP_TIMER = 11102 +ER_THREAD_POOL_MAX_UNUSED_THREADS_INVALID = 11103 +ER_THREAD_POOL_CON_HANDLER_INIT_FAILED = 11104 +ER_THREAD_POOL_INIT_FAILED = 11105 +ER_THREAD_POOL_PLUGIN_STARTED = 11106 +ER_THREAD_POOL_CANNOT_SET_THREAD_SPECIFIC_DATA = 11107 +ER_THREAD_POOL_FAILED_TO_CREATE_CONNECT_HANDLER_THD = 11108 +ER_THREAD_POOL_FAILED_TO_CREATE_THD_AND_AUTH_CONN = 11109 +ER_THREAD_POOL_FAILED_PROCESS_CONNECT_EVENT = 11110 +ER_THREAD_POOL_FAILED_TO_CREATE_POOL = 11111 +ER_THREAD_POOL_RATE_LIMITED_ERROR_MSGS = 11112 +ER_TRHEAD_POOL_LOW_LEVEL_INIT_FAILED = 11113 +ER_THREAD_POOL_LOW_LEVEL_REARM_FAILED = 11114 +ER_THREAD_POOL_BUFFER_TOO_SMALL = 11115 +ER_MECAB_NOT_SUPPORTED = 11116 +ER_MECAB_NOT_VERIFIED = 11117 +ER_MECAB_CREATING_MODEL = 11118 +ER_MECAB_FAILED_TO_CREATE_MODEL = 11119 +ER_MECAB_FAILED_TO_CREATE_TRIGGER = 11120 +ER_MECAB_UNSUPPORTED_CHARSET = 11121 +ER_MECAB_CHARSET_LOADED = 11122 +ER_MECAB_PARSE_FAILED = 11123 +ER_MECAB_OOM_WHILE_PARSING_TEXT = 11124 +ER_MECAB_CREATE_LATTICE_FAILED = 11125 +ER_SEMISYNC_TRACE_ENTER_FUNC = 11126 +ER_SEMISYNC_TRACE_EXIT_WITH_INT_EXIT_CODE = 11127 +ER_SEMISYNC_TRACE_EXIT_WITH_BOOL_EXIT_CODE = 11128 +ER_SEMISYNC_TRACE_EXIT = 11129 +ER_SEMISYNC_RPL_INIT_FOR_TRX = 11130 +ER_SEMISYNC_FAILED_TO_ALLOCATE_TRX_NODE = 11131 +ER_SEMISYNC_BINLOG_WRITE_OUT_OF_ORDER = 11132 +ER_SEMISYNC_INSERT_LOG_INFO_IN_ENTRY = 11133 +ER_SEMISYNC_PROBE_LOG_INFO_IN_ENTRY = 11134 +ER_SEMISYNC_CLEARED_ALL_ACTIVE_TRANSACTION_NODES = 11135 +ER_SEMISYNC_CLEARED_ACTIVE_TRANSACTION_TILL_POS = 11136 +ER_SEMISYNC_REPLY_MAGIC_NO_ERROR = 11137 +ER_SEMISYNC_REPLY_PKT_LENGTH_TOO_SMALL = 11138 +ER_SEMISYNC_REPLY_BINLOG_FILE_TOO_LARGE = 11139 +ER_SEMISYNC_SERVER_REPLY = 11140 +ER_SEMISYNC_FUNCTION_CALLED_TWICE = 11141 +ER_SEMISYNC_RPL_ENABLED_ON_MASTER = 11142 +ER_SEMISYNC_MASTER_OOM = 11143 +ER_SEMISYNC_DISABLED_ON_MASTER = 11144 +ER_SEMISYNC_FORCED_SHUTDOWN = 11145 +ER_SEMISYNC_MASTER_GOT_REPLY_AT_POS = 11146 +ER_SEMISYNC_MASTER_SIGNAL_ALL_WAITING_THREADS = 11147 +ER_SEMISYNC_MASTER_TRX_WAIT_POS = 11148 +ER_SEMISYNC_BINLOG_REPLY_IS_AHEAD = 11149 +ER_SEMISYNC_MOVE_BACK_WAIT_POS = 11150 +ER_SEMISYNC_INIT_WAIT_POS = 11151 +ER_SEMISYNC_WAIT_TIME_FOR_BINLOG_SENT = 11152 +ER_SEMISYNC_WAIT_FOR_BINLOG_TIMEDOUT = 11153 +ER_SEMISYNC_WAIT_TIME_ASSESSMENT_FOR_COMMIT_TRX_FAILED = 11154 +ER_SEMISYNC_RPL_SWITCHED_OFF = 11155 +ER_SEMISYNC_RPL_SWITCHED_ON = 11156 +ER_SEMISYNC_NO_SPACE_IN_THE_PKT = 11157 +ER_SEMISYNC_SYNC_HEADER_UPDATE_INFO = 11158 +ER_SEMISYNC_FAILED_TO_INSERT_TRX_NODE = 11159 +ER_SEMISYNC_TRX_SKIPPED_AT_POS = 11160 +ER_SEMISYNC_MASTER_FAILED_ON_NET_FLUSH = 11161 +ER_SEMISYNC_RECEIVED_ACK_IS_SMALLER = 11162 +ER_SEMISYNC_ADD_ACK_TO_SLOT = 11163 +ER_SEMISYNC_UPDATE_EXISTING_SLAVE_ACK = 11164 +ER_SEMISYNC_FAILED_TO_START_ACK_RECEIVER_THD = 11165 +ER_SEMISYNC_STARTING_ACK_RECEIVER_THD = 11166 +ER_SEMISYNC_FAILED_TO_WAIT_ON_DUMP_SOCKET = 11167 +ER_SEMISYNC_STOPPING_ACK_RECEIVER_THREAD = 11168 +ER_SEMISYNC_FAILED_REGISTER_SLAVE_TO_RECEIVER = 11169 +ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE = 11170 +ER_SEMISYNC_STOP_BINLOG_DUMP_TO_SLAVE = 11171 +ER_SEMISYNC_UNREGISTER_TRX_OBSERVER_FAILED = 11172 +ER_SEMISYNC_UNREGISTER_BINLOG_STORAGE_OBSERVER_FAILED = 11173 +ER_SEMISYNC_UNREGISTER_BINLOG_TRANSMIT_OBSERVER_FAILED = 11174 +ER_SEMISYNC_UNREGISTERED_REPLICATOR = 11175 +ER_SEMISYNC_SOCKET_FD_TOO_LARGE = 11176 +ER_SEMISYNC_SLAVE_REPLY = 11177 +ER_SEMISYNC_MISSING_MAGIC_NO_FOR_SEMISYNC_PKT = 11178 +ER_SEMISYNC_SLAVE_START = 11179 +ER_SEMISYNC_SLAVE_REPLY_WITH_BINLOG_INFO = 11180 +ER_SEMISYNC_SLAVE_NET_FLUSH_REPLY_FAILED = 11181 +ER_SEMISYNC_SLAVE_SEND_REPLY_FAILED = 11182 +ER_SEMISYNC_EXECUTION_FAILED_ON_MASTER = 11183 +ER_SEMISYNC_NOT_SUPPORTED_BY_MASTER = 11184 +ER_SEMISYNC_SLAVE_SET_FAILED = 11185 +ER_SEMISYNC_FAILED_TO_STOP_ACK_RECEIVER_THD = 11186 +ER_FIREWALL_FAILED_TO_READ_FIREWALL_TABLES = 11187 +ER_FIREWALL_FAILED_TO_REG_DYNAMIC_PRIVILEGES = 11188 +ER_FIREWALL_RECORDING_STMT_WAS_TRUNCATED = 11189 +ER_FIREWALL_RECORDING_STMT_WITHOUT_TEXT = 11190 +ER_FIREWALL_SUSPICIOUS_STMT = 11191 +ER_FIREWALL_ACCESS_DENIED = 11192 +ER_FIREWALL_SKIPPED_UNKNOWN_USER_MODE = 11193 +ER_FIREWALL_RELOADING_CACHE = 11194 +ER_FIREWALL_RESET_FOR_USER = 11195 +ER_FIREWALL_STATUS_FLUSHED = 11196 +ER_KEYRING_LOGGER_ERROR_MSG = 11197 +ER_AUDIT_LOG_FILTER_IS_NOT_INSTALLED = 11198 +ER_AUDIT_LOG_SWITCHING_TO_INCLUDE_LIST = 11199 +ER_AUDIT_LOG_CANNOT_SET_LOG_POLICY_WITH_OTHER_POLICIES = 11200 +ER_AUDIT_LOG_ONLY_INCLUDE_LIST_USED = 11201 +ER_AUDIT_LOG_INDEX_MAP_CANNOT_ACCESS_DIR = 11202 +ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED = 11203 +ER_AUDIT_LOG_WRITER_DEST_FILE_ALREADY_EXISTS = 11204 +ER_AUDIT_LOG_WRITER_RENAME_FILE_FAILED_REMOVE_FILE_MANUALLY = 11205 +ER_AUDIT_LOG_WRITER_INCOMPLETE_FILE_RENAMED = 11206 +ER_AUDIT_LOG_WRITER_FAILED_TO_WRITE_TO_FILE = 11207 +ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_ENCRYPTION = 11208 +ER_AUDIT_LOG_EC_WRITER_FAILED_TO_INIT_COMPRESSION = 11209 +ER_AUDIT_LOG_EC_WRITER_FAILED_TO_CREATE_FILE = 11210 +ER_AUDIT_LOG_RENAME_LOG_FILE_BEFORE_FLUSH = 11211 +ER_AUDIT_LOG_FILTER_RESULT_MSG = 11212 +ER_AUDIT_LOG_JSON_READER_FAILED_TO_PARSE = 11213 +ER_AUDIT_LOG_JSON_READER_BUF_TOO_SMALL = 11214 +ER_AUDIT_LOG_JSON_READER_FAILED_TO_OPEN_FILE = 11215 +ER_AUDIT_LOG_JSON_READER_FILE_PARSING_ERROR = 11216 +ER_AUDIT_LOG_FILTER_INVALID_COLUMN_COUNT = 11217 +ER_AUDIT_LOG_FILTER_INVALID_COLUMN_DEFINITION = 11218 +ER_AUDIT_LOG_FILTER_FAILED_TO_STORE_TABLE_FLDS = 11219 +ER_AUDIT_LOG_FILTER_FAILED_TO_UPDATE_TABLE = 11220 +ER_AUDIT_LOG_FILTER_FAILED_TO_INSERT_INTO_TABLE = 11221 +ER_AUDIT_LOG_FILTER_FAILED_TO_DELETE_FROM_TABLE = 11222 +ER_AUDIT_LOG_FILTER_FAILED_TO_INIT_TABLE_FOR_READ = 11223 +ER_AUDIT_LOG_FILTER_FAILED_TO_READ_TABLE = 11224 +ER_AUDIT_LOG_FILTER_FAILED_TO_CLOSE_TABLE_AFTER_READING = 11225 +ER_AUDIT_LOG_FILTER_USER_AND_HOST_CANNOT_BE_EMPTY = 11226 +ER_AUDIT_LOG_FILTER_FLD_FILTERNAME_CANNOT_BE_EMPTY = 11227 +ER_VALIDATE_PWD_DICT_FILE_NOT_SPECIFIED = 11228 +ER_VALIDATE_PWD_DICT_FILE_NOT_LOADED = 11229 +ER_VALIDATE_PWD_DICT_FILE_TOO_BIG = 11230 +ER_VALIDATE_PWD_FAILED_TO_READ_DICT_FILE = 11231 +ER_VALIDATE_PWD_FAILED_TO_GET_FLD_FROM_SECURITY_CTX = 11232 +ER_VALIDATE_PWD_FAILED_TO_GET_SECURITY_CTX = 11233 +ER_VALIDATE_PWD_LENGTH_CHANGED = 11234 +ER_REWRITER_QUERY_ERROR_MSG = 11235 +ER_REWRITER_QUERY_FAILED = 11236 +ER_XPLUGIN_STARTUP_FAILED = 11237 +ER_XPLUGIN_SERVER_EXITING = 11238 +ER_XPLUGIN_SERVER_EXITED = 11239 +ER_XPLUGIN_USING_SSL_CONF_FROM_SERVER = 11240 +ER_XPLUGIN_USING_SSL_CONF_FROM_MYSQLX = 11241 +ER_XPLUGIN_FAILED_TO_USE_SSL_CONF = 11242 +ER_XPLUGIN_USING_SSL_FOR_TLS_CONNECTION = 11243 +ER_XPLUGIN_REFERENCE_TO_SECURE_CONN_WITH_XPLUGIN = 11244 +ER_XPLUGIN_ERROR_MSG = 11245 +ER_SHA_PWD_FAILED_TO_PARSE_AUTH_STRING = 11246 +ER_SHA_PWD_FAILED_TO_GENERATE_MULTI_ROUND_HASH = 11247 +ER_SHA_PWD_AUTH_REQUIRES_RSA_OR_SSL = 11248 +ER_SHA_PWD_RSA_KEY_TOO_LONG = 11249 +ER_PLUGIN_COMMON_FAILED_TO_OPEN_FILTER_TABLES = 11250 +ER_PLUGIN_COMMON_FAILED_TO_OPEN_TABLE = 11251 +ER_AUTH_LDAP_ERROR_LOGGER_ERROR_MSG = 11252 +ER_CONN_CONTROL_ERROR_MSG = 11253 +ER_GRP_RPL_ERROR_MSG = 11254 +ER_SHA_PWD_SALT_FOR_USER_CORRUPT = 11255 +ER_SYS_VAR_COMPONENT_OOM = 11256 +ER_SYS_VAR_COMPONENT_VARIABLE_SET_READ_ONLY = 11257 +ER_SYS_VAR_COMPONENT_UNKNOWN_VARIABLE_TYPE = 11258 +ER_SYS_VAR_COMPONENT_FAILED_TO_PARSE_VARIABLE_OPTIONS = 11259 +ER_SYS_VAR_COMPONENT_FAILED_TO_MAKE_VARIABLE_PERSISTENT = 11260 +ER_COMPONENT_FILTER_CONFUSED = 11261 +ER_STOP_SLAVE_IO_THREAD_DISK_SPACE = 11262 +ER_LOG_FILE_CANNOT_OPEN = 11263 +OBSOLETE_ER_UNABLE_TO_COLLECT_INSTANCE_LOG_STATUS = 11264 +OBSOLETE_ER_DEPRECATED_UTF8_ALIAS = 11265 +OBSOLETE_ER_DEPRECATED_NATIONAL = 11266 +OBSOLETE_ER_SLAVE_POSSIBLY_DIVERGED_AFTER_DDL = 11267 +ER_PERSIST_OPTION_STATUS = 11268 +ER_NOT_IMPLEMENTED_GET_TABLESPACE_STATISTICS = 11269 +OBSOLETE_ER_UNABLE_TO_SET_OPTION = 11270 +OBSOLETE_ER_RESERVED_TABLESPACE_NAME = 11271 +ER_SSL_FIPS_MODE_ERROR = 11272 +ER_CONN_INIT_CONNECT_IGNORED = 11273 +ER_UNSUPPORTED_SQL_MODE = 11274 +ER_REWRITER_OOM = 11275 +ER_REWRITER_TABLE_MALFORMED_ERROR = 11276 +ER_REWRITER_LOAD_FAILED = 11277 +ER_REWRITER_READ_FAILED = 11278 +ER_CONN_CONTROL_EVENT_COORDINATOR_INIT_FAILED = 11279 +ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_UPDATE_FAILED = 11280 +ER_CONN_CONTROL_STAT_CONN_DELAY_TRIGGERED_RESET_FAILED = 11281 +ER_CONN_CONTROL_INVALID_CONN_DELAY_TYPE = 11282 +ER_CONN_CONTROL_DELAY_ACTION_INIT_FAILED = 11283 +ER_CONN_CONTROL_FAILED_TO_SET_CONN_DELAY = 11284 +ER_CONN_CONTROL_FAILED_TO_UPDATE_CONN_DELAY_HASH = 11285 +ER_XPLUGIN_FORCE_STOP_CLIENT = 11286 +ER_XPLUGIN_MAX_AUTH_ATTEMPTS_REACHED = 11287 +ER_XPLUGIN_BUFFER_PAGE_ALLOC_FAILED = 11288 +ER_XPLUGIN_DETECTED_HANGING_CLIENTS = 11289 +ER_XPLUGIN_FAILED_TO_ACCEPT_CLIENT = 11290 +ER_XPLUGIN_FAILED_TO_SCHEDULE_CLIENT = 11291 +ER_XPLUGIN_FAILED_TO_PREPARE_IO_INTERFACES = 11292 +ER_XPLUGIN_SRV_SESSION_INIT_THREAD_FAILED = 11293 +ER_XPLUGIN_UNABLE_TO_USE_USER_SESSION_ACCOUNT = 11294 +ER_XPLUGIN_REFERENCE_TO_USER_ACCOUNT_DOC_SECTION = 11295 +ER_XPLUGIN_UNEXPECTED_EXCEPTION_DISPATCHING_CMD = 11296 +ER_XPLUGIN_EXCEPTION_IN_TASK_SCHEDULER = 11297 +ER_XPLUGIN_TASK_SCHEDULING_FAILED = 11298 +ER_XPLUGIN_EXCEPTION_IN_EVENT_LOOP = 11299 +ER_XPLUGIN_LISTENER_SETUP_FAILED = 11300 +ER_XPLUING_NET_STARTUP_FAILED = 11301 +ER_XPLUGIN_FAILED_AT_SSL_CONF = 11302 +ER_XPLUGIN_CLIENT_SSL_HANDSHAKE_FAILED = 11303 +ER_XPLUGIN_SSL_HANDSHAKE_WITH_SERVER_FAILED = 11304 +ER_XPLUGIN_FAILED_TO_CREATE_SESSION_FOR_CONN = 11305 +ER_XPLUGIN_FAILED_TO_INITIALIZE_SESSION = 11306 +ER_XPLUGIN_MESSAGE_TOO_LONG = 11307 +ER_XPLUGIN_UNINITIALIZED_MESSAGE = 11308 +ER_XPLUGIN_FAILED_TO_SET_MIN_NUMBER_OF_WORKERS = 11309 +ER_XPLUGIN_UNABLE_TO_ACCEPT_CONNECTION = 11310 +ER_XPLUGIN_ALL_IO_INTERFACES_DISABLED = 11311 +ER_XPLUGIN_INVALID_MSG_DURING_CLIENT_INIT = 11312 +ER_XPLUGIN_CLOSING_CLIENTS_ON_SHUTDOWN = 11313 +ER_XPLUGIN_ERROR_READING_SOCKET = 11314 +ER_XPLUGIN_PEER_DISCONNECTED_WHILE_READING_MSG_BODY = 11315 +ER_XPLUGIN_READ_FAILED_CLOSING_CONNECTION = 11316 +ER_XPLUGIN_INVALID_AUTH_METHOD = 11317 +ER_XPLUGIN_UNEXPECTED_MSG_DURING_AUTHENTICATION = 11318 +ER_XPLUGIN_ERROR_WRITING_TO_CLIENT = 11319 +ER_XPLUGIN_SCHEDULER_STARTED = 11320 +ER_XPLUGIN_SCHEDULER_STOPPED = 11321 +ER_XPLUGIN_LISTENER_SYS_VARIABLE_ERROR = 11322 +ER_XPLUGIN_LISTENER_STATUS_MSG = 11323 +ER_XPLUGIN_RETRYING_BIND_ON_PORT = 11324 +ER_XPLUGIN_SHUTDOWN_TRIGGERED = 11325 +ER_XPLUGIN_USER_ACCOUNT_WITH_ALL_PERMISSIONS = 11326 +ER_XPLUGIN_EXISTING_USER_ACCOUNT_WITH_INCOMPLETE_GRANTS = 11327 +ER_XPLUGIN_SERVER_STARTS_HANDLING_CONNECTIONS = 11328 +ER_XPLUGIN_SERVER_STOPPED_HANDLING_CONNECTIONS = 11329 +ER_XPLUGIN_FAILED_TO_INTERRUPT_SESSION = 11330 +ER_XPLUGIN_CLIENT_RELEASE_TRIGGERED = 11331 +ER_XPLUGIN_IPv6_AVAILABLE = 11332 +ER_XPLUGIN_UNIX_SOCKET_NOT_CONFIGURED = 11333 +ER_XPLUGIN_CLIENT_KILL_MSG = 11334 +ER_XPLUGIN_FAILED_TO_GET_SECURITY_CTX = 11335 +ER_XPLUGIN_FAILED_TO_SWITCH_SECURITY_CTX_TO_ROOT = 11336 +ER_XPLUGIN_FAILED_TO_CLOSE_SQL_SESSION = 11337 +ER_XPLUGIN_FAILED_TO_EXECUTE_ADMIN_CMD = 11338 +ER_XPLUGIN_EMPTY_ADMIN_CMD = 11339 +ER_XPLUGIN_FAILED_TO_GET_SYS_VAR = 11340 +ER_XPLUGIN_FAILED_TO_GET_CREATION_STMT = 11341 +ER_XPLUGIN_FAILED_TO_GET_ENGINE_INFO = 11342 +ER_XPLUGIN_FAIL_TO_GET_RESULT_DATA = 11343 +ER_XPLUGIN_CAPABILITY_EXPIRED_PASSWORD = 11344 +ER_XPLUGIN_FAILED_TO_SET_SO_REUSEADDR_FLAG = 11345 +ER_XPLUGIN_FAILED_TO_OPEN_INTERNAL_SESSION = 11346 +ER_XPLUGIN_FAILED_TO_SWITCH_CONTEXT = 11347 +ER_XPLUGIN_FAILED_TO_UNREGISTER_UDF = 11348 +ER_XPLUGIN_GET_PEER_ADDRESS_FAILED = 11349 +ER_XPLUGIN_CAPABILITY_CLIENT_INTERACTIVE_FAILED = 11350 +ER_XPLUGIN_FAILED_TO_RESET_IPV6_V6ONLY_FLAG = 11351 +ER_KEYRING_INVALID_KEY_TYPE = 11352 +ER_KEYRING_INVALID_KEY_LENGTH = 11353 +ER_KEYRING_FAILED_TO_CREATE_KEYRING_DIR = 11354 +ER_KEYRING_FILE_INIT_FAILED = 11355 +ER_KEYRING_INTERNAL_EXCEPTION_FAILED_FILE_INIT = 11356 +ER_KEYRING_FAILED_TO_GENERATE_KEY = 11357 +ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_INVALID_KEY = 11358 +ER_KEYRING_CHECK_KEY_FAILED_DUE_TO_EMPTY_KEY_ID = 11359 +ER_KEYRING_OPERATION_FAILED_DUE_TO_INTERNAL_ERROR = 11360 +ER_KEYRING_INCORRECT_FILE = 11361 +ER_KEYRING_FOUND_MALFORMED_BACKUP_FILE = 11362 +ER_KEYRING_FAILED_TO_RESTORE_FROM_BACKUP_FILE = 11363 +ER_KEYRING_FAILED_TO_FLUSH_KEYRING_TO_FILE = 11364 +ER_KEYRING_FAILED_TO_GET_FILE_STAT = 11365 +ER_KEYRING_FAILED_TO_REMOVE_FILE = 11366 +ER_KEYRING_FAILED_TO_TRUNCATE_FILE = 11367 +ER_KEYRING_UNKNOWN_ERROR = 11368 +ER_KEYRING_FAILED_TO_SET_KEYRING_FILE_DATA = 11369 +ER_KEYRING_FILE_IO_ERROR = 11370 +ER_KEYRING_FAILED_TO_LOAD_KEYRING_CONTENT = 11371 +ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING = 11372 +ER_KEYRING_FAILED_TO_FLUSH_KEYS_TO_KEYRING_BACKUP = 11373 +ER_KEYRING_KEY_FETCH_FAILED_DUE_TO_EMPTY_KEY_ID = 11374 +ER_KEYRING_FAILED_TO_REMOVE_KEY_DUE_TO_EMPTY_ID = 11375 +ER_KEYRING_OKV_INCORRECT_KEY_VAULT_CONFIGURED = 11376 +ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INCORRECT_CONF = 11377 +ER_KEYRING_OKV_INIT_FAILED_DUE_TO_INTERNAL_ERROR = 11378 +ER_KEYRING_OKV_INVALID_KEY_TYPE = 11379 +ER_KEYRING_OKV_INVALID_KEY_LENGTH_FOR_CIPHER = 11380 +ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR = 11381 +ER_KEYRING_OKV_FAILED_TO_FIND_SERVER_ENTRY = 11382 +ER_KEYRING_OKV_FAILED_TO_FIND_STANDBY_SERVER_ENTRY = 11383 +ER_KEYRING_OKV_FAILED_TO_PARSE_CONF_FILE = 11384 +ER_KEYRING_OKV_FAILED_TO_LOAD_KEY_UID = 11385 +ER_KEYRING_OKV_FAILED_TO_INIT_SSL_LAYER = 11386 +ER_KEYRING_OKV_FAILED_TO_INIT_CLIENT = 11387 +ER_KEYRING_OKV_CONNECTION_TO_SERVER_FAILED = 11388 +ER_KEYRING_OKV_FAILED_TO_REMOVE_KEY = 11389 +ER_KEYRING_OKV_FAILED_TO_ADD_ATTRIBUTE = 11390 +ER_KEYRING_OKV_FAILED_TO_GENERATE_KEY = 11391 +ER_KEYRING_OKV_FAILED_TO_STORE_KEY = 11392 +ER_KEYRING_OKV_FAILED_TO_ACTIVATE_KEYS = 11393 +ER_KEYRING_OKV_FAILED_TO_FETCH_KEY = 11394 +ER_KEYRING_OKV_FAILED_TO_STORE_OR_GENERATE_KEY = 11395 +ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY_SIGNATURE = 11396 +ER_KEYRING_OKV_FAILED_TO_RETRIEVE_KEY = 11397 +ER_KEYRING_OKV_FAILED_TO_LOAD_SSL_TRUST_STORE = 11398 +ER_KEYRING_OKV_FAILED_TO_SET_CERTIFICATE_FILE = 11399 +ER_KEYRING_OKV_FAILED_TO_SET_KEY_FILE = 11400 +ER_KEYRING_OKV_KEY_MISMATCH = 11401 +ER_KEYRING_ENCRYPTED_FILE_INCORRECT_KEYRING_FILE = 11402 +ER_KEYRING_ENCRYPTED_FILE_DECRYPTION_FAILED = 11403 +ER_KEYRING_ENCRYPTED_FILE_FOUND_MALFORMED_BACKUP_FILE = 11404 +ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_RESTORE_KEYRING = 11405 +ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_FLUSH_KEYRING = 11406 +ER_KEYRING_ENCRYPTED_FILE_ENCRYPTION_FAILED = 11407 +ER_KEYRING_ENCRYPTED_FILE_INVALID_KEYRING_DIR = 11408 +ER_KEYRING_ENCRYPTED_FILE_FAILED_TO_CREATE_KEYRING_DIR = 11409 +ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_INVALID = 11410 +ER_KEYRING_ENCRYPTED_FILE_PASSWORD_IS_TOO_LONG = 11411 +ER_KEYRING_ENCRYPTED_FILE_INIT_FAILURE = 11412 +ER_KEYRING_ENCRYPTED_FILE_INIT_FAILED_DUE_TO_INTERNAL_ERROR = 11413 +ER_KEYRING_ENCRYPTED_FILE_GEN_KEY_FAILED_DUE_TO_INTERNAL_ERROR = 11414 +ER_KEYRING_AWS_FAILED_TO_SET_CMK_ID = 11415 +ER_KEYRING_AWS_FAILED_TO_SET_REGION = 11416 +ER_KEYRING_AWS_FAILED_TO_OPEN_CONF_FILE = 11417 +ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_ID_FROM_CONF_FILE = 11418 +ER_KEYRING_AWS_FAILED_TO_ACCESS_KEY_FROM_CONF_FILE = 11419 +ER_KEYRING_AWS_INVALID_CONF_FILE_PATH = 11420 +ER_KEYRING_AWS_INVALID_DATA_FILE_PATH = 11421 +ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DIR = 11422 +ER_KEYRING_AWS_FAILED_TO_ACCESS_OR_CREATE_KEYRING_DATA_FILE = 11423 +ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_INTERNAL_ERROR = 11424 +ER_KEYRING_AWS_FAILED_TO_ACCESS_DATA_FILE = 11425 +ER_KEYRING_AWS_CMK_ID_NOT_SET = 11426 +ER_KEYRING_AWS_FAILED_TO_GET_KMS_CREDENTIAL_FROM_CONF_FILE = 11427 +ER_KEYRING_AWS_INIT_FAILURE = 11428 +ER_KEYRING_AWS_FAILED_TO_INIT_DUE_TO_PLUGIN_INTERNAL_ERROR = 11429 +ER_KEYRING_AWS_INVALID_KEY_LENGTH_FOR_CIPHER = 11430 +ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR = 11431 +ER_KEYRING_AWS_INCORRECT_FILE = 11432 +ER_KEYRING_AWS_FOUND_MALFORMED_BACKUP_FILE = 11433 +ER_KEYRING_AWS_FAILED_TO_RESTORE_FROM_BACKUP_FILE = 11434 +ER_KEYRING_AWS_FAILED_TO_FLUSH_KEYRING_TO_FILE = 11435 +ER_KEYRING_AWS_INCORRECT_REGION = 11436 +ER_KEYRING_AWS_FAILED_TO_CONNECT_KMS = 11437 +ER_KEYRING_AWS_FAILED_TO_GENERATE_NEW_KEY = 11438 +ER_KEYRING_AWS_FAILED_TO_ENCRYPT_KEY = 11439 +ER_KEYRING_AWS_FAILED_TO_RE_ENCRYPT_KEY = 11440 +ER_KEYRING_AWS_FAILED_TO_DECRYPT_KEY = 11441 +ER_KEYRING_AWS_FAILED_TO_ROTATE_CMK = 11442 +ER_GRP_RPL_GTID_ALREADY_USED = 11443 +ER_GRP_RPL_APPLIER_THD_KILLED = 11444 +ER_GRP_RPL_EVENT_HANDLING_ERROR = 11445 +ER_GRP_RPL_ERROR_GTID_EXECUTION_INFO = 11446 +ER_GRP_RPL_CERTIFICATE_SIZE_ERROR = 11447 +ER_GRP_RPL_CREATE_APPLIER_CACHE_ERROR = 11448 +ER_GRP_RPL_UNBLOCK_WAITING_THD = 11449 +ER_GRP_RPL_APPLIER_PIPELINE_NOT_DISPOSED = 11450 +ER_GRP_RPL_APPLIER_THD_EXECUTION_ABORTED = 11451 +ER_GRP_RPL_APPLIER_EXECUTION_FATAL_ERROR = 11452 +ER_GRP_RPL_ERROR_STOPPING_CHANNELS = 11453 +ER_GRP_RPL_ERROR_SENDING_SINGLE_PRIMARY_MSSG = 11454 +ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_VER_ERROR = 11455 +ER_GRP_RPL_SIDNO_FETCH_ERROR = 11456 +ER_GRP_RPL_BROADCAST_COMMIT_TRANS_MSSG_FAILED = 11457 +ER_GRP_RPL_GROUP_NAME_PARSE_ERROR = 11458 +ER_GRP_RPL_ADD_GRPSID_TO_GRPGTIDSID_MAP_ERROR = 11459 +ER_GRP_RPL_UPDATE_GRPGTID_EXECUTED_ERROR = 11460 +ER_GRP_RPL_DONOR_TRANS_INFO_ERROR = 11461 +ER_GRP_RPL_SERVER_CONN_ERROR = 11462 +ER_GRP_RPL_ERROR_FETCHING_GTID_EXECUTED_SET = 11463 +ER_GRP_RPL_ADD_GTID_TO_GRPGTID_EXECUTED_ERROR = 11464 +ER_GRP_RPL_ERROR_FETCHING_GTID_SET = 11465 +ER_GRP_RPL_ADD_RETRIEVED_SET_TO_GRP_GTID_EXECUTED_ERROR = 11466 +ER_GRP_RPL_CERTIFICATION_INITIALIZATION_FAILURE = 11467 +ER_GRP_RPL_UPDATE_LAST_CONFLICT_FREE_TRANS_ERROR = 11468 +ER_GRP_RPL_UPDATE_TRANS_SNAPSHOT_REF_VER_ERROR = 11469 +ER_GRP_RPL_FETCH_TRANS_SIDNO_ERROR = 11470 +ER_GRP_RPL_ERROR_VERIFYING_SIDNO = 11471 +ER_GRP_RPL_CANT_GENERATE_GTID = 11472 +ER_GRP_RPL_INVALID_GTID_SET = 11473 +ER_GRP_RPL_UPDATE_GTID_SET_ERROR = 11474 +ER_GRP_RPL_RECEIVED_SET_MISSING_GTIDS = 11475 +ER_GRP_RPL_SKIP_COMPUTATION_TRANS_COMMITTED = 11476 +ER_GRP_RPL_NULL_PACKET = 11477 +ER_GRP_RPL_CANT_READ_GTID = 11478 +ER_GRP_RPL_PROCESS_GTID_SET_ERROR = 11479 +ER_GRP_RPL_PROCESS_INTERSECTION_GTID_SET_ERROR = 11480 +ER_GRP_RPL_SET_STABLE_TRANS_ERROR = 11481 +ER_GRP_RPL_CANT_READ_GRP_GTID_EXTRACTED = 11482 +ER_GRP_RPL_CANT_READ_WRITE_SET_ITEM = 11483 +ER_GRP_RPL_INIT_CERTIFICATION_INFO_FAILURE = 11484 +ER_GRP_RPL_CONFLICT_DETECTION_DISABLED = 11485 +ER_GRP_RPL_MSG_DISCARDED = 11486 +ER_GRP_RPL_MISSING_GRP_RPL_APPLIER = 11487 +ER_GRP_RPL_CERTIFIER_MSSG_PROCESS_ERROR = 11488 +ER_GRP_RPL_SRV_NOT_ONLINE = 11489 +ER_GRP_RPL_SRV_ONLINE = 11490 +ER_GRP_RPL_DISABLE_SRV_READ_MODE_RESTRICTED = 11491 +ER_GRP_RPL_MEM_ONLINE = 11492 +ER_GRP_RPL_MEM_UNREACHABLE = 11493 +ER_GRP_RPL_MEM_REACHABLE = 11494 +ER_GRP_RPL_SRV_BLOCKED = 11495 +ER_GRP_RPL_SRV_BLOCKED_FOR_SECS = 11496 +ER_GRP_RPL_CHANGE_GRP_MEM_NOT_PROCESSED = 11497 +ER_GRP_RPL_MEMBER_CONTACT_RESTORED = 11498 +ER_GRP_RPL_MEMBER_REMOVED = 11499 +ER_GRP_RPL_PRIMARY_MEMBER_LEFT_GRP = 11500 +ER_GRP_RPL_MEMBER_ADDED = 11501 +ER_GRP_RPL_MEMBER_EXIT_PLUGIN_ERROR = 11502 +ER_GRP_RPL_MEMBER_CHANGE = 11503 +ER_GRP_RPL_MEMBER_LEFT_GRP = 11504 +ER_GRP_RPL_MEMBER_EXPELLED = 11505 +ER_GRP_RPL_SESSION_OPEN_FAILED = 11506 +ER_GRP_RPL_NEW_PRIMARY_ELECTED = 11507 +ER_GRP_RPL_DISABLE_READ_ONLY_FAILED = 11508 +ER_GRP_RPL_ENABLE_READ_ONLY_FAILED = 11509 +ER_GRP_RPL_SRV_PRIMARY_MEM = 11510 +ER_GRP_RPL_SRV_SECONDARY_MEM = 11511 +ER_GRP_RPL_NO_SUITABLE_PRIMARY_MEM = 11512 +ER_GRP_RPL_SUPER_READ_ONLY_ACTIVATE_ERROR = 11513 +ER_GRP_RPL_EXCEEDS_AUTO_INC_VALUE = 11514 +ER_GRP_RPL_DATA_NOT_PROVIDED_BY_MEM = 11515 +ER_GRP_RPL_MEMBER_ALREADY_EXISTS = 11516 +ER_GRP_RPL_GRP_CHANGE_INFO_EXTRACT_ERROR = 11517 +ER_GRP_RPL_GTID_EXECUTED_EXTRACT_ERROR = 11518 +ER_GRP_RPL_GTID_SET_EXTRACT_ERROR = 11519 +ER_GRP_RPL_START_FAILED = 11520 +ER_GRP_RPL_MEMBER_VER_INCOMPATIBLE = 11521 +ER_GRP_RPL_TRANS_NOT_PRESENT_IN_GRP = 11522 +ER_GRP_RPL_TRANS_GREATER_THAN_GRP = 11523 +ER_GRP_RPL_MEMBER_VERSION_LOWER_THAN_GRP = 11524 +ER_GRP_RPL_LOCAL_GTID_SETS_PROCESS_ERROR = 11525 +ER_GRP_RPL_MEMBER_TRANS_GREATER_THAN_GRP = 11526 +ER_GRP_RPL_BLOCK_SIZE_DIFF_FROM_GRP = 11527 +ER_GRP_RPL_TRANS_WRITE_SET_EXTRACT_DIFF_FROM_GRP = 11528 +ER_GRP_RPL_MEMBER_CFG_INCOMPATIBLE_WITH_GRP_CFG = 11529 +ER_GRP_RPL_MEMBER_STOP_RPL_CHANNELS_ERROR = 11530 +ER_GRP_RPL_PURGE_APPLIER_LOGS = 11531 +ER_GRP_RPL_RESET_APPLIER_MODULE_LOGS_ERROR = 11532 +ER_GRP_RPL_APPLIER_THD_SETUP_ERROR = 11533 +ER_GRP_RPL_APPLIER_THD_START_ERROR = 11534 +ER_GRP_RPL_APPLIER_THD_STOP_ERROR = 11535 +ER_GRP_RPL_FETCH_TRANS_DATA_FAILED = 11536 +ER_GRP_RPL_SLAVE_IO_THD_PRIMARY_UNKNOWN = 11537 +ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER = 11538 +ER_GRP_RPL_SLAVE_SQL_THD_PRIMARY_UNKNOWN = 11539 +ER_GRP_RPL_SLAVE_SQL_THD_ON_SECONDARY_MEMBER = 11540 +ER_GRP_RPL_NEEDS_INNODB_TABLE = 11541 +ER_GRP_RPL_PRIMARY_KEY_NOT_DEFINED = 11542 +ER_GRP_RPL_FK_WITH_CASCADE_UNSUPPORTED = 11543 +ER_GRP_RPL_AUTO_INC_RESET = 11544 +ER_GRP_RPL_AUTO_INC_OFFSET_RESET = 11545 +ER_GRP_RPL_AUTO_INC_SET = 11546 +ER_GRP_RPL_AUTO_INC_OFFSET_SET = 11547 +ER_GRP_RPL_FETCH_TRANS_CONTEXT_FAILED = 11548 +ER_GRP_RPL_FETCH_FORMAT_DESC_LOG_EVENT_FAILED = 11549 +ER_GRP_RPL_FETCH_TRANS_CONTEXT_LOG_EVENT_FAILED = 11550 +ER_GRP_RPL_FETCH_SNAPSHOT_VERSION_FAILED = 11551 +ER_GRP_RPL_FETCH_GTID_LOG_EVENT_FAILED = 11552 +ER_GRP_RPL_UPDATE_SERV_CERTIFICATE_FAILED = 11553 +ER_GRP_RPL_ADD_GTID_INFO_WITH_LOCAL_GTID_FAILED = 11554 +ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_LOCAL_GTID_FAILED = 11555 +ER_GRP_RPL_NOTIFY_CERTIFICATION_OUTCOME_FAILED = 11556 +ER_GRP_RPL_ADD_GTID_INFO_WITH_REMOTE_GTID_FAILED = 11557 +ER_GRP_RPL_ADD_GTID_INFO_WITHOUT_REMOTE_GTID_FAILED = 11558 +ER_GRP_RPL_FETCH_VIEW_CHANGE_LOG_EVENT_FAILED = 11559 +ER_GRP_RPL_CONTACT_WITH_SRV_FAILED = 11560 +ER_GRP_RPL_SRV_WAIT_TIME_OUT = 11561 +ER_GRP_RPL_FETCH_LOG_EVENT_FAILED = 11562 +ER_GRP_RPL_START_GRP_RPL_FAILED = 11563 +ER_GRP_RPL_CONN_INTERNAL_PLUGIN_FAIL = 11564 +ER_GRP_RPL_SUPER_READ_ON = 11565 +ER_GRP_RPL_SUPER_READ_OFF = 11566 +ER_GRP_RPL_KILLED_SESSION_ID = 11567 +ER_GRP_RPL_KILLED_FAILED_ID = 11568 +ER_GRP_RPL_INTERNAL_QUERY = 11569 +ER_GRP_RPL_COPY_FROM_EMPTY_STRING = 11570 +ER_GRP_RPL_QUERY_FAIL = 11571 +ER_GRP_RPL_CREATE_SESSION_UNABLE = 11572 +ER_GRP_RPL_MEMBER_NOT_FOUND = 11573 +ER_GRP_RPL_MAXIMUM_CONNECTION_RETRIES_REACHED = 11574 +ER_GRP_RPL_ALL_DONORS_LEFT_ABORT_RECOVERY = 11575 +ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_DONOR = 11576 +ER_GRP_RPL_ESTABLISH_RECOVERY_WITH_ANOTHER_DONOR = 11577 +ER_GRP_RPL_NO_VALID_DONOR = 11578 +ER_GRP_RPL_CONFIG_RECOVERY = 11579 +ER_GRP_RPL_ESTABLISHING_CONN_GRP_REC_DONOR = 11580 +ER_GRP_RPL_CREATE_GRP_RPL_REC_CHANNEL = 11581 +ER_GRP_RPL_DONOR_SERVER_CONN = 11582 +ER_GRP_RPL_CHECK_STATUS_TABLE = 11583 +ER_GRP_RPL_STARTING_GRP_REC = 11584 +ER_GRP_RPL_DONOR_CONN_TERMINATION = 11585 +ER_GRP_RPL_STOPPING_GRP_REC = 11586 +ER_GRP_RPL_PURGE_REC = 11587 +ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER = 11588 +ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_FAILOVER = 11589 +ER_GRP_RPL_FAILED_TO_NOTIFY_GRP_MEMBERSHIP_EVENT = 11590 +ER_GRP_RPL_FAILED_TO_BROADCAST_GRP_MEMBERSHIP_NOTIFICATION = 11591 +ER_GRP_RPL_FAILED_TO_BROADCAST_MEMBER_STATUS_NOTIFICATION = 11592 +ER_GRP_RPL_OOM_FAILED_TO_GENERATE_IDENTIFICATION_HASH = 11593 +ER_GRP_RPL_WRITE_IDENT_HASH_BASE64_ENCODING_FAILED = 11594 +ER_GRP_RPL_INVALID_BINLOG_FORMAT = 11595 +ER_GRP_RPL_BINLOG_CHECKSUM_SET = 11596 +ER_GRP_RPL_TRANS_WRITE_SET_EXTRACTION_NOT_SET = 11597 +ER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATION = 11598 +ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_STOPPING = 11599 +ER_GRP_RPL_CANNOT_EXECUTE_TRANS_WHILE_RECOVERING = 11600 +ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_ERROR_STATE = 11601 +ER_GRP_RPL_CANNOT_EXECUTE_TRANS_IN_OFFLINE_MODE = 11602 +ER_GRP_RPL_MULTIPLE_CACHE_TYPE_NOT_SUPPORTED_FOR_SESSION = 11603 +ER_GRP_RPL_FAILED_TO_REINIT_BINLOG_CACHE_FOR_READ = 11604 +ER_GRP_RPL_FAILED_TO_CREATE_TRANS_CONTEXT = 11605 +ER_GRP_RPL_FAILED_TO_EXTRACT_TRANS_WRITE_SET = 11606 +ER_GRP_RPL_FAILED_TO_GATHER_TRANS_WRITE_SET = 11607 +ER_GRP_RPL_TRANS_SIZE_EXCEEDS_LIMIT = 11608 +ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_READ_FAILED = 11609 +ER_GRP_RPL_APPENDING_DATA_TO_INTERNAL_CACHE_FAILED = 11610 +ER_GRP_RPL_WRITE_TO_BINLOG_CACHE_FAILED = 11611 +ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_OUTCOME_NOTIFICTION = 11612 +ER_GRP_RPL_MSG_TOO_LONG_BROADCASTING_TRANS_FAILED = 11613 +ER_GRP_RPL_BROADCASTING_TRANS_TO_GRP_FAILED = 11614 +ER_GRP_RPL_ERROR_WHILE_WAITING_FOR_CONFLICT_DETECTION = 11615 +ER_GRP_RPL_REINIT_OF_INTERNAL_CACHE_FOR_WRITE_FAILED = 11616 +ER_GRP_RPL_FAILED_TO_CREATE_COMMIT_CACHE = 11617 +ER_GRP_RPL_REINIT_OF_COMMIT_CACHE_FOR_WRITE_FAILED = 11618 +ER_GRP_RPL_PREV_REC_SESSION_RUNNING = 11619 +ER_GRP_RPL_FATAL_REC_PROCESS = 11620 +ER_GRP_RPL_WHILE_STOPPING_REP_CHANNEL = 11621 +ER_GRP_RPL_UNABLE_TO_EVALUATE_APPLIER_STATUS = 11622 +ER_GRP_RPL_ONLY_ONE_SERVER_ALIVE = 11623 +ER_GRP_RPL_CERTIFICATION_REC_PROCESS = 11624 +ER_GRP_RPL_UNABLE_TO_ENSURE_EXECUTION_REC = 11625 +ER_GRP_RPL_WHILE_SENDING_MSG_REC = 11626 +ER_GRP_RPL_READ_UNABLE_FOR_SUPER_READ_ONLY = 11627 +ER_GRP_RPL_READ_UNABLE_FOR_READ_ONLY_SUPER_READ_ONLY = 11628 +ER_GRP_RPL_UNABLE_TO_RESET_SERVER_READ_MODE = 11629 +ER_GRP_RPL_UNABLE_TO_CERTIFY_PLUGIN_TRANS = 11630 +ER_GRP_RPL_UNBLOCK_CERTIFIED_TRANS = 11631 +ER_GRP_RPL_SERVER_WORKING_AS_SECONDARY = 11632 +ER_GRP_RPL_FAILED_TO_START_WITH_INVALID_SERVER_ID = 11633 +ER_GRP_RPL_FORCE_MEMBERS_MUST_BE_EMPTY = 11634 +ER_GRP_RPL_PLUGIN_STRUCT_INIT_NOT_POSSIBLE_ON_SERVER_START = 11635 +ER_GRP_RPL_FAILED_TO_ENABLE_SUPER_READ_ONLY_MODE = 11636 +ER_GRP_RPL_FAILED_TO_INIT_COMMUNICATION_ENGINE = 11637 +ER_GRP_RPL_FAILED_TO_START_ON_SECONDARY_WITH_ASYNC_CHANNELS = 11638 +ER_GRP_RPL_FAILED_TO_START_COMMUNICATION_ENGINE = 11639 +ER_GRP_RPL_TIMEOUT_ON_VIEW_AFTER_JOINING_GRP = 11640 +ER_GRP_RPL_FAILED_TO_CALL_GRP_COMMUNICATION_INTERFACE = 11641 +ER_GRP_RPL_MEMBER_SERVER_UUID_IS_INCOMPATIBLE_WITH_GRP = 11642 +ER_GRP_RPL_MEMBER_CONF_INFO = 11643 +ER_GRP_RPL_FAILED_TO_CONFIRM_IF_SERVER_LEFT_GRP = 11644 +ER_GRP_RPL_SERVER_IS_ALREADY_LEAVING = 11645 +ER_GRP_RPL_SERVER_ALREADY_LEFT = 11646 +ER_GRP_RPL_WAITING_FOR_VIEW_UPDATE = 11647 +ER_GRP_RPL_TIMEOUT_RECEIVING_VIEW_CHANGE_ON_SHUTDOWN = 11648 +ER_GRP_RPL_REQUESTING_NON_MEMBER_SERVER_TO_LEAVE = 11649 +ER_GRP_RPL_IS_STOPPING = 11650 +ER_GRP_RPL_IS_STOPPED = 11651 +ER_GRP_RPL_FAILED_TO_ENABLE_READ_ONLY_MODE_ON_SHUTDOWN = 11652 +ER_GRP_RPL_RECOVERY_MODULE_TERMINATION_TIMED_OUT_ON_SHUTDOWN = 11653 +ER_GRP_RPL_APPLIER_TERMINATION_TIMED_OUT_ON_SHUTDOWN = 11654 +ER_GRP_RPL_FAILED_TO_SHUTDOWN_REGISTRY_MODULE = 11655 +ER_GRP_RPL_FAILED_TO_INIT_HANDLER = 11656 +ER_GRP_RPL_FAILED_TO_REGISTER_SERVER_STATE_OBSERVER = 11657 +ER_GRP_RPL_FAILED_TO_REGISTER_TRANS_STATE_OBSERVER = 11658 +ER_GRP_RPL_FAILED_TO_REGISTER_BINLOG_STATE_OBSERVER = 11659 +ER_GRP_RPL_FAILED_TO_START_ON_BOOT = 11660 +ER_GRP_RPL_FAILED_TO_STOP_ON_PLUGIN_UNINSTALL = 11661 +ER_GRP_RPL_FAILED_TO_UNREGISTER_SERVER_STATE_OBSERVER = 11662 +ER_GRP_RPL_FAILED_TO_UNREGISTER_TRANS_STATE_OBSERVER = 11663 +ER_GRP_RPL_FAILED_TO_UNREGISTER_BINLOG_STATE_OBSERVER = 11664 +ER_GRP_RPL_ALL_OBSERVERS_UNREGISTERED = 11665 +ER_GRP_RPL_FAILED_TO_PARSE_THE_GRP_NAME = 11666 +ER_GRP_RPL_FAILED_TO_GENERATE_SIDNO_FOR_GRP = 11667 +ER_GRP_RPL_APPLIER_NOT_STARTED_DUE_TO_RUNNING_PREV_SHUTDOWN = 11668 +ER_GRP_RPL_FAILED_TO_INIT_APPLIER_MODULE = 11669 +ER_GRP_RPL_APPLIER_INITIALIZED = 11670 +ER_GRP_RPL_COMMUNICATION_SSL_CONF_INFO = 11671 +ER_GRP_RPL_ABORTS_AS_SSL_NOT_SUPPORTED_BY_MYSQLD = 11672 +ER_GRP_RPL_SSL_DISABLED = 11673 +ER_GRP_RPL_UNABLE_TO_INIT_COMMUNICATION_ENGINE = 11674 +ER_GRP_RPL_BINLOG_DISABLED = 11675 +ER_GRP_RPL_GTID_MODE_OFF = 11676 +ER_GRP_RPL_LOG_SLAVE_UPDATES_NOT_SET = 11677 +ER_GRP_RPL_INVALID_TRANS_WRITE_SET_EXTRACTION_VALUE = 11678 +ER_GRP_RPL_RELAY_LOG_INFO_REPO_MUST_BE_TABLE = 11679 +ER_GRP_RPL_MASTER_INFO_REPO_MUST_BE_TABLE = 11680 +ER_GRP_RPL_INCORRECT_TYPE_SET_FOR_PARALLEL_APPLIER = 11681 +ER_GRP_RPL_SLAVE_PRESERVE_COMMIT_ORDER_NOT_SET = 11682 +ER_GRP_RPL_SINGLE_PRIM_MODE_NOT_ALLOWED_WITH_UPDATE_EVERYWHERE = 11683 +ER_GRP_RPL_MODULE_TERMINATE_ERROR = 11684 +ER_GRP_RPL_GRP_NAME_OPTION_MANDATORY = 11685 +ER_GRP_RPL_GRP_NAME_IS_TOO_LONG = 11686 +ER_GRP_RPL_GRP_NAME_IS_NOT_VALID_UUID = 11687 +ER_GRP_RPL_FLOW_CTRL_MIN_QUOTA_GREATER_THAN_MAX_QUOTA = 11688 +ER_GRP_RPL_FLOW_CTRL_MIN_RECOVERY_QUOTA_GREATER_THAN_MAX_QUOTA = 11689 +ER_GRP_RPL_FLOW_CTRL_MAX_QUOTA_SMALLER_THAN_MIN_QUOTAS = 11690 +ER_GRP_RPL_INVALID_SSL_RECOVERY_STRING = 11691 +ER_GRP_RPL_SUPPORTS_ONLY_ONE_FORCE_MEMBERS_SET = 11692 +ER_GRP_RPL_FORCE_MEMBERS_SET_UPDATE_NOT_ALLOWED = 11693 +ER_GRP_RPL_GRP_COMMUNICATION_INIT_WITH_CONF = 11694 +ER_GRP_RPL_UNKNOWN_GRP_RPL_APPLIER_PIPELINE_REQUESTED = 11695 +ER_GRP_RPL_FAILED_TO_BOOTSTRAP_EVENT_HANDLING_INFRASTRUCTURE = 11696 +ER_GRP_RPL_APPLIER_HANDLER_NOT_INITIALIZED = 11697 +ER_GRP_RPL_APPLIER_HANDLER_IS_IN_USE = 11698 +ER_GRP_RPL_APPLIER_HANDLER_ROLE_IS_IN_USE = 11699 +ER_GRP_RPL_FAILED_TO_INIT_APPLIER_HANDLER = 11700 +ER_GRP_RPL_SQL_SERVICE_FAILED_TO_INIT_SESSION_THREAD = 11701 +ER_GRP_RPL_SQL_SERVICE_COMM_SESSION_NOT_INITIALIZED = 11702 +ER_GRP_RPL_SQL_SERVICE_SERVER_SESSION_KILLED = 11703 +ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY = 11704 +ER_GRP_RPL_SQL_SERVICE_SERVER_INTERNAL_FAILURE = 11705 +ER_GRP_RPL_SQL_SERVICE_RETRIES_EXCEEDED_ON_SESSION_STATE = 11706 +ER_GRP_RPL_SQL_SERVICE_FAILED_TO_FETCH_SECURITY_CTX = 11707 +ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER = 11708 +ER_GRP_RPL_SQL_SERVICE_MAX_CONN_ERROR_FROM_SERVER = 11709 +ER_GRP_RPL_SQL_SERVICE_SERVER_ERROR_ON_CONN = 11710 +ER_GRP_RPL_UNREACHABLE_MAJORITY_TIMEOUT_FOR_MEMBER = 11711 +ER_GRP_RPL_SERVER_SET_TO_READ_ONLY_DUE_TO_ERRORS = 11712 +ER_GRP_RPL_GMS_LISTENER_FAILED_TO_LOG_NOTIFICATION = 11713 +ER_GRP_RPL_GRP_COMMUNICATION_ENG_INIT_FAILED = 11714 +ER_GRP_RPL_SET_GRP_COMMUNICATION_ENG_LOGGER_FAILED = 11715 +ER_GRP_RPL_DEBUG_OPTIONS = 11716 +ER_GRP_RPL_INVALID_DEBUG_OPTIONS = 11717 +ER_GRP_RPL_EXIT_GRP_GCS_ERROR = 11718 +ER_GRP_RPL_GRP_MEMBER_OFFLINE = 11719 +ER_GRP_RPL_GCS_INTERFACE_ERROR = 11720 +ER_GRP_RPL_FORCE_MEMBER_VALUE_SET_ERROR = 11721 +ER_GRP_RPL_FORCE_MEMBER_VALUE_SET = 11722 +ER_GRP_RPL_FORCE_MEMBER_VALUE_TIME_OUT = 11723 +ER_GRP_RPL_BROADCAST_COMMIT_MSSG_TOO_BIG = 11724 +ER_GRP_RPL_SEND_STATS_ERROR = 11725 +ER_GRP_RPL_MEMBER_STATS_INFO = 11726 +ER_GRP_RPL_FLOW_CONTROL_STATS = 11727 +ER_GRP_RPL_UNABLE_TO_CONVERT_PACKET_TO_EVENT = 11728 +ER_GRP_RPL_PIPELINE_CREATE_FAILED = 11729 +ER_GRP_RPL_PIPELINE_REINIT_FAILED_WRITE = 11730 +ER_GRP_RPL_UNABLE_TO_CONVERT_EVENT_TO_PACKET = 11731 +ER_GRP_RPL_PIPELINE_FLUSH_FAIL = 11732 +ER_GRP_RPL_PIPELINE_REINIT_FAILED_READ = 11733 +ER_GRP_RPL_STOP_REP_CHANNEL = 11734 +ER_GRP_RPL_GCS_GR_ERROR_MSG = 11735 +ER_GRP_RPL_SLAVE_IO_THREAD_UNBLOCKED = 11736 +ER_GRP_RPL_SLAVE_IO_THREAD_ERROR_OUT = 11737 +ER_GRP_RPL_SLAVE_APPLIER_THREAD_UNBLOCKED = 11738 +ER_GRP_RPL_SLAVE_APPLIER_THREAD_ERROR_OUT = 11739 +ER_LDAP_AUTH_FAILED_TO_CREATE_OR_GET_CONNECTION = 11740 +ER_LDAP_AUTH_DEINIT_FAILED = 11741 +ER_LDAP_AUTH_SKIPPING_USER_GROUP_SEARCH = 11742 +ER_LDAP_AUTH_POOL_DISABLE_MAX_SIZE_ZERO = 11743 +ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT_CREATOR = 11744 +ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_OBJECT = 11745 +ER_LDAP_AUTH_TLS_CONF = 11746 +ER_LDAP_AUTH_TLS_CONNECTION = 11747 +ER_LDAP_AUTH_CONN_POOL_NOT_CREATED = 11748 +ER_LDAP_AUTH_CONN_POOL_INITIALIZING = 11749 +ER_LDAP_AUTH_CONN_POOL_DEINITIALIZING = 11750 +ER_LDAP_AUTH_ZERO_MAX_POOL_SIZE_UNCHANGED = 11751 +ER_LDAP_AUTH_POOL_REINITIALIZING = 11752 +ER_LDAP_AUTH_FAILED_TO_WRITE_PACKET = 11753 +ER_LDAP_AUTH_SETTING_USERNAME = 11754 +ER_LDAP_AUTH_USER_AUTH_DATA = 11755 +ER_LDAP_AUTH_INFO_FOR_USER = 11756 +ER_LDAP_AUTH_USER_GROUP_SEARCH_INFO = 11757 +ER_LDAP_AUTH_GRP_SEARCH_SPECIAL_HDL = 11758 +ER_LDAP_AUTH_GRP_IS_FULL_DN = 11759 +ER_LDAP_AUTH_USER_NOT_FOUND_IN_ANY_GRP = 11760 +ER_LDAP_AUTH_USER_FOUND_IN_MANY_GRPS = 11761 +ER_LDAP_AUTH_USER_HAS_MULTIPLE_GRP_NAMES = 11762 +ER_LDAP_AUTH_SEARCHED_USER_GRP_NAME = 11763 +ER_LDAP_AUTH_OBJECT_CREATE_TIMESTAMP = 11764 +ER_LDAP_AUTH_CERTIFICATE_NAME = 11765 +ER_LDAP_AUTH_FAILED_TO_POOL_DEINIT = 11766 +ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_RECONSTRUCTING = 11767 +ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_INIT_STATE = 11768 +ER_LDAP_AUTH_FAILED_TO_INITIALIZE_POOL_IN_DEINIT_STATE = 11769 +ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_POOL_IN_RECONSTRUCT_STATE = 11770 +ER_LDAP_AUTH_FAILED_TO_DEINITIALIZE_NOT_READY_POOL = 11771 +ER_LDAP_AUTH_FAILED_TO_GET_CONNECTION_AS_PLUGIN_NOT_READY = 11772 +ER_LDAP_AUTH_CONNECTION_POOL_INIT_FAILED = 11773 +ER_LDAP_AUTH_MAX_ALLOWED_CONNECTION_LIMIT_HIT = 11774 +ER_LDAP_AUTH_MAX_POOL_SIZE_SET_FAILED = 11775 +ER_LDAP_AUTH_PLUGIN_FAILED_TO_READ_PACKET = 11776 +ER_LDAP_AUTH_CREATING_LDAP_CONNECTION = 11777 +ER_LDAP_AUTH_GETTING_CONNECTION_FROM_POOL = 11778 +ER_LDAP_AUTH_RETURNING_CONNECTION_TO_POOL = 11779 +ER_LDAP_AUTH_SEARCH_USER_GROUP_ATTR_NOT_FOUND = 11780 +ER_LDAP_AUTH_LDAP_INFO_NULL = 11781 +ER_LDAP_AUTH_FREEING_CONNECTION = 11782 +ER_LDAP_AUTH_CONNECTION_PUSHED_TO_POOL = 11783 +ER_LDAP_AUTH_CONNECTION_CREATOR_ENTER = 11784 +ER_LDAP_AUTH_STARTING_TLS = 11785 +ER_LDAP_AUTH_CONNECTION_GET_LDAP_INFO_NULL = 11786 +ER_LDAP_AUTH_DELETING_CONNECTION_KEY = 11787 +ER_LDAP_AUTH_POOLED_CONNECTION_KEY = 11788 +ER_LDAP_AUTH_CREATE_CONNECTION_KEY = 11789 +ER_LDAP_AUTH_COMMUNICATION_HOST_INFO = 11790 +ER_LDAP_AUTH_METHOD_TO_CLIENT = 11791 +ER_LDAP_AUTH_SASL_REQUEST_FROM_CLIENT = 11792 +ER_LDAP_AUTH_SASL_PROCESS_SASL = 11793 +ER_LDAP_AUTH_SASL_BIND_SUCCESS_INFO = 11794 +ER_LDAP_AUTH_STARTED_FOR_USER = 11795 +ER_LDAP_AUTH_DISTINGUISHED_NAME = 11796 +ER_LDAP_AUTH_INIT_FAILED = 11797 +ER_LDAP_AUTH_OR_GROUP_RETRIEVAL_FAILED = 11798 +ER_LDAP_AUTH_USER_GROUP_SEARCH_FAILED = 11799 +ER_LDAP_AUTH_USER_BIND_FAILED = 11800 +ER_LDAP_AUTH_POOL_GET_FAILED_TO_CREATE_CONNECTION = 11801 +ER_LDAP_AUTH_FAILED_TO_CREATE_LDAP_CONNECTION = 11802 +ER_LDAP_AUTH_FAILED_TO_ESTABLISH_TLS_CONNECTION = 11803 +ER_LDAP_AUTH_FAILED_TO_SEARCH_DN = 11804 +ER_LDAP_AUTH_CONNECTION_POOL_REINIT_ENTER = 11805 +ER_SYSTEMD_NOTIFY_PATH_TOO_LONG = 11806 +ER_SYSTEMD_NOTIFY_CONNECT_FAILED = 11807 +ER_SYSTEMD_NOTIFY_WRITE_FAILED = 11808 +ER_FOUND_MISSING_GTIDS = 11809 +ER_PID_FILE_PRIV_DIRECTORY_INSECURE = 11810 +ER_CANT_CHECK_PID_PATH = 11811 +ER_VALIDATE_PWD_STATUS_VAR_REGISTRATION_FAILED = 11812 +ER_VALIDATE_PWD_STATUS_VAR_UNREGISTRATION_FAILED = 11813 +ER_VALIDATE_PWD_DICT_FILE_OPEN_FAILED = 11814 +ER_VALIDATE_PWD_COULD_BE_NULL = 11815 +ER_VALIDATE_PWD_STRING_CONV_TO_LOWERCASE_FAILED = 11816 +ER_VALIDATE_PWD_STRING_CONV_TO_BUFFER_FAILED = 11817 +ER_VALIDATE_PWD_STRING_HANDLER_MEM_ALLOCATION_FAILED = 11818 +ER_VALIDATE_PWD_STRONG_POLICY_DICT_FILE_UNSPECIFIED = 11819 +ER_VALIDATE_PWD_CONVERT_TO_BUFFER_FAILED = 11820 +ER_VALIDATE_PWD_VARIABLE_REGISTRATION_FAILED = 11821 +ER_VALIDATE_PWD_VARIABLE_UNREGISTRATION_FAILED = 11822 +ER_KEYRING_MIGRATION_EXTRA_OPTIONS = 11823 +OBSOLETE_ER_INVALID_DEFAULT_UTF8MB4_COLLATION = 11824 +ER_IB_MSG_0 = 11825 +ER_IB_MSG_1 = 11826 +ER_IB_MSG_2 = 11827 +ER_IB_MSG_3 = 11828 +ER_IB_MSG_4 = 11829 +ER_IB_MSG_5 = 11830 +ER_IB_MSG_6 = 11831 +ER_IB_MSG_7 = 11832 +ER_IB_MSG_8 = 11833 +ER_IB_MSG_9 = 11834 +ER_IB_MSG_10 = 11835 +ER_IB_MSG_11 = 11836 +ER_IB_MSG_12 = 11837 +ER_IB_MSG_13 = 11838 +ER_IB_MSG_14 = 11839 +ER_IB_MSG_15 = 11840 +ER_IB_MSG_16 = 11841 +ER_IB_MSG_17 = 11842 +ER_IB_MSG_18 = 11843 +ER_IB_MSG_19 = 11844 +ER_IB_MSG_20 = 11845 +ER_IB_MSG_21 = 11846 +ER_IB_MSG_22 = 11847 +ER_IB_MSG_23 = 11848 +ER_IB_MSG_24 = 11849 +ER_IB_MSG_25 = 11850 +ER_IB_MSG_26 = 11851 +ER_IB_MSG_27 = 11852 +ER_IB_MSG_28 = 11853 +ER_IB_MSG_29 = 11854 +ER_IB_MSG_30 = 11855 +ER_IB_MSG_31 = 11856 +ER_IB_MSG_32 = 11857 +ER_IB_MSG_33 = 11858 +ER_IB_MSG_34 = 11859 +ER_IB_MSG_35 = 11860 +ER_IB_MSG_36 = 11861 +ER_IB_MSG_37 = 11862 +ER_IB_MSG_38 = 11863 +ER_IB_MSG_39 = 11864 +ER_IB_MSG_40 = 11865 +ER_IB_MSG_41 = 11866 +ER_IB_MSG_42 = 11867 +ER_IB_MSG_43 = 11868 +ER_IB_MSG_44 = 11869 +ER_IB_MSG_45 = 11870 +ER_IB_MSG_46 = 11871 +ER_IB_MSG_47 = 11872 +ER_IB_MSG_48 = 11873 +ER_IB_MSG_49 = 11874 +ER_IB_MSG_50 = 11875 +ER_IB_MSG_51 = 11876 +ER_IB_MSG_52 = 11877 +ER_IB_MSG_53 = 11878 +ER_IB_MSG_54 = 11879 +ER_IB_MSG_55 = 11880 +ER_IB_MSG_56 = 11881 +ER_IB_MSG_57 = 11882 +ER_IB_MSG_58 = 11883 +ER_IB_MSG_59 = 11884 +ER_IB_MSG_60 = 11885 +ER_IB_MSG_61 = 11886 +ER_IB_MSG_62 = 11887 +ER_IB_MSG_63 = 11888 +ER_IB_MSG_64 = 11889 +ER_IB_MSG_65 = 11890 +ER_IB_MSG_66 = 11891 +ER_IB_MSG_67 = 11892 +ER_IB_MSG_68 = 11893 +ER_IB_MSG_69 = 11894 +ER_IB_MSG_70 = 11895 +ER_IB_MSG_71 = 11896 +ER_IB_MSG_72 = 11897 +ER_IB_MSG_73 = 11898 +ER_IB_MSG_74 = 11899 +ER_IB_MSG_75 = 11900 +ER_IB_MSG_76 = 11901 +ER_IB_MSG_77 = 11902 +ER_IB_MSG_78 = 11903 +ER_IB_MSG_79 = 11904 +ER_IB_MSG_80 = 11905 +ER_IB_MSG_81 = 11906 +ER_IB_MSG_82 = 11907 +ER_IB_MSG_83 = 11908 +ER_IB_MSG_84 = 11909 +ER_IB_MSG_85 = 11910 +ER_IB_MSG_86 = 11911 +ER_IB_MSG_87 = 11912 +ER_IB_MSG_88 = 11913 +ER_IB_MSG_89 = 11914 +ER_IB_MSG_90 = 11915 +ER_IB_MSG_91 = 11916 +ER_IB_MSG_92 = 11917 +ER_IB_MSG_93 = 11918 +ER_IB_MSG_94 = 11919 +ER_IB_MSG_95 = 11920 +ER_IB_MSG_96 = 11921 +ER_IB_MSG_97 = 11922 +ER_IB_MSG_98 = 11923 +ER_IB_MSG_99 = 11924 +ER_IB_MSG_100 = 11925 +ER_IB_MSG_101 = 11926 +ER_IB_MSG_102 = 11927 +ER_IB_MSG_103 = 11928 +ER_IB_MSG_104 = 11929 +ER_IB_MSG_105 = 11930 +ER_IB_MSG_106 = 11931 +ER_IB_MSG_107 = 11932 +ER_IB_MSG_108 = 11933 +ER_IB_MSG_109 = 11934 +ER_IB_MSG_110 = 11935 +ER_IB_MSG_111 = 11936 +ER_IB_MSG_112 = 11937 +ER_IB_MSG_113 = 11938 +ER_IB_MSG_114 = 11939 +ER_IB_MSG_115 = 11940 +ER_IB_MSG_116 = 11941 +ER_IB_MSG_117 = 11942 +ER_IB_MSG_118 = 11943 +ER_IB_MSG_119 = 11944 +ER_IB_MSG_120 = 11945 +ER_IB_MSG_121 = 11946 +ER_IB_MSG_122 = 11947 +ER_IB_MSG_123 = 11948 +ER_IB_MSG_124 = 11949 +ER_IB_MSG_125 = 11950 +ER_IB_MSG_126 = 11951 +ER_IB_MSG_127 = 11952 +ER_IB_MSG_128 = 11953 +ER_IB_MSG_129 = 11954 +ER_IB_MSG_130 = 11955 +ER_IB_MSG_131 = 11956 +ER_IB_MSG_132 = 11957 +ER_IB_MSG_133 = 11958 +ER_IB_MSG_134 = 11959 +ER_IB_MSG_135 = 11960 +ER_IB_MSG_136 = 11961 +ER_IB_MSG_137 = 11962 +ER_IB_MSG_138 = 11963 +ER_IB_MSG_139 = 11964 +ER_IB_MSG_140 = 11965 +ER_IB_MSG_141 = 11966 +ER_IB_MSG_142 = 11967 +ER_IB_MSG_143 = 11968 +ER_IB_MSG_144 = 11969 +ER_IB_MSG_145 = 11970 +ER_IB_MSG_146 = 11971 +ER_IB_MSG_147 = 11972 +ER_IB_MSG_148 = 11973 +ER_IB_MSG_149 = 11974 +ER_IB_MSG_150 = 11975 +ER_IB_MSG_151 = 11976 +ER_IB_MSG_152 = 11977 +ER_IB_MSG_153 = 11978 +ER_IB_MSG_154 = 11979 +ER_IB_MSG_155 = 11980 +ER_IB_MSG_156 = 11981 +ER_IB_MSG_157 = 11982 +ER_IB_MSG_158 = 11983 +ER_IB_MSG_159 = 11984 +ER_IB_MSG_160 = 11985 +ER_IB_MSG_161 = 11986 +ER_IB_MSG_162 = 11987 +ER_IB_MSG_163 = 11988 +ER_IB_MSG_164 = 11989 +ER_IB_MSG_165 = 11990 +ER_IB_MSG_166 = 11991 +ER_IB_MSG_167 = 11992 +ER_IB_MSG_168 = 11993 +ER_IB_MSG_169 = 11994 +ER_IB_MSG_170 = 11995 +ER_IB_MSG_171 = 11996 +ER_IB_MSG_172 = 11997 +ER_IB_MSG_173 = 11998 +ER_IB_MSG_174 = 11999 +ER_IB_MSG_175 = 12000 +ER_IB_MSG_176 = 12001 +ER_IB_MSG_177 = 12002 +ER_IB_MSG_178 = 12003 +ER_IB_MSG_179 = 12004 +ER_IB_MSG_180 = 12005 +ER_IB_MSG_181 = 12006 +ER_IB_MSG_182 = 12007 +ER_IB_MSG_183 = 12008 +ER_IB_MSG_184 = 12009 +ER_IB_MSG_185 = 12010 +ER_IB_MSG_186 = 12011 +ER_IB_MSG_187 = 12012 +ER_IB_MSG_188 = 12013 +ER_IB_MSG_189 = 12014 +ER_IB_MSG_190 = 12015 +ER_IB_MSG_191 = 12016 +ER_IB_MSG_192 = 12017 +ER_IB_MSG_193 = 12018 +ER_IB_MSG_194 = 12019 +ER_IB_MSG_195 = 12020 +ER_IB_MSG_196 = 12021 +ER_IB_MSG_197 = 12022 +ER_IB_MSG_198 = 12023 +ER_IB_MSG_199 = 12024 +ER_IB_MSG_200 = 12025 +ER_IB_MSG_201 = 12026 +ER_IB_MSG_202 = 12027 +ER_IB_MSG_203 = 12028 +ER_IB_MSG_204 = 12029 +ER_IB_MSG_205 = 12030 +ER_IB_MSG_206 = 12031 +ER_IB_MSG_207 = 12032 +ER_IB_MSG_208 = 12033 +ER_IB_MSG_209 = 12034 +ER_IB_MSG_210 = 12035 +ER_IB_MSG_211 = 12036 +ER_IB_MSG_212 = 12037 +ER_IB_MSG_213 = 12038 +ER_IB_MSG_214 = 12039 +ER_IB_MSG_215 = 12040 +ER_IB_MSG_216 = 12041 +ER_IB_MSG_217 = 12042 +ER_IB_MSG_218 = 12043 +ER_IB_MSG_219 = 12044 +ER_IB_MSG_220 = 12045 +ER_IB_MSG_221 = 12046 +ER_IB_MSG_222 = 12047 +ER_IB_MSG_223 = 12048 +ER_IB_MSG_224 = 12049 +ER_IB_MSG_225 = 12050 +ER_IB_MSG_226 = 12051 +ER_IB_MSG_227 = 12052 +ER_IB_MSG_228 = 12053 +ER_IB_MSG_229 = 12054 +ER_IB_MSG_230 = 12055 +ER_IB_MSG_231 = 12056 +ER_IB_MSG_232 = 12057 +ER_IB_MSG_233 = 12058 +ER_IB_MSG_234 = 12059 +ER_IB_MSG_235 = 12060 +ER_IB_MSG_236 = 12061 +ER_IB_MSG_237 = 12062 +ER_IB_MSG_238 = 12063 +ER_IB_MSG_239 = 12064 +ER_IB_MSG_240 = 12065 +ER_IB_MSG_241 = 12066 +ER_IB_MSG_242 = 12067 +ER_IB_MSG_243 = 12068 +ER_IB_MSG_244 = 12069 +ER_IB_MSG_245 = 12070 +ER_IB_MSG_246 = 12071 +ER_IB_MSG_247 = 12072 +ER_IB_MSG_248 = 12073 +ER_IB_MSG_249 = 12074 +ER_IB_MSG_250 = 12075 +ER_IB_MSG_251 = 12076 +ER_IB_MSG_252 = 12077 +ER_IB_MSG_253 = 12078 +ER_IB_MSG_254 = 12079 +ER_IB_MSG_255 = 12080 +ER_IB_MSG_256 = 12081 +ER_IB_MSG_257 = 12082 +ER_IB_MSG_258 = 12083 +ER_IB_MSG_259 = 12084 +ER_IB_MSG_260 = 12085 +ER_IB_MSG_261 = 12086 +ER_IB_MSG_262 = 12087 +ER_IB_MSG_263 = 12088 +ER_IB_MSG_264 = 12089 +ER_IB_MSG_265 = 12090 +ER_IB_MSG_266 = 12091 +ER_IB_MSG_267 = 12092 +ER_IB_MSG_268 = 12093 +ER_IB_MSG_269 = 12094 +ER_IB_MSG_270 = 12095 +ER_IB_MSG_271 = 12096 +ER_IB_MSG_272 = 12097 +ER_IB_MSG_273 = 12098 +ER_IB_MSG_274 = 12099 +ER_IB_MSG_275 = 12100 +ER_IB_MSG_276 = 12101 +ER_IB_MSG_277 = 12102 +ER_IB_MSG_278 = 12103 +ER_IB_MSG_279 = 12104 +ER_IB_MSG_280 = 12105 +ER_IB_MSG_281 = 12106 +ER_IB_MSG_282 = 12107 +ER_IB_MSG_283 = 12108 +ER_IB_MSG_284 = 12109 +ER_IB_MSG_285 = 12110 +ER_IB_MSG_286 = 12111 +ER_IB_MSG_287 = 12112 +ER_IB_MSG_288 = 12113 +ER_IB_MSG_289 = 12114 +ER_IB_MSG_290 = 12115 +ER_IB_MSG_291 = 12116 +ER_IB_MSG_292 = 12117 +ER_IB_MSG_293 = 12118 +ER_IB_MSG_294 = 12119 +ER_IB_MSG_295 = 12120 +ER_IB_MSG_296 = 12121 +ER_IB_MSG_297 = 12122 +ER_IB_MSG_298 = 12123 +ER_IB_MSG_299 = 12124 +ER_IB_MSG_300 = 12125 +ER_IB_MSG_301 = 12126 +ER_IB_MSG_302 = 12127 +ER_IB_MSG_303 = 12128 +ER_IB_MSG_304 = 12129 +ER_IB_MSG_305 = 12130 +ER_IB_MSG_306 = 12131 +ER_IB_MSG_307 = 12132 +ER_IB_MSG_308 = 12133 +ER_IB_MSG_309 = 12134 +ER_IB_MSG_310 = 12135 +ER_IB_MSG_311 = 12136 +ER_IB_MSG_312 = 12137 +ER_IB_MSG_313 = 12138 +ER_IB_MSG_314 = 12139 +ER_IB_MSG_315 = 12140 +ER_IB_MSG_316 = 12141 +ER_IB_MSG_317 = 12142 +ER_IB_MSG_318 = 12143 +ER_IB_MSG_319 = 12144 +ER_IB_MSG_320 = 12145 +ER_IB_MSG_321 = 12146 +ER_IB_MSG_322 = 12147 +ER_IB_MSG_323 = 12148 +ER_IB_MSG_324 = 12149 +ER_IB_MSG_325 = 12150 +ER_IB_MSG_326 = 12151 +ER_IB_MSG_327 = 12152 +ER_IB_MSG_328 = 12153 +ER_IB_MSG_329 = 12154 +ER_IB_MSG_330 = 12155 +ER_IB_MSG_331 = 12156 +ER_IB_MSG_332 = 12157 +ER_IB_MSG_333 = 12158 +ER_IB_MSG_334 = 12159 +ER_IB_MSG_335 = 12160 +ER_IB_MSG_336 = 12161 +ER_IB_MSG_337 = 12162 +ER_IB_MSG_338 = 12163 +ER_IB_MSG_339 = 12164 +ER_IB_MSG_340 = 12165 +ER_IB_MSG_341 = 12166 +ER_IB_MSG_342 = 12167 +ER_IB_MSG_343 = 12168 +ER_IB_MSG_344 = 12169 +ER_IB_MSG_345 = 12170 +ER_IB_MSG_346 = 12171 +ER_IB_MSG_347 = 12172 +ER_IB_MSG_348 = 12173 +ER_IB_MSG_349 = 12174 +ER_IB_MSG_350 = 12175 +ER_IB_MSG_351 = 12176 +ER_IB_MSG_352 = 12177 +ER_IB_MSG_353 = 12178 +ER_IB_MSG_354 = 12179 +ER_IB_MSG_355 = 12180 +ER_IB_MSG_356 = 12181 +ER_IB_MSG_357 = 12182 +ER_IB_MSG_358 = 12183 +ER_IB_MSG_359 = 12184 +ER_IB_MSG_360 = 12185 +ER_IB_MSG_361 = 12186 +ER_IB_MSG_362 = 12187 +ER_IB_MSG_363 = 12188 +ER_IB_MSG_364 = 12189 +ER_IB_MSG_365 = 12190 +ER_IB_MSG_366 = 12191 +ER_IB_MSG_367 = 12192 +ER_IB_MSG_368 = 12193 +ER_IB_MSG_369 = 12194 +ER_IB_MSG_370 = 12195 +ER_IB_MSG_371 = 12196 +ER_IB_MSG_372 = 12197 +ER_IB_MSG_373 = 12198 +ER_IB_MSG_374 = 12199 +ER_IB_MSG_375 = 12200 +ER_IB_MSG_376 = 12201 +ER_IB_MSG_377 = 12202 +ER_IB_MSG_378 = 12203 +ER_IB_MSG_379 = 12204 +ER_IB_MSG_380 = 12205 +ER_IB_MSG_381 = 12206 +ER_IB_MSG_382 = 12207 +ER_IB_MSG_383 = 12208 +ER_IB_MSG_384 = 12209 +ER_IB_MSG_385 = 12210 +ER_IB_MSG_386 = 12211 +ER_IB_MSG_387 = 12212 +ER_IB_MSG_388 = 12213 +ER_IB_MSG_389 = 12214 +ER_IB_MSG_390 = 12215 +ER_IB_MSG_391 = 12216 +ER_IB_MSG_392 = 12217 +ER_IB_MSG_393 = 12218 +ER_IB_MSG_394 = 12219 +ER_IB_MSG_395 = 12220 +ER_IB_MSG_396 = 12221 +ER_IB_MSG_397 = 12222 +ER_IB_MSG_398 = 12223 +ER_IB_MSG_399 = 12224 +ER_IB_MSG_400 = 12225 +ER_IB_MSG_401 = 12226 +ER_IB_MSG_402 = 12227 +ER_IB_MSG_403 = 12228 +ER_IB_MSG_404 = 12229 +ER_IB_MSG_405 = 12230 +ER_IB_MSG_406 = 12231 +ER_IB_MSG_407 = 12232 +ER_IB_MSG_408 = 12233 +ER_IB_MSG_409 = 12234 +ER_IB_MSG_410 = 12235 +ER_IB_MSG_411 = 12236 +ER_IB_MSG_412 = 12237 +ER_IB_MSG_413 = 12238 +ER_IB_MSG_414 = 12239 +ER_IB_MSG_415 = 12240 +ER_IB_MSG_416 = 12241 +ER_IB_MSG_417 = 12242 +ER_IB_MSG_418 = 12243 +ER_IB_MSG_419 = 12244 +ER_IB_MSG_420 = 12245 +ER_IB_MSG_421 = 12246 +ER_IB_MSG_422 = 12247 +ER_IB_MSG_423 = 12248 +ER_IB_MSG_424 = 12249 +ER_IB_MSG_425 = 12250 +ER_IB_MSG_426 = 12251 +ER_IB_MSG_427 = 12252 +ER_IB_MSG_428 = 12253 +ER_IB_MSG_429 = 12254 +ER_IB_MSG_430 = 12255 +ER_IB_MSG_431 = 12256 +ER_IB_MSG_432 = 12257 +ER_IB_MSG_433 = 12258 +ER_IB_MSG_434 = 12259 +ER_IB_MSG_435 = 12260 +ER_IB_MSG_436 = 12261 +ER_IB_MSG_437 = 12262 +ER_IB_MSG_438 = 12263 +ER_IB_MSG_439 = 12264 +ER_IB_MSG_440 = 12265 +ER_IB_MSG_441 = 12266 +ER_IB_MSG_442 = 12267 +ER_IB_MSG_443 = 12268 +ER_IB_MSG_444 = 12269 +ER_IB_MSG_445 = 12270 +ER_IB_MSG_446 = 12271 +ER_IB_MSG_447 = 12272 +ER_IB_MSG_448 = 12273 +ER_IB_MSG_449 = 12274 +ER_IB_MSG_450 = 12275 +ER_IB_MSG_451 = 12276 +ER_IB_MSG_452 = 12277 +ER_IB_MSG_453 = 12278 +ER_IB_MSG_454 = 12279 +ER_IB_MSG_455 = 12280 +ER_IB_MSG_456 = 12281 +ER_IB_MSG_457 = 12282 +ER_IB_MSG_458 = 12283 +ER_IB_MSG_459 = 12284 +ER_IB_MSG_460 = 12285 +ER_IB_MSG_461 = 12286 +ER_IB_MSG_462 = 12287 +ER_IB_MSG_463 = 12288 +ER_IB_MSG_464 = 12289 +ER_IB_MSG_465 = 12290 +ER_IB_MSG_466 = 12291 +ER_IB_MSG_467 = 12292 +ER_IB_MSG_468 = 12293 +ER_IB_MSG_469 = 12294 +ER_IB_MSG_470 = 12295 +ER_IB_MSG_471 = 12296 +ER_IB_MSG_472 = 12297 +ER_IB_MSG_473 = 12298 +ER_IB_MSG_474 = 12299 +ER_IB_MSG_475 = 12300 +ER_IB_MSG_476 = 12301 +ER_IB_MSG_477 = 12302 +ER_IB_MSG_478 = 12303 +ER_IB_MSG_479 = 12304 +ER_IB_MSG_480 = 12305 +ER_IB_MSG_481 = 12306 +ER_IB_MSG_482 = 12307 +ER_IB_MSG_483 = 12308 +ER_IB_MSG_484 = 12309 +ER_IB_MSG_485 = 12310 +ER_IB_MSG_486 = 12311 +ER_IB_MSG_487 = 12312 +ER_IB_MSG_488 = 12313 +ER_IB_MSG_489 = 12314 +ER_IB_MSG_490 = 12315 +ER_IB_MSG_491 = 12316 +ER_IB_MSG_492 = 12317 +ER_IB_MSG_493 = 12318 +ER_IB_MSG_494 = 12319 +ER_IB_MSG_495 = 12320 +ER_IB_MSG_496 = 12321 +ER_IB_MSG_497 = 12322 +ER_IB_MSG_498 = 12323 +ER_IB_MSG_499 = 12324 +ER_IB_MSG_500 = 12325 +ER_IB_MSG_501 = 12326 +ER_IB_MSG_502 = 12327 +ER_IB_MSG_503 = 12328 +ER_IB_MSG_504 = 12329 +ER_IB_MSG_505 = 12330 +ER_IB_MSG_506 = 12331 +ER_IB_MSG_507 = 12332 +ER_IB_MSG_508 = 12333 +ER_IB_MSG_509 = 12334 +ER_IB_MSG_510 = 12335 +ER_IB_MSG_511 = 12336 +ER_IB_MSG_512 = 12337 +ER_IB_MSG_513 = 12338 +ER_IB_MSG_514 = 12339 +ER_IB_MSG_515 = 12340 +ER_IB_MSG_516 = 12341 +ER_IB_MSG_517 = 12342 +ER_IB_MSG_518 = 12343 +ER_IB_MSG_519 = 12344 +ER_IB_MSG_520 = 12345 +ER_IB_MSG_521 = 12346 +ER_IB_MSG_522 = 12347 +ER_IB_MSG_523 = 12348 +ER_IB_MSG_524 = 12349 +ER_IB_MSG_525 = 12350 +ER_IB_MSG_526 = 12351 +ER_IB_MSG_527 = 12352 +ER_IB_MSG_528 = 12353 +ER_IB_MSG_529 = 12354 +ER_IB_MSG_530 = 12355 +ER_IB_MSG_531 = 12356 +ER_IB_MSG_532 = 12357 +ER_IB_MSG_533 = 12358 +ER_IB_MSG_534 = 12359 +ER_IB_MSG_535 = 12360 +ER_IB_MSG_536 = 12361 +ER_IB_MSG_537 = 12362 +ER_IB_MSG_538 = 12363 +ER_IB_MSG_539 = 12364 +ER_IB_MSG_540 = 12365 +ER_IB_MSG_541 = 12366 +ER_IB_MSG_542 = 12367 +ER_IB_MSG_543 = 12368 +ER_IB_MSG_544 = 12369 +ER_IB_MSG_545 = 12370 +ER_IB_MSG_546 = 12371 +ER_IB_MSG_547 = 12372 +ER_IB_MSG_548 = 12373 +ER_IB_MSG_549 = 12374 +ER_IB_MSG_550 = 12375 +ER_IB_MSG_551 = 12376 +ER_IB_MSG_552 = 12377 +ER_IB_MSG_553 = 12378 +ER_IB_MSG_554 = 12379 +ER_IB_MSG_555 = 12380 +ER_IB_MSG_556 = 12381 +ER_IB_MSG_557 = 12382 +ER_IB_MSG_558 = 12383 +ER_IB_MSG_559 = 12384 +ER_IB_MSG_560 = 12385 +ER_IB_MSG_561 = 12386 +ER_IB_MSG_562 = 12387 +ER_IB_MSG_563 = 12388 +ER_IB_MSG_564 = 12389 +ER_IB_MSG_565 = 12390 +ER_IB_MSG_566 = 12391 +ER_IB_MSG_567 = 12392 +ER_IB_MSG_568 = 12393 +ER_IB_MSG_569 = 12394 +ER_IB_MSG_570 = 12395 +ER_IB_MSG_571 = 12396 +ER_IB_MSG_572 = 12397 +ER_IB_MSG_573 = 12398 +ER_IB_MSG_574 = 12399 +ER_IB_MSG_575 = 12400 +ER_IB_MSG_576 = 12401 +ER_IB_MSG_577 = 12402 +ER_IB_MSG_578 = 12403 +ER_IB_MSG_579 = 12404 +ER_IB_MSG_580 = 12405 +ER_IB_MSG_581 = 12406 +ER_IB_MSG_582 = 12407 +ER_IB_MSG_583 = 12408 +ER_IB_MSG_584 = 12409 +ER_IB_MSG_585 = 12410 +ER_IB_MSG_586 = 12411 +ER_IB_MSG_587 = 12412 +ER_IB_MSG_588 = 12413 +ER_IB_MSG_589 = 12414 +ER_IB_MSG_590 = 12415 +ER_IB_MSG_591 = 12416 +ER_IB_MSG_592 = 12417 +ER_IB_MSG_593 = 12418 +ER_IB_MSG_594 = 12419 +ER_IB_MSG_595 = 12420 +ER_IB_MSG_596 = 12421 +ER_IB_MSG_597 = 12422 +ER_IB_MSG_598 = 12423 +ER_IB_MSG_599 = 12424 +ER_IB_MSG_600 = 12425 +ER_IB_MSG_601 = 12426 +ER_IB_MSG_602 = 12427 +ER_IB_MSG_603 = 12428 +ER_IB_MSG_604 = 12429 +ER_IB_MSG_605 = 12430 +ER_IB_MSG_606 = 12431 +ER_IB_MSG_607 = 12432 +ER_IB_MSG_608 = 12433 +ER_IB_MSG_609 = 12434 +ER_IB_MSG_610 = 12435 +ER_IB_MSG_611 = 12436 +ER_IB_MSG_612 = 12437 +ER_IB_MSG_613 = 12438 +ER_IB_MSG_614 = 12439 +ER_IB_MSG_615 = 12440 +ER_IB_MSG_616 = 12441 +ER_IB_MSG_617 = 12442 +ER_IB_MSG_618 = 12443 +ER_IB_MSG_619 = 12444 +ER_IB_MSG_620 = 12445 +ER_IB_MSG_621 = 12446 +ER_IB_MSG_622 = 12447 +ER_IB_MSG_623 = 12448 +ER_IB_MSG_624 = 12449 +ER_IB_MSG_625 = 12450 +ER_IB_MSG_626 = 12451 +ER_IB_MSG_627 = 12452 +ER_IB_MSG_628 = 12453 +ER_IB_MSG_629 = 12454 +ER_IB_MSG_630 = 12455 +ER_IB_MSG_631 = 12456 +ER_IB_MSG_632 = 12457 +ER_IB_MSG_633 = 12458 +ER_IB_MSG_634 = 12459 +ER_IB_MSG_635 = 12460 +ER_IB_MSG_636 = 12461 +ER_IB_MSG_637 = 12462 +ER_IB_MSG_638 = 12463 +ER_IB_MSG_639 = 12464 +ER_IB_MSG_640 = 12465 +ER_IB_MSG_641 = 12466 +ER_IB_MSG_642 = 12467 +ER_IB_MSG_643 = 12468 +ER_IB_MSG_644 = 12469 +ER_IB_MSG_645 = 12470 +ER_IB_MSG_646 = 12471 +ER_IB_MSG_647 = 12472 +ER_IB_MSG_648 = 12473 +ER_IB_MSG_649 = 12474 +ER_IB_MSG_650 = 12475 +ER_IB_MSG_651 = 12476 +ER_IB_MSG_652 = 12477 +ER_IB_MSG_653 = 12478 +ER_IB_MSG_654 = 12479 +ER_IB_MSG_655 = 12480 +ER_IB_MSG_656 = 12481 +ER_IB_MSG_657 = 12482 +ER_IB_MSG_658 = 12483 +ER_IB_MSG_659 = 12484 +ER_IB_MSG_660 = 12485 +ER_IB_MSG_661 = 12486 +ER_IB_MSG_662 = 12487 +ER_IB_MSG_663 = 12488 +ER_IB_MSG_664 = 12489 +ER_IB_MSG_665 = 12490 +ER_IB_MSG_666 = 12491 +ER_IB_MSG_667 = 12492 +ER_IB_MSG_668 = 12493 +ER_IB_MSG_669 = 12494 +ER_IB_MSG_670 = 12495 +ER_IB_MSG_671 = 12496 +ER_IB_MSG_672 = 12497 +ER_IB_MSG_673 = 12498 +ER_IB_MSG_674 = 12499 +ER_IB_MSG_675 = 12500 +ER_IB_MSG_676 = 12501 +ER_IB_MSG_677 = 12502 +ER_IB_MSG_678 = 12503 +ER_IB_MSG_679 = 12504 +ER_IB_MSG_680 = 12505 +ER_IB_MSG_681 = 12506 +ER_IB_MSG_682 = 12507 +ER_IB_MSG_683 = 12508 +ER_IB_MSG_684 = 12509 +ER_IB_MSG_685 = 12510 +ER_IB_MSG_686 = 12511 +ER_IB_MSG_687 = 12512 +ER_IB_MSG_688 = 12513 +ER_IB_MSG_689 = 12514 +ER_IB_MSG_690 = 12515 +ER_IB_MSG_691 = 12516 +ER_IB_MSG_692 = 12517 +ER_IB_MSG_693 = 12518 +ER_IB_MSG_694 = 12519 +ER_IB_MSG_695 = 12520 +ER_IB_MSG_696 = 12521 +ER_IB_MSG_697 = 12522 +ER_IB_MSG_698 = 12523 +ER_IB_MSG_699 = 12524 +ER_IB_MSG_700 = 12525 +ER_IB_MSG_701 = 12526 +ER_IB_MSG_702 = 12527 +ER_IB_MSG_703 = 12528 +ER_IB_MSG_704 = 12529 +ER_IB_MSG_705 = 12530 +ER_IB_MSG_706 = 12531 +ER_IB_MSG_707 = 12532 +ER_IB_MSG_708 = 12533 +ER_IB_MSG_709 = 12534 +ER_IB_MSG_710 = 12535 +ER_IB_MSG_711 = 12536 +ER_IB_MSG_712 = 12537 +ER_IB_MSG_713 = 12538 +ER_IB_MSG_714 = 12539 +ER_IB_MSG_715 = 12540 +ER_IB_MSG_716 = 12541 +ER_IB_MSG_717 = 12542 +ER_IB_MSG_718 = 12543 +ER_IB_MSG_719 = 12544 +ER_IB_MSG_720 = 12545 +ER_IB_MSG_721 = 12546 +ER_IB_MSG_722 = 12547 +ER_IB_MSG_723 = 12548 +ER_IB_MSG_724 = 12549 +ER_IB_MSG_725 = 12550 +ER_IB_MSG_726 = 12551 +ER_IB_MSG_727 = 12552 +ER_IB_MSG_728 = 12553 +ER_IB_MSG_729 = 12554 +ER_IB_MSG_730 = 12555 +ER_IB_MSG_731 = 12556 +ER_IB_MSG_732 = 12557 +ER_IB_MSG_733 = 12558 +ER_IB_MSG_734 = 12559 +ER_IB_MSG_735 = 12560 +ER_IB_MSG_736 = 12561 +ER_IB_MSG_737 = 12562 +ER_IB_MSG_738 = 12563 +ER_IB_MSG_739 = 12564 +ER_IB_MSG_740 = 12565 +ER_IB_MSG_741 = 12566 +ER_IB_MSG_742 = 12567 +ER_IB_MSG_743 = 12568 +ER_IB_MSG_744 = 12569 +ER_IB_MSG_745 = 12570 +ER_IB_MSG_746 = 12571 +ER_IB_MSG_747 = 12572 +ER_IB_MSG_748 = 12573 +ER_IB_MSG_749 = 12574 +ER_IB_MSG_750 = 12575 +ER_IB_MSG_751 = 12576 +ER_IB_MSG_752 = 12577 +ER_IB_MSG_753 = 12578 +ER_IB_MSG_754 = 12579 +ER_IB_MSG_755 = 12580 +ER_IB_MSG_756 = 12581 +ER_IB_MSG_757 = 12582 +ER_IB_MSG_758 = 12583 +ER_IB_MSG_759 = 12584 +ER_IB_MSG_760 = 12585 +ER_IB_MSG_761 = 12586 +ER_IB_MSG_762 = 12587 +ER_IB_MSG_763 = 12588 +ER_IB_MSG_764 = 12589 +ER_IB_MSG_765 = 12590 +ER_IB_MSG_766 = 12591 +ER_IB_MSG_767 = 12592 +ER_IB_MSG_768 = 12593 +ER_IB_MSG_769 = 12594 +ER_IB_MSG_770 = 12595 +ER_IB_MSG_771 = 12596 +ER_IB_MSG_772 = 12597 +ER_IB_MSG_773 = 12598 +ER_IB_MSG_774 = 12599 +ER_IB_MSG_775 = 12600 +ER_IB_MSG_776 = 12601 +ER_IB_MSG_777 = 12602 +ER_IB_MSG_778 = 12603 +ER_IB_MSG_779 = 12604 +ER_IB_MSG_780 = 12605 +ER_IB_MSG_781 = 12606 +ER_IB_MSG_782 = 12607 +ER_IB_MSG_783 = 12608 +ER_IB_MSG_784 = 12609 +ER_IB_MSG_785 = 12610 +ER_IB_MSG_786 = 12611 +ER_IB_MSG_787 = 12612 +ER_IB_MSG_788 = 12613 +ER_IB_MSG_789 = 12614 +ER_IB_MSG_790 = 12615 +ER_IB_MSG_791 = 12616 +ER_IB_MSG_792 = 12617 +ER_IB_MSG_793 = 12618 +ER_IB_MSG_794 = 12619 +ER_IB_MSG_795 = 12620 +ER_IB_MSG_796 = 12621 +ER_IB_MSG_797 = 12622 +ER_IB_MSG_798 = 12623 +ER_IB_MSG_799 = 12624 +ER_IB_MSG_800 = 12625 +ER_IB_MSG_801 = 12626 +ER_IB_MSG_802 = 12627 +ER_IB_MSG_803 = 12628 +ER_IB_MSG_804 = 12629 +ER_IB_MSG_805 = 12630 +ER_IB_MSG_806 = 12631 +ER_IB_MSG_807 = 12632 +ER_IB_MSG_808 = 12633 +ER_IB_MSG_809 = 12634 +ER_IB_MSG_810 = 12635 +ER_IB_MSG_811 = 12636 +ER_IB_MSG_812 = 12637 +ER_IB_MSG_813 = 12638 +ER_IB_MSG_814 = 12639 +ER_IB_MSG_815 = 12640 +ER_IB_MSG_816 = 12641 +ER_IB_MSG_817 = 12642 +ER_IB_MSG_818 = 12643 +ER_IB_MSG_819 = 12644 +ER_IB_MSG_820 = 12645 +ER_IB_MSG_821 = 12646 +ER_IB_MSG_822 = 12647 +ER_IB_MSG_823 = 12648 +ER_IB_MSG_824 = 12649 +ER_IB_MSG_825 = 12650 +ER_IB_MSG_826 = 12651 +ER_IB_MSG_827 = 12652 +ER_IB_MSG_828 = 12653 +ER_IB_MSG_829 = 12654 +ER_IB_MSG_830 = 12655 +ER_IB_MSG_831 = 12656 +ER_IB_MSG_832 = 12657 +ER_IB_MSG_833 = 12658 +ER_IB_MSG_834 = 12659 +ER_IB_MSG_835 = 12660 +ER_IB_MSG_836 = 12661 +ER_IB_MSG_837 = 12662 +ER_IB_MSG_838 = 12663 +ER_IB_MSG_839 = 12664 +ER_IB_MSG_840 = 12665 +ER_IB_MSG_841 = 12666 +ER_IB_MSG_842 = 12667 +ER_IB_MSG_843 = 12668 +ER_IB_MSG_844 = 12669 +ER_IB_MSG_845 = 12670 +ER_IB_MSG_846 = 12671 +ER_IB_MSG_847 = 12672 +ER_IB_MSG_848 = 12673 +ER_IB_MSG_849 = 12674 +ER_IB_MSG_850 = 12675 +ER_IB_MSG_851 = 12676 +ER_IB_MSG_852 = 12677 +ER_IB_MSG_853 = 12678 +ER_IB_MSG_854 = 12679 +ER_IB_MSG_855 = 12680 +ER_IB_MSG_856 = 12681 +ER_IB_MSG_857 = 12682 +ER_IB_MSG_858 = 12683 +ER_IB_MSG_859 = 12684 +ER_IB_MSG_860 = 12685 +ER_IB_MSG_861 = 12686 +ER_IB_MSG_862 = 12687 +ER_IB_MSG_863 = 12688 +ER_IB_MSG_864 = 12689 +ER_IB_MSG_865 = 12690 +ER_IB_MSG_866 = 12691 +ER_IB_MSG_867 = 12692 +ER_IB_MSG_868 = 12693 +ER_IB_MSG_869 = 12694 +ER_IB_MSG_870 = 12695 +ER_IB_MSG_871 = 12696 +ER_IB_MSG_872 = 12697 +ER_IB_MSG_873 = 12698 +ER_IB_MSG_874 = 12699 +ER_IB_MSG_875 = 12700 +ER_IB_MSG_876 = 12701 +ER_IB_MSG_877 = 12702 +ER_IB_MSG_878 = 12703 +ER_IB_MSG_879 = 12704 +ER_IB_MSG_880 = 12705 +ER_IB_MSG_881 = 12706 +ER_IB_MSG_882 = 12707 +ER_IB_MSG_883 = 12708 +ER_IB_MSG_884 = 12709 +ER_IB_MSG_885 = 12710 +ER_IB_MSG_886 = 12711 +ER_IB_MSG_887 = 12712 +ER_IB_MSG_888 = 12713 +ER_IB_MSG_889 = 12714 +ER_IB_MSG_890 = 12715 +ER_IB_MSG_891 = 12716 +ER_IB_MSG_892 = 12717 +ER_IB_MSG_893 = 12718 +ER_IB_MSG_894 = 12719 +ER_IB_MSG_895 = 12720 +ER_IB_MSG_896 = 12721 +ER_IB_MSG_897 = 12722 +ER_IB_MSG_898 = 12723 +ER_IB_MSG_899 = 12724 +ER_IB_MSG_900 = 12725 +ER_IB_MSG_901 = 12726 +ER_IB_MSG_902 = 12727 +ER_IB_MSG_903 = 12728 +ER_IB_MSG_904 = 12729 +ER_IB_MSG_905 = 12730 +ER_IB_MSG_906 = 12731 +ER_IB_MSG_907 = 12732 +ER_IB_MSG_908 = 12733 +ER_IB_MSG_909 = 12734 +ER_IB_MSG_910 = 12735 +ER_IB_MSG_911 = 12736 +ER_IB_MSG_912 = 12737 +ER_IB_MSG_913 = 12738 +ER_IB_MSG_914 = 12739 +ER_IB_MSG_915 = 12740 +ER_IB_MSG_916 = 12741 +ER_IB_MSG_917 = 12742 +ER_IB_MSG_918 = 12743 +ER_IB_MSG_919 = 12744 +ER_IB_MSG_920 = 12745 +ER_IB_MSG_921 = 12746 +ER_IB_MSG_922 = 12747 +ER_IB_MSG_923 = 12748 +ER_IB_MSG_924 = 12749 +ER_IB_MSG_925 = 12750 +ER_IB_MSG_926 = 12751 +ER_IB_MSG_927 = 12752 +ER_IB_MSG_928 = 12753 +ER_IB_MSG_929 = 12754 +ER_IB_MSG_930 = 12755 +ER_IB_MSG_931 = 12756 +ER_IB_MSG_932 = 12757 +ER_IB_MSG_933 = 12758 +ER_IB_MSG_934 = 12759 +ER_IB_MSG_935 = 12760 +ER_IB_MSG_936 = 12761 +ER_IB_MSG_937 = 12762 +ER_IB_MSG_938 = 12763 +ER_IB_MSG_939 = 12764 +ER_IB_MSG_940 = 12765 +ER_IB_MSG_941 = 12766 +ER_IB_MSG_942 = 12767 +ER_IB_MSG_943 = 12768 +ER_IB_MSG_944 = 12769 +ER_IB_MSG_945 = 12770 +ER_IB_MSG_946 = 12771 +ER_IB_MSG_947 = 12772 +ER_IB_MSG_948 = 12773 +ER_IB_MSG_949 = 12774 +ER_IB_MSG_950 = 12775 +ER_IB_MSG_951 = 12776 +ER_IB_MSG_952 = 12777 +ER_IB_MSG_953 = 12778 +ER_IB_MSG_954 = 12779 +ER_IB_MSG_955 = 12780 +ER_IB_MSG_956 = 12781 +ER_IB_MSG_957 = 12782 +ER_IB_MSG_958 = 12783 +ER_IB_MSG_959 = 12784 +ER_IB_MSG_960 = 12785 +ER_IB_MSG_961 = 12786 +ER_IB_MSG_962 = 12787 +ER_IB_MSG_963 = 12788 +ER_IB_MSG_964 = 12789 +ER_IB_MSG_965 = 12790 +ER_IB_MSG_966 = 12791 +ER_IB_MSG_967 = 12792 +ER_IB_MSG_968 = 12793 +ER_IB_MSG_969 = 12794 +ER_IB_MSG_970 = 12795 +ER_IB_MSG_971 = 12796 +ER_IB_MSG_972 = 12797 +ER_IB_MSG_973 = 12798 +ER_IB_MSG_974 = 12799 +ER_IB_MSG_975 = 12800 +ER_IB_MSG_976 = 12801 +ER_IB_MSG_977 = 12802 +ER_IB_MSG_978 = 12803 +ER_IB_MSG_979 = 12804 +ER_IB_MSG_980 = 12805 +ER_IB_MSG_981 = 12806 +ER_IB_MSG_982 = 12807 +ER_IB_MSG_983 = 12808 +ER_IB_MSG_984 = 12809 +ER_IB_MSG_985 = 12810 +ER_IB_MSG_986 = 12811 +ER_IB_MSG_987 = 12812 +ER_IB_MSG_988 = 12813 +ER_IB_MSG_989 = 12814 +ER_IB_MSG_990 = 12815 +ER_IB_MSG_991 = 12816 +ER_IB_MSG_992 = 12817 +ER_IB_MSG_993 = 12818 +ER_IB_MSG_994 = 12819 +ER_IB_MSG_995 = 12820 +ER_IB_MSG_996 = 12821 +ER_IB_MSG_997 = 12822 +ER_IB_MSG_998 = 12823 +ER_IB_MSG_999 = 12824 +ER_IB_MSG_1000 = 12825 +ER_IB_MSG_1001 = 12826 +ER_IB_MSG_1002 = 12827 +ER_IB_MSG_1003 = 12828 +ER_IB_MSG_1004 = 12829 +ER_IB_MSG_1005 = 12830 +ER_IB_MSG_1006 = 12831 +ER_IB_MSG_1007 = 12832 +ER_IB_MSG_1008 = 12833 +ER_IB_MSG_1009 = 12834 +ER_IB_MSG_1010 = 12835 +ER_IB_MSG_1011 = 12836 +ER_IB_MSG_1012 = 12837 +ER_IB_MSG_1013 = 12838 +ER_IB_MSG_1014 = 12839 +ER_IB_MSG_1015 = 12840 +ER_IB_MSG_1016 = 12841 +ER_IB_MSG_1017 = 12842 +ER_IB_MSG_1018 = 12843 +ER_IB_MSG_1019 = 12844 +ER_IB_MSG_1020 = 12845 +ER_IB_MSG_1021 = 12846 +ER_IB_MSG_1022 = 12847 +ER_IB_MSG_1023 = 12848 +ER_IB_MSG_1024 = 12849 +ER_IB_MSG_1025 = 12850 +ER_IB_MSG_1026 = 12851 +ER_IB_MSG_1027 = 12852 +ER_IB_MSG_1028 = 12853 +ER_IB_MSG_1029 = 12854 +ER_IB_MSG_1030 = 12855 +ER_IB_MSG_1031 = 12856 +ER_IB_MSG_1032 = 12857 +ER_IB_MSG_1033 = 12858 +ER_IB_MSG_1034 = 12859 +ER_IB_MSG_1035 = 12860 +ER_IB_MSG_1036 = 12861 +ER_IB_MSG_1037 = 12862 +ER_IB_MSG_1038 = 12863 +ER_IB_MSG_1039 = 12864 +ER_IB_MSG_1040 = 12865 +ER_IB_MSG_1041 = 12866 +ER_IB_MSG_1042 = 12867 +ER_IB_MSG_1043 = 12868 +ER_IB_MSG_1044 = 12869 +ER_IB_MSG_1045 = 12870 +ER_IB_MSG_1046 = 12871 +ER_IB_MSG_1047 = 12872 +ER_IB_MSG_1048 = 12873 +ER_IB_MSG_1049 = 12874 +ER_IB_MSG_1050 = 12875 +ER_IB_MSG_1051 = 12876 +ER_IB_MSG_1052 = 12877 +ER_IB_MSG_1053 = 12878 +ER_IB_MSG_1054 = 12879 +ER_IB_MSG_1055 = 12880 +ER_IB_MSG_1056 = 12881 +ER_IB_MSG_1057 = 12882 +ER_IB_MSG_1058 = 12883 +ER_IB_MSG_1059 = 12884 +ER_IB_MSG_1060 = 12885 +ER_IB_MSG_1061 = 12886 +ER_IB_MSG_1062 = 12887 +ER_IB_MSG_1063 = 12888 +ER_IB_MSG_1064 = 12889 +ER_IB_MSG_1065 = 12890 +ER_IB_MSG_1066 = 12891 +ER_IB_MSG_1067 = 12892 +ER_IB_MSG_1068 = 12893 +ER_IB_MSG_1069 = 12894 +ER_IB_MSG_1070 = 12895 +ER_IB_MSG_1071 = 12896 +ER_IB_MSG_1072 = 12897 +ER_IB_MSG_1073 = 12898 +ER_IB_MSG_1074 = 12899 +ER_IB_MSG_1075 = 12900 +ER_IB_MSG_1076 = 12901 +ER_IB_MSG_1077 = 12902 +ER_IB_MSG_1078 = 12903 +ER_IB_MSG_1079 = 12904 +ER_IB_MSG_1080 = 12905 +ER_IB_MSG_1081 = 12906 +ER_IB_MSG_1082 = 12907 +ER_IB_MSG_1083 = 12908 +ER_IB_MSG_1084 = 12909 +ER_IB_MSG_1085 = 12910 +ER_IB_MSG_1086 = 12911 +ER_IB_MSG_1087 = 12912 +ER_IB_MSG_1088 = 12913 +ER_IB_MSG_1089 = 12914 +ER_IB_MSG_1090 = 12915 +ER_IB_MSG_1091 = 12916 +ER_IB_MSG_1092 = 12917 +ER_IB_MSG_1093 = 12918 +ER_IB_MSG_1094 = 12919 +ER_IB_MSG_1095 = 12920 +ER_IB_MSG_1096 = 12921 +ER_IB_MSG_1097 = 12922 +ER_IB_MSG_1098 = 12923 +ER_IB_MSG_1099 = 12924 +ER_IB_MSG_1100 = 12925 +ER_IB_MSG_1101 = 12926 +ER_IB_MSG_1102 = 12927 +ER_IB_MSG_1103 = 12928 +ER_IB_MSG_1104 = 12929 +ER_IB_MSG_1105 = 12930 +ER_IB_MSG_1106 = 12931 +ER_IB_MSG_1107 = 12932 +ER_IB_MSG_1108 = 12933 +ER_IB_MSG_1109 = 12934 +ER_IB_MSG_1110 = 12935 +ER_IB_MSG_1111 = 12936 +ER_IB_MSG_1112 = 12937 +ER_IB_MSG_1113 = 12938 +ER_IB_MSG_1114 = 12939 +ER_IB_MSG_1115 = 12940 +ER_IB_MSG_1116 = 12941 +ER_IB_MSG_1117 = 12942 +ER_IB_MSG_1118 = 12943 +ER_IB_MSG_1119 = 12944 +ER_IB_MSG_1120 = 12945 +ER_IB_MSG_1121 = 12946 +ER_IB_MSG_1122 = 12947 +ER_IB_MSG_1123 = 12948 +ER_IB_MSG_1124 = 12949 +ER_IB_MSG_1125 = 12950 +ER_IB_MSG_1126 = 12951 +ER_IB_MSG_1127 = 12952 +ER_IB_MSG_1128 = 12953 +ER_IB_MSG_1129 = 12954 +ER_IB_MSG_1130 = 12955 +ER_IB_MSG_1131 = 12956 +ER_IB_MSG_1132 = 12957 +ER_IB_MSG_1133 = 12958 +ER_IB_MSG_1134 = 12959 +ER_IB_MSG_1135 = 12960 +ER_IB_MSG_1136 = 12961 +ER_IB_MSG_1137 = 12962 +ER_IB_MSG_1138 = 12963 +ER_IB_MSG_1139 = 12964 +ER_IB_MSG_1140 = 12965 +ER_IB_MSG_1141 = 12966 +ER_IB_MSG_1142 = 12967 +ER_IB_MSG_1143 = 12968 +ER_IB_MSG_1144 = 12969 +ER_IB_MSG_1145 = 12970 +ER_IB_MSG_1146 = 12971 +ER_IB_MSG_1147 = 12972 +ER_IB_MSG_1148 = 12973 +ER_IB_MSG_1149 = 12974 +ER_IB_MSG_1150 = 12975 +ER_IB_MSG_1151 = 12976 +ER_IB_MSG_1152 = 12977 +ER_IB_MSG_1153 = 12978 +ER_IB_MSG_1154 = 12979 +ER_IB_MSG_1155 = 12980 +ER_IB_MSG_1156 = 12981 +ER_IB_MSG_1157 = 12982 +ER_IB_MSG_1158 = 12983 +ER_IB_MSG_1159 = 12984 +ER_IB_MSG_1160 = 12985 +ER_IB_MSG_1161 = 12986 +ER_IB_MSG_1162 = 12987 +ER_IB_MSG_1163 = 12988 +ER_IB_MSG_1164 = 12989 +ER_IB_MSG_1165 = 12990 +ER_IB_MSG_1166 = 12991 +ER_IB_MSG_1167 = 12992 +ER_IB_MSG_1168 = 12993 +ER_IB_MSG_1169 = 12994 +ER_IB_MSG_1170 = 12995 +ER_IB_MSG_1171 = 12996 +ER_IB_MSG_1172 = 12997 +ER_IB_MSG_1173 = 12998 +ER_IB_MSG_1174 = 12999 +ER_IB_MSG_1175 = 13000 +ER_IB_MSG_1176 = 13001 +ER_IB_MSG_1177 = 13002 +ER_IB_MSG_1178 = 13003 +ER_IB_MSG_1179 = 13004 +ER_IB_MSG_1180 = 13005 +ER_IB_MSG_1181 = 13006 +ER_IB_MSG_1182 = 13007 +ER_IB_MSG_1183 = 13008 +ER_IB_MSG_1184 = 13009 +ER_IB_MSG_1185 = 13010 +ER_IB_MSG_1186 = 13011 +ER_IB_MSG_1187 = 13012 +ER_IB_MSG_1188 = 13013 +ER_IB_MSG_1189 = 13014 +ER_IB_MSG_1190 = 13015 +ER_IB_MSG_1191 = 13016 +ER_IB_MSG_1192 = 13017 +ER_IB_MSG_1193 = 13018 +ER_IB_MSG_1194 = 13019 +ER_IB_MSG_1195 = 13020 +ER_IB_MSG_1196 = 13021 +ER_IB_MSG_1197 = 13022 +ER_IB_MSG_1198 = 13023 +ER_IB_MSG_1199 = 13024 +ER_IB_MSG_1200 = 13025 +ER_IB_MSG_1201 = 13026 +ER_IB_MSG_1202 = 13027 +ER_IB_MSG_1203 = 13028 +ER_IB_MSG_1204 = 13029 +ER_IB_MSG_1205 = 13030 +ER_IB_MSG_1206 = 13031 +ER_IB_MSG_1207 = 13032 +ER_IB_MSG_1208 = 13033 +ER_IB_MSG_1209 = 13034 +ER_IB_MSG_1210 = 13035 +ER_IB_MSG_1211 = 13036 +ER_IB_MSG_1212 = 13037 +ER_IB_MSG_1213 = 13038 +ER_IB_MSG_1214 = 13039 +ER_IB_MSG_1215 = 13040 +ER_IB_MSG_1216 = 13041 +ER_IB_MSG_1217 = 13042 +ER_IB_MSG_1218 = 13043 +ER_IB_MSG_1219 = 13044 +ER_IB_MSG_1220 = 13045 +ER_IB_MSG_1221 = 13046 +ER_IB_MSG_1222 = 13047 +ER_IB_MSG_1223 = 13048 +ER_IB_MSG_1224 = 13049 +ER_IB_MSG_1225 = 13050 +ER_IB_MSG_1226 = 13051 +ER_IB_MSG_1227 = 13052 +ER_IB_MSG_1228 = 13053 +ER_IB_MSG_1229 = 13054 +ER_IB_MSG_1230 = 13055 +ER_IB_MSG_1231 = 13056 +ER_IB_MSG_1232 = 13057 +ER_IB_MSG_1233 = 13058 +ER_IB_MSG_1234 = 13059 +ER_IB_MSG_1235 = 13060 +ER_IB_MSG_1236 = 13061 +ER_IB_MSG_1237 = 13062 +ER_IB_MSG_1238 = 13063 +ER_IB_MSG_1239 = 13064 +ER_IB_MSG_1240 = 13065 +ER_IB_MSG_1241 = 13066 +ER_IB_MSG_1242 = 13067 +ER_IB_MSG_1243 = 13068 +ER_IB_MSG_1244 = 13069 +ER_IB_MSG_1245 = 13070 +ER_IB_MSG_1246 = 13071 +ER_IB_MSG_1247 = 13072 +ER_IB_MSG_1248 = 13073 +ER_IB_MSG_1249 = 13074 +ER_IB_MSG_1250 = 13075 +ER_IB_MSG_1251 = 13076 +ER_IB_MSG_1252 = 13077 +ER_IB_MSG_1253 = 13078 +ER_IB_MSG_1254 = 13079 +ER_IB_MSG_1255 = 13080 +ER_IB_MSG_1256 = 13081 +ER_IB_MSG_1257 = 13082 +ER_IB_MSG_1258 = 13083 +ER_IB_MSG_1259 = 13084 +ER_IB_MSG_1260 = 13085 +ER_IB_MSG_1261 = 13086 +ER_IB_MSG_1262 = 13087 +ER_IB_MSG_1263 = 13088 +ER_IB_MSG_1264 = 13089 +ER_IB_MSG_1265 = 13090 +ER_IB_MSG_1266 = 13091 +ER_IB_MSG_1267 = 13092 +ER_IB_MSG_1268 = 13093 +ER_IB_MSG_1269 = 13094 +ER_IB_MSG_1270 = 13095 +ER_RPL_SLAVE_SQL_THREAD_STOP_CMD_EXEC_TIMEOUT = 13096 +ER_RPL_SLAVE_IO_THREAD_STOP_CMD_EXEC_TIMEOUT = 13097 +ER_RPL_GTID_UNSAFE_STMT_ON_NON_TRANS_TABLE = 13098 +ER_RPL_GTID_UNSAFE_STMT_CREATE_SELECT = 13099 +ER_RPL_GTID_UNSAFE_STMT_ON_TEMPORARY_TABLE = 13100 +ER_BINLOG_ROW_VALUE_OPTION_IGNORED = 13101 +ER_BINLOG_USE_V1_ROW_EVENTS_IGNORED = 13102 +ER_BINLOG_ROW_VALUE_OPTION_USED_ONLY_FOR_AFTER_IMAGES = 13103 +ER_CONNECTION_ABORTED = 13104 +ER_NORMAL_SERVER_SHUTDOWN = 13105 +ER_KEYRING_MIGRATE_FAILED = 13106 +ER_GRP_RPL_LOWER_CASE_TABLE_NAMES_DIFF_FROM_GRP = 13107 +ER_OOM_SAVE_GTIDS = 13108 +ER_LCTN_NOT_FOUND = 13109 +ER_REGEXP_INVALID_CAPTURE_GROUP_NAME = 13110 +ER_COMPONENT_FILTER_WRONG_VALUE = 13111 +ER_XPLUGIN_FAILED_TO_STOP_SERVICES = 13112 +ER_INCONSISTENT_ERROR = 13113 +ER_SERVER_MASTER_FATAL_ERROR_READING_BINLOG = 13114 +ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE = 13115 +ER_SLAVE_CREATE_EVENT_FAILURE = 13116 +ER_SLAVE_FATAL_ERROR = 13117 +ER_SLAVE_HEARTBEAT_FAILURE = 13118 +ER_SLAVE_INCIDENT = 13119 +ER_SLAVE_MASTER_COM_FAILURE = 13120 +ER_SLAVE_RELAY_LOG_READ_FAILURE = 13121 +ER_SLAVE_RELAY_LOG_WRITE_FAILURE = 13122 +ER_SERVER_SLAVE_MI_INIT_REPOSITORY = 13123 +ER_SERVER_SLAVE_RLI_INIT_REPOSITORY = 13124 +ER_SERVER_NET_PACKET_TOO_LARGE = 13125 +ER_SERVER_NO_SYSTEM_TABLE_ACCESS = 13126 +ER_SERVER_UNKNOWN_ERROR = 13127 +ER_SERVER_UNKNOWN_SYSTEM_VARIABLE = 13128 +ER_SERVER_NO_SESSION_TO_SEND_TO = 13129 +ER_SERVER_NEW_ABORTING_CONNECTION = 13130 +ER_SERVER_OUT_OF_SORTMEMORY = 13131 +ER_SERVER_RECORD_FILE_FULL = 13132 +ER_SERVER_DISK_FULL_NOWAIT = 13133 +ER_SERVER_HANDLER_ERROR = 13134 +ER_SERVER_NOT_FORM_FILE = 13135 +ER_SERVER_CANT_OPEN_FILE = 13136 +ER_SERVER_FILE_NOT_FOUND = 13137 +ER_SERVER_FILE_USED = 13138 +ER_SERVER_CANNOT_LOAD_FROM_TABLE_V2 = 13139 +ER_ERROR_INFO_FROM_DA = 13140 +ER_SERVER_TABLE_CHECK_FAILED = 13141 +ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2 = 13142 +ER_SERVER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2 = 13143 +ER_SERVER_ACL_TABLE_ERROR = 13144 +ER_SERVER_SLAVE_INIT_QUERY_FAILED = 13145 +ER_SERVER_SLAVE_CONVERSION_FAILED = 13146 +ER_SERVER_SLAVE_IGNORED_TABLE = 13147 +ER_CANT_REPLICATE_ANONYMOUS_WITH_AUTO_POSITION = 13148 +ER_CANT_REPLICATE_ANONYMOUS_WITH_GTID_MODE_ON = 13149 +ER_CANT_REPLICATE_GTID_WITH_GTID_MODE_OFF = 13150 +ER_SERVER_TEST_MESSAGE = 13151 +ER_AUDIT_LOG_JSON_FILTER_PARSING_ERROR = 13152 +ER_AUDIT_LOG_JSON_FILTERING_NOT_ENABLED = 13153 +ER_PLUGIN_FAILED_TO_OPEN_TABLES = 13154 +ER_PLUGIN_FAILED_TO_OPEN_TABLE = 13155 +ER_AUDIT_LOG_JSON_FILTER_NAME_CANNOT_BE_EMPTY = 13156 +ER_AUDIT_LOG_USER_NAME_INVALID_CHARACTER = 13157 +ER_AUDIT_LOG_UDF_INSUFFICIENT_PRIVILEGE = 13158 +ER_AUDIT_LOG_NO_KEYRING_PLUGIN_INSTALLED = 13159 +ER_AUDIT_LOG_HOST_NAME_INVALID_CHARACTER = 13160 +ER_AUDIT_LOG_ENCRYPTION_PASSWORD_HAS_NOT_BEEN_SET = 13161 +ER_AUDIT_LOG_COULD_NOT_CREATE_AES_KEY = 13162 +ER_AUDIT_LOG_ENCRYPTION_PASSWORD_CANNOT_BE_FETCHED = 13163 +ER_COULD_NOT_REINITIALIZE_AUDIT_LOG_FILTERS = 13164 +ER_AUDIT_LOG_JSON_USER_NAME_CANNOT_BE_EMPTY = 13165 +ER_AUDIT_LOG_USER_FIRST_CHARACTER_MUST_BE_ALPHANUMERIC = 13166 +ER_AUDIT_LOG_JSON_FILTER_DOES_NOT_EXIST = 13167 CR_UNKNOWN_ERROR = 2000 CR_SOCKET_CREATE_ERROR = 2001 CR_CONNECTION_ERROR = 2002 @@ -1160,5 +4605,7 @@ CR_DUPLICATE_CONNECTION_ATTR = 2060 CR_AUTH_PLUGIN_ERR = 2061 CR_INSECURE_API_ERR = 2062 +CR_FILE_NAME_TOO_LONG = 2063 +CR_SSL_FIPS_MODE_ERR = 2064 # End MySQL Errors diff --git a/lib/mysql/connector/locales/eng/client_error.py b/lib/mysql/connector/locales/eng/client_error.py index 9b482b38..dca8bf1d 100644 --- a/lib/mysql/connector/locales/eng/client_error.py +++ b/lib/mysql/connector/locales/eng/client_error.py @@ -29,8 +29,8 @@ # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. -_GENERATED_ON = '2015-12-13' -_MYSQL_VERSION = (5, 7, 10) +_GENERATED_ON = '2018-03-16' +_MYSQL_VERSION = (8, 0, 11) # Start MySQL Error messages CR_UNKNOWN_ERROR = u"Unknown MySQL error" @@ -96,5 +96,7 @@ CR_DUPLICATE_CONNECTION_ATTR = u"There is an attribute with the same name already" CR_AUTH_PLUGIN_ERR = u"Authentication plugin '%s' reported error: %s" CR_INSECURE_API_ERR = u"Insecure API function call: '%s' Use instead: '%s'" +CR_FILE_NAME_TOO_LONG = u"File name is too long" +CR_SSL_FIPS_MODE_ERR = u"Set FIPS mode ON/STRICT failed" # End MySQL Error messages diff --git a/tests/test_errorcode.py b/tests/test_errorcode.py index 3a13f952..7fd14cb0 100644 --- a/tests/test_errorcode.py +++ b/tests/test_errorcode.py @@ -50,7 +50,7 @@ def _check_code(self, code, num): def test_server_error_codes(self): cases = { - 'ER_HASHCHK': 1000, + 'OBSOLETE_ER_HASHCHK': 1000, 'ER_TRG_INVALID_CREATION_CTX': 1604, 'ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION': 1792, } From f69c7aa0a1c730ff4c0097a93af9f3d8f14afe22 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 4 May 2018 22:16:44 +0100 Subject: [PATCH 74/95] Update copyright source headers in cext tests files --- tests/cext/test_cext_api.py | 37 ++++++++++++++++------------ tests/cext/test_cext_connection.py | 39 +++++++++++++++++------------- tests/cext/test_cext_cursor.py | 39 +++++++++++++++++------------- 3 files changed, 65 insertions(+), 50 deletions(-) diff --git a/tests/cext/test_cext_api.py b/tests/cext/test_cext_api.py index 9a15d086..2ad561fb 100644 --- a/tests/cext/test_cext_api.py +++ b/tests/cext/test_cext_api.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Testing the C Extension MySQL C API """ diff --git a/tests/cext/test_cext_connection.py b/tests/cext/test_cext_connection.py index c6e389e9..ebd55988 100644 --- a/tests/cext/test_cext_connection.py +++ b/tests/cext/test_cext_connection.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Testing connection.CMySQLConnection class using the C Extension """ diff --git a/tests/cext/test_cext_cursor.py b/tests/cext/test_cext_cursor.py index ea809eeb..bb3fce71 100644 --- a/tests/cext/test_cext_cursor.py +++ b/tests/cext/test_cext_cursor.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Testing the C Extension cursors """ From e410bd3d0a1be1e9a53631bac7da4cce3507f97b Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 4 May 2018 22:24:00 +0100 Subject: [PATCH 75/95] Prepare release 2.1.8 --- CHANGES.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index dac4a52c..e36275aa 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,11 +3,21 @@ MySQL Connector/Python 2.1 - Release Notes & Changes ==================================================== MySQL Connector/Python -Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. Full release notes: http://dev.mysql.com/doc/relnotes/connector-python/en/ +v2.1.8 +====== + +- WL#11680: Add caching_sha2_password authentication plugin +- WL#11665: Allow OpenSSL linkage in the C extension +- WL#11643: Update copyright source headers and license text +- BUG#27945883: Fixes for failing unittest with MySQL latest versions +- BUG#27371245: Connection fails on unsupported default's auth_plugin +- BUG#26484601: Unable to connect to a server using other than TLSv1 + v2.1.7 ====== From 02b481a2947d19c8d0283d9423aee65843914de5 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Fri, 4 May 2018 22:44:05 +0100 Subject: [PATCH 76/95] Update copyright source headers in issues tests files --- tests/issues/test_bug21449207.py | 39 ++++++++++++++++++-------------- tests/issues/test_bug21449996.py | 39 ++++++++++++++++++-------------- tests/issues/test_bug21879859.py | 39 ++++++++++++++++++-------------- tests/issues/test_bug21879914.py | 39 ++++++++++++++++++-------------- tests/issues/test_bug22545879.py | 39 ++++++++++++++++++-------------- 5 files changed, 110 insertions(+), 85 deletions(-) diff --git a/tests/issues/test_bug21449207.py b/tests/issues/test_bug21449207.py index 9b9c3285..c212896b 100644 --- a/tests/issues/test_bug21449207.py +++ b/tests/issues/test_bug21449207.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import mysql.connector from tests import foreach_cnx, cnx_config diff --git a/tests/issues/test_bug21449996.py b/tests/issues/test_bug21449996.py index b4e428f6..c977d7fd 100644 --- a/tests/issues/test_bug21449996.py +++ b/tests/issues/test_bug21449996.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import mysql.connector from tests import foreach_cnx @@ -56,4 +61,4 @@ def test_load_data_compressed(self): self.fail(exc) cur.execute("SELECT COUNT(*) FROM %s" % self.table_name) - self.assertEqual(11486, cur.fetchone()[0]) \ No newline at end of file + self.assertEqual(11486, cur.fetchone()[0]) diff --git a/tests/issues/test_bug21879859.py b/tests/issues/test_bug21879859.py index 46fbfd6f..292d15ef 100644 --- a/tests/issues/test_bug21879859.py +++ b/tests/issues/test_bug21879859.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ BUG21879859 """ diff --git a/tests/issues/test_bug21879914.py b/tests/issues/test_bug21879914.py index 7300e8bb..906e52de 100644 --- a/tests/issues/test_bug21879914.py +++ b/tests/issues/test_bug21879914.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ BUG21879914 Fix using C/Extension with only CA given """ diff --git a/tests/issues/test_bug22545879.py b/tests/issues/test_bug22545879.py index 6dfb3fb3..584cd3b1 100644 --- a/tests/issues/test_bug22545879.py +++ b/tests/issues/test_bug22545879.py @@ -1,26 +1,31 @@ # -*- coding: utf-8 -*- -# MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - -# MySQL Connector/Python is licensed under the terms of the GPLv2 -# , like most -# MySQL Connectors. There are special exceptions to the terms and -# conditions of the GPLv2 as it is applied to this software, see the -# FOSS License Exception -# . +# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation. +# it under the terms of the GNU General Public License, version 2.0, as +# published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an +# additional permission to link the program and your derivative works +# with the separately licensed software that they have included with +# MySQL. +# +# Without limiting anything contained in the foregoing, this file, +# which is part of MySQL Connector/Python, is also subject to the +# Universal FOSS Exception, version 1.0, a copy of which can be found at +# http://oss.oracle.com/licenses/universal-foss-exception. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ BUG22545879 Fix reading and using ssl-cipher MySQL option """ From e696adf21945f44234d39fe6c07a2de8efb0498e Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Mon, 7 May 2018 12:10:37 -0500 Subject: [PATCH 77/95] BUG26484601: unable to connect to a server using other than TLSv1 Fixes the failing unittest on linux when using 5.7 due to the missing support of tls_v1.2. --- tests/test_bugs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_bugs.py b/tests/test_bugs.py index fd60d9b6..6f4f0d74 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4947,7 +4947,7 @@ def test_cursor_prepared_statement_with_charset_latin1(self): self._test_charset('latin1', [u'ñ', u'Ñ']) -@unittest.skipIf(tests.MYSQL_VERSION < (5, 7, 21), +@unittest.skipIf(tests.MYSQL_VERSION < (8, 0, 11), "Not support for TLSv1.2 or not available by default") class Bug26484601(tests.MySQLConnectorTests): """UNABLE TO CONNECT TO A MYSQL SERVER USING TLSV1.2""" From b5d1b781d448d44cd6dc4aa01cff173e99ce71cb Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 15 May 2018 12:25:18 +0100 Subject: [PATCH 78/95] BUG28025111: Update LICENSE.txt and fix copyright year in README.txt --- LICENSE.txt | 1555 ++++++++++++++++++++++++++++++++++++++++++++++++--- README.txt | 46 +- 2 files changed, 1479 insertions(+), 122 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 758cd629..f2d0cdd8 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,20 +1,74 @@ -There are special exceptions to the terms and conditions of the GNU -General Public License as it is applied to this software. View the -full text of the exception in file EXCEPTIONS-CLIENT in the directory -of this software distribution or see the FOSS License Exception at -www.mysql.com. +Licensing Information User Manual +MySQL Connector/Python + __________________________________________________________________ +Introduction - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + This License Information User Manual contains Oracle's product license + and other licensing information, including licensing information for + third-party software which may be included in this distribution of + MySQL Connector/Python (version 2.1.8 or later). - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + Last updated: April 2018. + +Licensing Information + + This is a release of MySQL Connector/Python (version 2.1.8 or later), + brought to you by the MySQL team at Oracle. This software is released + under version 2 of the GNU General Public License (GPLv2), as set forth + below, with the following additional permissions: + + This distribution of MySQL Connector/Python (version 2.1.8 or later) is + distributed with certain software that is licensed under separate + terms, as designated in a particular file or component or in the + license documentation. Without limiting your rights under the GPLv2, + the authors of MySQL hereby grant you an additional permission to link + the program and your derivative works with the separately licensed + software that they have included with the program. + + Without limiting the foregoing grant of rights under the GPLv2 and + additional permission as to separately licensed software, this + Connector is also subject to the Universal FOSS Exception, version 1.0, + a copy of which is reproduced below and can also be found along with + its FAQ at http://oss.oracle.com/licenses/universal-foss-exception. + + Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights + reserved. + +Election of GPLv2 + + For the avoidance of doubt, except that if any license choice other + than GPL or LGPL is available it will apply instead, Oracle elects to + use only the General Public License version 2 (GPLv2) at this time for + any software where a choice of GPL license versions is made available + with the language indicating that GPLv2 or any later version may be + used, or where a choice of which version of the GPL is applied is + otherwise unspecified. + +GNU General Public License Version 2.0, June 1991 + +The following applies to all products licensed under the GNU General +Public License, Version 2.0: You may not use the identified files +except in compliance with the GNU General Public License, Version +2.0 (the "License.") You may obtain a copy of the License at +http://www.gnu.org/licenses/gpl-2.0.txt. A copy of the license is +also reproduced below. Unless required by applicable law or agreed +to in writing, software distributed under the License is distributed +on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the License for the specific language +governing permissions and limitations under the License. - Preamble +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim +copies of this license document, but changing it is not +allowed. + + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -44,16 +98,16 @@ you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. + We protect your rights with two steps: (1) copyright the software, +and (2) offer you this license which gives you legal permission to +copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. +software. If the software is modified by someone else and passed on, +we want its recipients to know that what they have is not the original, +so that any problems introduced by others will not reflect on the +original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free @@ -64,7 +118,7 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - GNU GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -84,6 +138,7 @@ is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate @@ -95,6 +150,7 @@ along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 @@ -139,13 +195,15 @@ with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, + 1 and 2 above on a medium customarily used for software + interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your @@ -164,8 +222,8 @@ The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include +control compilation and installation of the executable. However, as +a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component @@ -177,6 +235,7 @@ access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -185,6 +244,7 @@ However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are @@ -194,6 +254,7 @@ Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to @@ -202,6 +263,7 @@ restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -234,6 +296,7 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -242,52 +305,54 @@ those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. + + 9. The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a +version number of this License, you may choose any version ever +published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software generally. + + NO WARRANTY - END OF TERMS AND CONDITIONS + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS +WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - How to Apply These Terms to Your New Programs + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -301,19 +366,21 @@ the "copyright" line and a pointer to where the full notice is found. Copyright (C) - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + + the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. @@ -321,27 +388,1347 @@ If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type 'show w'. This is free software, and you are welcome + to redistribute it under certain conditions; type 'show c' + for details. -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. +The hypothetical commands 'show w' and 'show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than 'show w' and +'show c'; they could even be mouse-clicks or menu items--whatever +suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program 'Gnomovision' (which makes passes at compilers) written + by James Hacker. , 1 April 1989 Ty Coon, President of Vice -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, +you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. + +The Universal FOSS Exception, Version 1.0 + + In addition to the rights set forth in the other license(s) included in + the distribution for this software, data, and/or documentation + (collectively the "Software", and such licenses collectively with this + additional permission the "Software License"), the copyright holders + wish to facilitate interoperability with other software, data, and/or + documentation distributed with complete corresponding source under a + license that is OSI-approved and/or categorized by the FSF as free + (collectively "Other FOSS"). We therefore hereby grant the following + additional permission with respect to the use and distribution of the + Software with Other FOSS, and the constants, function signatures, data + structures and other invocation methods used to run or interact with + each of them (as to each, such software's "Interfaces"): + i. The Software's Interfaces may, to the extent permitted by the + license of the Other FOSS, be copied into, used and distributed in + the Other FOSS in order to enable interoperability, without + requiring a change to the license of the Other FOSS other than as + to any Interfaces of the Software embedded therein. The Software's + Interfaces remain at all times under the Software License, + including without limitation as used in the Other FOSS (which upon + any such use also then contains a portion of the Software under the + Software License). + ii. The Other FOSS's Interfaces may, to the extent permitted by the + license of the Other FOSS, be copied into, used and distributed in + the Software in order to enable interoperability, without requiring + that such Interfaces be licensed under the terms of the Software + License or otherwise altering their original terms, if this does + not require any portion of the Software other than such Interfaces + to be licensed under the terms other than the Software License. + iii. If only Interfaces and no other code is copied between the + Software and the Other FOSS in either direction, the use and/or + distribution of the Software with the Other FOSS shall not be + deemed to require that the Other FOSS be licensed under the license + of the Software, other than as to any Interfaces of the Software + copied into the Other FOSS. This includes, by way of example and + without limitation, statically or dynamically linking the Software + together with Other FOSS after enabling interoperability using the + Interfaces of one or both, and distributing the resulting + combination under different licenses for the respective portions + thereof. For avoidance of doubt, a license which is OSI-approved or + categorized by the FSF as free, includes, for the purpose of this + permission, such licenses with additional permissions, and any + license that has previously been so approved or categorized as + free, even if now deprecated or otherwise no longer recognized as + approved or free. Nothing in this additional permission grants any + right to distribute any portion of the Software on terms other than + those of the Software License or grants any additional permission + of any kind for use or distribution of the Software in conjunction + with software other than Other FOSS. + +Licenses for Third-Party Components + + The following sections contain licensing information for libraries that + we have included with the MySQL Connector/Python (version 2.1.8 or + later) source and components used to test MySQL Connector/Python + (version 2.1.8 or later). Commonly used licenses referenced herein can + be found in Commonly Used Licenses. We are thankful to all individuals + that have created these. + +Django 1.5.1 + + The following software may be included in this product: +Copyright (c) Django Software Foundation and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + + 3. Neither the name of Django nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Google Protocol Buffers + + The following software may be included in this product: +Protocol Buffers (aka Google protobuf) + +Google Protocol Buffers - protobuf +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, +with or without modification, are permitted provided +that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. +* Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or + other materials provided with the distribution. +* Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by +the owner of the input file used when generating it. This +code is not standalone and requires a support library to be +linked with it. This support library is itself covered by +the above license. + +Commonly Used Licenses + +Artistic License (Perl) 1.0 + +The "Artistic License" + +Preamble + +The intent of this document is to state the conditions under which a +Package may be copied, such that the Copyright Holder maintains some +semblance of artistic control over the development of the package, +while giving the users of the package the right to use and distribute +the Package in a more-or-less customary fashion, plus the right to make +reasonable modifications. + +Definitions: + + "Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files + created through textual modification. + + "Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes + of the Copyright Holder as specified below. + + "Copyright Holder" is whoever is named in the copyright or + copyrights for the package. + + "You" is you, if you're thinking about copying or distributing + this Package. + + "Reasonable copying fee" is whatever you can justify on the + basis of media cost, duplication charges, time of people involved, + and so on. (You will not be required to justify it to the + Copyright Holder, but only to the computing community at large + as a market that must bear the fee.) + + "Freely Available" means that no fee is charged for the item + itself, though there may be fees involved in handling the item. + It also means that recipients of the item may redistribute it + under the same conditions they received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications +derived from the Public Domain or from the Copyright Holder. A Package +modified in such a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided +that you insert a prominent notice in each changed file stating how and +when you changed that file, and provided that you do at least ONE of the +following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or + an equivalent medium, or placing the modifications on a major archive + site such as uunet.uu.net, or by allowing the Copyright Holder to include + your modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict + with standard executables, which must also be provided, and provide + a separate manual page for each non-standard executable that clearly + documents how it differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or +executable form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where + to get the Standard Version. + + b) accompany the distribution with the machine-readable source of + the Package with your modifications. + + c) give non-standard executables non-standard names, and clearly + document the differences in manual pages (or equivalent), together + with instructions on where to get the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this +Package. You may not charge a fee for this Package itself. However, +you may distribute this Package in aggregate with other (possibly +commercial) programs as part of a larger (possibly commercial) software +distribution provided that you do not advertise this Package as a +product of your own. You may embed this Package's interpreter within +an executable of yours (by linking); this shall be construed as a mere +form of aggregation, provided that the complete Standard Version of the +interpreter is so embedded. + +6. The scripts and library files supplied as input to or produced as +output from the programs of this Package do not automatically fall +under the copyright of this Package, but belong to whoever generated +them, and may be sold commercially, and may be aggregated with this +Package. If such scripts or library files are aggregated with this +Package via the so-called "undump" or "unexec" methods of producing a +binary executable image, then distribution of such an image shall +neither be construed as a distribution of this Package nor shall it +fall under the restrictions of Paragraphs 3 and 4, provided that you do +not represent such an executable image as a Standard Version of this +Package. + +7. C subroutines (or comparably compiled subroutines in other +languages) supplied by you and linked into this Package in order to +emulate subroutines and variables of the language defined by this +Package shall not be considered part of this Package, but are the +equivalent of input as in Paragraph 6, provided these subroutines do +not change the language in any way that would cause it to fail the +regression tests for the language. + +8. Aggregation of this Package with a commercial distribution is always +permitted provided that the use of this Package is embedded; that is, +when no overt attempt is made to make this Package's interfaces visible +to the end user of the commercial distribution. Such use shall not be +construed as a distribution of this Package. + +9. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written +permission. + +10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + The End + +GNU Lesser General Public License Version 2.1, February 1999 + +The following applies to all products licensed under the +GNU Lesser General Public License, Version 2.1: You may +not use the identified files except in compliance with +the GNU Lesser General Public License, Version 2.1 (the +"License"). You may obtain a copy of the License at +http://www.gnu.org/licenses/lgpl-2.1.html. A copy of the +license is also reproduced below. Unless required by +applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +or implied. See the License for the specific language governing +permissions and limitations under the License. + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs +must be allowed to use the library. A more frequent case is that +a free library does the same job as widely used non-free libraries. +In this case, there is little to gain by limiting the free library +to free software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended +to apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James + Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +GNU Lesser General Public License Version 2, June 1991 + +GNU LIBRARY GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is numbered 2 +because it goes with version 2 of the ordinary GPL.] + +Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public Licenses are +intended to guarantee your freedom to share and change free software--to make +sure the software is free for all its users. + +This license, the Library General Public License, applies to some specially +designated Free Software Foundation software, and to any other libraries +whose authors decide to use it. You can use it for your libraries, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the library, or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a +fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link a +program with the library, you must provide complete object files to the +recipients so that they can relink them with the library, after making +changes to the library and recompiling it. And you must show them these terms +so they know their rights. + +Our method of protecting your rights has two steps: (1) copyright the +library, and (2) offer you this license which gives you legal permission to +copy, distribute and/or modify the library. + +Also, for each distributor's protection, we want to make certain that +everyone understands that there is no warranty for this free library. If the +library is modified by someone else and passed on, we want its recipients to +know that what they have is not the original version, so that any problems +introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that companies distributing free software will +individually obtain patent licenses, thus in effect transforming the program +into proprietary software. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary one; +be sure to read it in full, and don't assume that anything in it is the same +as in the ordinary license. + +The reason we have a separate public license for some libraries is that they +blur the distinction we usually make between modifying or adding to a program +and simply using it. Linking a program with a library, without changing the +library, is in some sense simply using the library, and is analogous to +running a utility program or application program. However, in a textual and +legal sense, the linked executable is a combined work, a derivative of the +original library, and the ordinary General Public License treats it as such. + +Because of this blurred distinction, using the ordinary General Public +License for libraries did not effectively promote software sharing, because +most developers did not use the libraries. We concluded that weaker +conditions might promote sharing better. + +However, unrestricted linking of non-free programs would deprive the users of +those programs of all benefit from the free status of the libraries +themselves. This Library General Public License is intended to permit +developers of non-free programs to use free libraries, while preserving your +freedom as a user of such programs to change the free libraries that are +incorporated in them. (We have not seen how to achieve this as regards +changes in header files, but we have achieved it as regards changes in the +actual functions of the Library.) The hope is that this will lead to faster +development of free libraries. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code derived +from the library, while the latter only works together with the library. + +Note that it is possible for a library to be covered by the ordinary General +Public License rather than by this special one. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library which contains a +notice placed by the copyright holder or other authorized party saying it may +be distributed under the terms of this Library General Public License (also +called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared so +as to be conveniently linked with application programs (which use some of +those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means +either the Library or any derivative work under copyright law: that is to +say, a work containing the Library or a portion of it, either verbatim or +with modifications and/or translated straightforwardly into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) + +"Source code" for a work means the preferred form of the work for making +modifications to it. For a library, complete source code means all the source +code for all modules it contains, plus any associated interface definition +files, plus the scripts used to control compilation and installation of the +library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is +covered only if its contents constitute a work based on the Library +(independent of the use of the Library in a tool for writing it). Whether +that is true depends on what the Library does and what the program that uses +the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete +source code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +License and to the absence of any warranty; and distribute a copy of this +License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, +thus forming a work based on the Library, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + + a) The modified work must itself be a software library. + b) You must cause the files modified to carry prominent notices stating +that you changed the files and the date of any change. + c) You must cause the whole of the work to be licensed at no charge to +all third parties under the terms of this License. + d) If a facility in the modified Library refers to a function or a table +of data to be supplied by an application program that uses the facility, +other than as an argument passed when the facility is invoked, then you must +make a good faith effort to ensure that, in the event an application does not +supply such function or table, the facility still operates, and performs +whatever part of its purpose remains meaningful. + + (For example, a function in a library to compute square roots has a +purpose that is entirely well-defined independent of the application. +Therefore, Subsection 2d requires that any application-supplied function or +table used by this function must be optional: if the application does not +supply it, the square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend to +the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +3. You may opt to apply the terms of the ordinary GNU General Public License +instead of this License to a given copy of the Library. To do this, you must +alter all the notices that refer to this License, so that they refer to the +ordinary GNU General Public License, version 2, instead of to this License. +(If a newer version than version 2 of the ordinary GNU General Public License +has appeared, then you can specify that version instead if you wish.) Do not +make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, +so the ordinary GNU General Public License applies to all subsequent copies +and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete +corresponding machine-readable source code, which must be distributed under +the terms of Sections 1 and 2 above on a medium customarily used for software +interchange. + +If distribution of object code is made by offering access to copy from a +designated place, then offering equivalent access to copy the source code +from the same place satisfies the requirement to distribute the source code, +even though third parties are not compelled to copy the source along with the +object code. + +5. A program that contains no derivative of any portion of the Library, but +is designed to work with the Library by being compiled or linked with it, is +called a "work that uses the Library". Such a work, in isolation, is not a +derivative work of the Library, and therefore falls outside the scope of this +License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that is +part of the Library, the object code for the work may be a derivative work of +the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not +precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the +object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are +linked directly with the Library itself. + +6. As an exception to the Sections above, you may also compile or link a +"work that uses the Library" with the Library to produce a work containing +portions of the Library, and distribute that work under terms of your choice, +provided that the terms permit modification of the work for the customer's +own use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is +used in it and that the Library and its use are covered by this License. You +must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library +among them, as well as a reference directing the user to the copy of this +License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable +source code for the Library including whatever changes were used in the work +(which must be distributed under Sections 1 and 2 above); and, if the work is +an executable linked with the Library, with the complete machine-readable +"work that uses the Library", as object code and/or source code, so that the +user can modify the Library and then relink to produce a modified executable +containing the modified Library. (It is understood that the user who changes +the contents of definitions files in the Library will not necessarily be able +to recompile the application to use the modified definitions.) + b) Accompany the work with a written offer, valid for at least three +years, to give the same user the materials specified in Subsection 6a, above, +for a charge no more than the cost of performing this distribution. + c) If distribution of the work is made by offering access to copy from a +designated place, offer equivalent access to copy the above specified +materials from the same place. + d) Verify that the user has already received a copy of these materials or +that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must +include any data and utility programs needed for reproducing the executable +from it. However, as a special exception, the source code distributed need +not include anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating +system. Such a contradiction means you cannot use both them and the Library +together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library +side-by-side in a single library together with other library facilities not +covered by this License, and distribute such a combined library, provided +that the separate distribution of the work based on the Library and of the +other library facilities is otherwise permitted, and provided that you do +these two things: + + a) Accompany the combined library with a copy of the same work based on +the Library, uncombined with any other library facilities. This must be +distributed under the terms of the Sections above. + b) Give prominent notice with the combined library of the fact that part +of it is a work based on the Library, and explaining where to find the +accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not +have their licenses terminated so long as such parties remain in full +compliance. + +9. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the +Library or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the +Library (or any work based on the Library), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the original +licensor to copy, distribute, link with or modify the Library subject to +these terms and conditions. You may not impose any further restrictions on +the recipients' exercise of the rights granted herein. You are not +responsible for enforcing compliance by third parties to this License. + +11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse +you from the conditions of this License. If you cannot distribute so as to +satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not distribute the +Library at all. For example, if a patent license would not permit +royalty-free redistribution of the Library by all those who receive copies +directly or indirectly through you, then the only way you could satisfy both +it and this License would be to refrain entirely from distribution of the +Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system which is implemented by public license +practices. Many people have made generous contributions to the wide range of +software distributed through that system in reliance on consistent +application of that system; it is up to the author/donor to decide if he or +she is willing to distribute software through any other system and a licensee +cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Library under this License may add an +explicit geographical distribution limitation excluding those countries, so +that distribution is permitted only in or among countries not thus excluded. +In such case, this License incorporates the limitation as if written in the +body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of +the Library General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software +Foundation. If the Library does not specify a license version number, you may +choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs +whose distribution conditions are incompatible with these, write to the +author to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER +SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General +Public License). + +To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + +one line to give the library's name and an idea of what it does. +Copyright (C) year name of author + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this library; if not, write to the +Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in +the library `Frob' (a library for tweaking knobs) written +by James Random Hacker. + +signature of Ty Coon, 1 April 1990 +Ty Coon, President of Vice + +That's all there is to it! + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Written Offer for Source Code + + For any software that you receive from Oracle in binary form which is + licensed under an open source license that gives you the right to + receive the source code for that binary, you can obtain a copy of the + applicable source code by visiting + http://www.oracle.com/goto/opensourcecode. If the source code for the + binary was not provided to you with the binary, you can also receive a + copy of the source code on physical media by submitting a written + request to the address listed below or by sending an email to Oracle + using the following link: + http://www.oracle.com/goto/opensourcecode/request. + Oracle America, Inc. + Attn: Senior Vice President + Development and Engineering Legal + 500 Oracle Parkway, 10th Floor + Redwood Shores, CA 94065 + + Your request should include: + + * The name of the binary for which you are requesting the source code + + * The name and version number of the Oracle product containing the + binary + + * The date you received the Oracle product + + * Your name + + * Your company name (if applicable) + + * Your return mailing address and email, and + + * A telephone number in the event we need to reach you. + + We may charge you a fee to cover the cost of physical media and + processing. + + Your request must be sent + a. within three (3) years of the date you received the Oracle product + that included the binary that is the subject of your request, or + b. in the case of code licensed under the GPL v3 for as long as Oracle + offers spare parts or customer support for that product model. diff --git a/README.txt b/README.txt index 46cce18a..173bb2d2 100644 --- a/README.txt +++ b/README.txt @@ -3,7 +3,7 @@ MySQL Connector/Python 2.1 ========================== MySQL Connector/Python -Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. @@ -22,45 +22,15 @@ They can be found in the examples/ directory. License ======= -This is a release of MySQL Connector/Python, Oracle's dual- -license Python Driver for MySQL. For the avoidance of -doubt, this particular copy of the software is released -under the version 2 of the GNU General Public License. -MySQL Connector/Python is brought to you by Oracle. +Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. -Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. +This is a release of MySQL Connector/Python, Oracle's Python driver for MySQL. License information can be found in the LICENSE.txt file. +This distribution may include materials developed by third parties. For license +and attribution notices for these materials, please refer to the LICENSE.txt file. -MySQL FOSS License Exception -We want free and open source software applications under -certain licenses to be able to use the GPL-licensed MySQL -Connector/Python (specified GPL-licensed MySQL client libraries) -despite the fact that not all such FOSS licenses are -compatible with version 2 of the GNU General Public License. -Therefore there are special exceptions to the terms and -conditions of the GPLv2 as applied to these client libraries, -which are identified and described in more detail in the -FOSS License Exception at - - -This software is OSI Certified Open Source Software. -OSI Certified is a certification mark of the Open Source Initiative. - -This distribution may include materials developed by third -parties. For license and attribution notices for these -materials, please refer to the documentation that accompanies -this distribution (see the "Licenses for Third-Party Components" -appendix) or view the online documentation at - -A copy of the license/notices is also reproduced below. - -GPLv2 Disclaimer -For the avoidance of doubt, except that if any license choice -other than GPL or LGPL is available it will apply instead, -Oracle elects to use only the General Public License version 2 -(GPLv2) at this time for any software where a choice of GPL -license versions is made available with the language indicating -that GPLv2 or any later version may be used, or where a choice -of which version of the GPL is applied is otherwise unspecified. +For more information on MySQL Connector/Python visit https://dev.mysql.com/doc/connector-python/en/ +For additional downloads and the source of MySQL Connector/Python visit http://dev.mysql.com/downloads +MySQL Connector/Python is brought to you by the MySQL team at Oracle. From c74c1486dab5650940356e91d17d5b6b5d06b1d6 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 28 Jun 2018 12:27:53 +0100 Subject: [PATCH 79/95] Revert "BUG28025111: Update LICENSE.txt and fix copyright year in README.txt" This reverts commit b5d1b781d448d44cd6dc4aa01cff173e99ce71cb. --- LICENSE.txt | 1555 +++------------------------------------------------ README.txt | 46 +- 2 files changed, 122 insertions(+), 1479 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index f2d0cdd8..758cd629 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,74 +1,20 @@ -Licensing Information User Manual +There are special exceptions to the terms and conditions of the GNU +General Public License as it is applied to this software. View the +full text of the exception in file EXCEPTIONS-CLIENT in the directory +of this software distribution or see the FOSS License Exception at +www.mysql.com. -MySQL Connector/Python - __________________________________________________________________ -Introduction - This License Information User Manual contains Oracle's product license - and other licensing information, including licensing information for - third-party software which may be included in this distribution of - MySQL Connector/Python (version 2.1.8 or later). + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - Last updated: April 2018. - -Licensing Information - - This is a release of MySQL Connector/Python (version 2.1.8 or later), - brought to you by the MySQL team at Oracle. This software is released - under version 2 of the GNU General Public License (GPLv2), as set forth - below, with the following additional permissions: - - This distribution of MySQL Connector/Python (version 2.1.8 or later) is - distributed with certain software that is licensed under separate - terms, as designated in a particular file or component or in the - license documentation. Without limiting your rights under the GPLv2, - the authors of MySQL hereby grant you an additional permission to link - the program and your derivative works with the separately licensed - software that they have included with the program. - - Without limiting the foregoing grant of rights under the GPLv2 and - additional permission as to separately licensed software, this - Connector is also subject to the Universal FOSS Exception, version 1.0, - a copy of which is reproduced below and can also be found along with - its FAQ at http://oss.oracle.com/licenses/universal-foss-exception. - - Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights - reserved. - -Election of GPLv2 - - For the avoidance of doubt, except that if any license choice other - than GPL or LGPL is available it will apply instead, Oracle elects to - use only the General Public License version 2 (GPLv2) at this time for - any software where a choice of GPL license versions is made available - with the language indicating that GPLv2 or any later version may be - used, or where a choice of which version of the GPL is applied is - otherwise unspecified. - -GNU General Public License Version 2.0, June 1991 - -The following applies to all products licensed under the GNU General -Public License, Version 2.0: You may not use the identified files -except in compliance with the GNU General Public License, Version -2.0 (the "License.") You may obtain a copy of the License at -http://www.gnu.org/licenses/gpl-2.0.txt. A copy of the license is -also reproduced below. Unless required by applicable law or agreed -to in writing, software distributed under the License is distributed -on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the License for the specific language -governing permissions and limitations under the License. - -GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim -copies of this license document, but changing it is not -allowed. + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -98,16 +44,16 @@ you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - We protect your rights with two steps: (1) copyright the software, -and (2) offer you this license which gives you legal permission to -copy, distribute and/or modify the software. + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, -we want its recipients to know that what they have is not the original, -so that any problems introduced by others will not reflect on the -original authors' reputations. +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free @@ -118,7 +64,7 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - GNU GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -138,7 +84,6 @@ is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate @@ -150,7 +95,6 @@ along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 @@ -195,15 +139,13 @@ with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software - interchange; or, + 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your @@ -222,8 +164,8 @@ The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as -a special exception, the source code distributed need not include +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component @@ -235,7 +177,6 @@ access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -244,7 +185,6 @@ However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are @@ -254,7 +194,6 @@ Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. - 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to @@ -263,7 +202,6 @@ restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. - 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -296,7 +234,6 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -305,54 +242,52 @@ those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new -versions of the General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Program does not specify a -version number of this License, you may choose any version ever -published by the Free Software Foundation. +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the -author to ask for permission. For software which is copyrighted by the -Free Software Foundation, write to the Free Software Foundation; we -sometimes make exceptions for this. Our decision will be guided by the -two goals of preserving the free status of all derivatives of our free -software and of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS -WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS - How to Apply These Terms to Your New Programs + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -366,21 +301,19 @@ the "copyright" line and a pointer to where the full notice is found. Copyright (C) - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - - the License, or (at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. @@ -388,1347 +321,27 @@ If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details - type 'show w'. This is free software, and you are welcome - to redistribute it under certain conditions; type 'show c' - for details. + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. -The hypothetical commands 'show w' and 'show c' should show the -appropriate parts of the General Public License. Of course, the -commands you use may be called something other than 'show w' and -'show c'; they could even be mouse-clicks or menu items--whatever -suits your program. +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program 'Gnomovision' (which makes passes at compilers) written - by James Hacker. + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice -This General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, -you may consider it more useful to permit linking proprietary -applications with the library. If this is what you want to do, use -the GNU Lesser General Public License instead of this License. - -The Universal FOSS Exception, Version 1.0 - - In addition to the rights set forth in the other license(s) included in - the distribution for this software, data, and/or documentation - (collectively the "Software", and such licenses collectively with this - additional permission the "Software License"), the copyright holders - wish to facilitate interoperability with other software, data, and/or - documentation distributed with complete corresponding source under a - license that is OSI-approved and/or categorized by the FSF as free - (collectively "Other FOSS"). We therefore hereby grant the following - additional permission with respect to the use and distribution of the - Software with Other FOSS, and the constants, function signatures, data - structures and other invocation methods used to run or interact with - each of them (as to each, such software's "Interfaces"): - i. The Software's Interfaces may, to the extent permitted by the - license of the Other FOSS, be copied into, used and distributed in - the Other FOSS in order to enable interoperability, without - requiring a change to the license of the Other FOSS other than as - to any Interfaces of the Software embedded therein. The Software's - Interfaces remain at all times under the Software License, - including without limitation as used in the Other FOSS (which upon - any such use also then contains a portion of the Software under the - Software License). - ii. The Other FOSS's Interfaces may, to the extent permitted by the - license of the Other FOSS, be copied into, used and distributed in - the Software in order to enable interoperability, without requiring - that such Interfaces be licensed under the terms of the Software - License or otherwise altering their original terms, if this does - not require any portion of the Software other than such Interfaces - to be licensed under the terms other than the Software License. - iii. If only Interfaces and no other code is copied between the - Software and the Other FOSS in either direction, the use and/or - distribution of the Software with the Other FOSS shall not be - deemed to require that the Other FOSS be licensed under the license - of the Software, other than as to any Interfaces of the Software - copied into the Other FOSS. This includes, by way of example and - without limitation, statically or dynamically linking the Software - together with Other FOSS after enabling interoperability using the - Interfaces of one or both, and distributing the resulting - combination under different licenses for the respective portions - thereof. For avoidance of doubt, a license which is OSI-approved or - categorized by the FSF as free, includes, for the purpose of this - permission, such licenses with additional permissions, and any - license that has previously been so approved or categorized as - free, even if now deprecated or otherwise no longer recognized as - approved or free. Nothing in this additional permission grants any - right to distribute any portion of the Software on terms other than - those of the Software License or grants any additional permission - of any kind for use or distribution of the Software in conjunction - with software other than Other FOSS. - -Licenses for Third-Party Components - - The following sections contain licensing information for libraries that - we have included with the MySQL Connector/Python (version 2.1.8 or - later) source and components used to test MySQL Connector/Python - (version 2.1.8 or later). Commonly used licenses referenced herein can - be found in Commonly Used Licenses. We are thankful to all individuals - that have created these. - -Django 1.5.1 - - The following software may be included in this product: -Copyright (c) Django Software Foundation and individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - - 3. Neither the name of Django nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -Google Protocol Buffers - - The following software may be included in this product: -Protocol Buffers (aka Google protobuf) - -Google Protocol Buffers - protobuf -Copyright 2008, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, -with or without modification, are permitted provided -that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. -* Redistributions in binary form must reproduce the - above copyright notice, this list of conditions and - the following disclaimer in the documentation and/or - other materials provided with the distribution. -* Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Code generated by the Protocol Buffer compiler is owned by -the owner of the input file used when generating it. This -code is not standalone and requires a support library to be -linked with it. This support library is itself covered by -the above license. - -Commonly Used Licenses - -Artistic License (Perl) 1.0 - -The "Artistic License" - -Preamble - -The intent of this document is to state the conditions under which a -Package may be copied, such that the Copyright Holder maintains some -semblance of artistic control over the development of the package, -while giving the users of the package the right to use and distribute -the Package in a more-or-less customary fashion, plus the right to make -reasonable modifications. - -Definitions: - - "Package" refers to the collection of files distributed by the - Copyright Holder, and derivatives of that collection of files - created through textual modification. - - "Standard Version" refers to such a Package if it has not been - modified, or has been modified in accordance with the wishes - of the Copyright Holder as specified below. - - "Copyright Holder" is whoever is named in the copyright or - copyrights for the package. - - "You" is you, if you're thinking about copying or distributing - this Package. - - "Reasonable copying fee" is whatever you can justify on the - basis of media cost, duplication charges, time of people involved, - and so on. (You will not be required to justify it to the - Copyright Holder, but only to the computing community at large - as a market that must bear the fee.) - - "Freely Available" means that no fee is charged for the item - itself, though there may be fees involved in handling the item. - It also means that recipients of the item may redistribute it - under the same conditions they received it. - -1. You may make and give away verbatim copies of the source form of the -Standard Version of this Package without restriction, provided that you -duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications -derived from the Public Domain or from the Copyright Holder. A Package -modified in such a way shall still be considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided -that you insert a prominent notice in each changed file stating how and -when you changed that file, and provided that you do at least ONE of the -following: - - a) place your modifications in the Public Domain or otherwise make them - Freely Available, such as by posting said modifications to Usenet or - an equivalent medium, or placing the modifications on a major archive - site such as uunet.uu.net, or by allowing the Copyright Holder to include - your modifications in the Standard Version of the Package. - - b) use the modified Package only within your corporation or organization. - - c) rename any non-standard executables so the names do not conflict - with standard executables, which must also be provided, and provide - a separate manual page for each non-standard executable that clearly - documents how it differs from the Standard Version. - - d) make other distribution arrangements with the Copyright Holder. - -4. You may distribute the programs of this Package in object code or -executable form, provided that you do at least ONE of the following: - - a) distribute a Standard Version of the executables and library files, - together with instructions (in the manual page or equivalent) on where - to get the Standard Version. - - b) accompany the distribution with the machine-readable source of - the Package with your modifications. - - c) give non-standard executables non-standard names, and clearly - document the differences in manual pages (or equivalent), together - with instructions on where to get the Standard Version. - - d) make other distribution arrangements with the Copyright Holder. - -5. You may charge a reasonable copying fee for any distribution of this -Package. You may charge any fee you choose for support of this -Package. You may not charge a fee for this Package itself. However, -you may distribute this Package in aggregate with other (possibly -commercial) programs as part of a larger (possibly commercial) software -distribution provided that you do not advertise this Package as a -product of your own. You may embed this Package's interpreter within -an executable of yours (by linking); this shall be construed as a mere -form of aggregation, provided that the complete Standard Version of the -interpreter is so embedded. - -6. The scripts and library files supplied as input to or produced as -output from the programs of this Package do not automatically fall -under the copyright of this Package, but belong to whoever generated -them, and may be sold commercially, and may be aggregated with this -Package. If such scripts or library files are aggregated with this -Package via the so-called "undump" or "unexec" methods of producing a -binary executable image, then distribution of such an image shall -neither be construed as a distribution of this Package nor shall it -fall under the restrictions of Paragraphs 3 and 4, provided that you do -not represent such an executable image as a Standard Version of this -Package. - -7. C subroutines (or comparably compiled subroutines in other -languages) supplied by you and linked into this Package in order to -emulate subroutines and variables of the language defined by this -Package shall not be considered part of this Package, but are the -equivalent of input as in Paragraph 6, provided these subroutines do -not change the language in any way that would cause it to fail the -regression tests for the language. - -8. Aggregation of this Package with a commercial distribution is always -permitted provided that the use of this Package is embedded; that is, -when no overt attempt is made to make this Package's interfaces visible -to the end user of the commercial distribution. Such use shall not be -construed as a distribution of this Package. - -9. The name of the Copyright Holder may not be used to endorse or promote -products derived from this software without specific prior written -permission. - -10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - - The End - -GNU Lesser General Public License Version 2.1, February 1999 - -The following applies to all products licensed under the -GNU Lesser General Public License, Version 2.1: You may -not use the identified files except in compliance with -the GNU Lesser General Public License, Version 2.1 (the -"License"). You may obtain a copy of the License at -http://www.gnu.org/licenses/lgpl-2.1.html. A copy of the -license is also reproduced below. Unless required by -applicable law or agreed to in writing, software distributed -under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express -or implied. See the License for the specific language governing -permissions and limitations under the License. - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it -becomes a de-facto standard. To achieve this, non-free programs -must be allowed to use the library. A more frequent case is that -a free library does the same job as widely used non-free libraries. -In this case, there is little to gain by limiting the free library -to free software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control -compilation and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended -to apply, and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms -of the ordinary General Public License). - - To apply these terms, attach the following notices to the library. -It is safest to attach them to the start of each source file to most -effectively convey the exclusion of warranty; and each file should -have at least the "copyright" line and a pointer to where the full -notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James - Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - -GNU Lesser General Public License Version 2, June 1991 - -GNU LIBRARY GENERAL PUBLIC LICENSE - -Version 2, June 1991 - -Copyright (C) 1991 Free Software Foundation, Inc. -51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is numbered 2 -because it goes with version 2 of the ordinary GPL.] - -Preamble - -The licenses for most software are designed to take away your freedom to -share and change it. By contrast, the GNU General Public Licenses are -intended to guarantee your freedom to share and change free software--to make -sure the software is free for all its users. - -This license, the Library General Public License, applies to some specially -designated Free Software Foundation software, and to any other libraries -whose authors decide to use it. You can use it for your libraries, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom -to distribute copies of free software (and charge for this service if you -wish), that you receive source code or can get it if you want it, that you -can change the software or use pieces of it in new free programs; and that -you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to -deny you these rights or to ask you to surrender the rights. These -restrictions translate to certain responsibilities for you if you distribute -copies of the library, or if you modify it. - -For example, if you distribute copies of the library, whether gratis or for a -fee, you must give the recipients all the rights that we gave you. You must -make sure that they, too, receive or can get the source code. If you link a -program with the library, you must provide complete object files to the -recipients so that they can relink them with the library, after making -changes to the library and recompiling it. And you must show them these terms -so they know their rights. - -Our method of protecting your rights has two steps: (1) copyright the -library, and (2) offer you this license which gives you legal permission to -copy, distribute and/or modify the library. - -Also, for each distributor's protection, we want to make certain that -everyone understands that there is no warranty for this free library. If the -library is modified by someone else and passed on, we want its recipients to -know that what they have is not the original version, so that any problems -introduced by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We -wish to avoid the danger that companies distributing free software will -individually obtain patent licenses, thus in effect transforming the program -into proprietary software. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -Most GNU software, including some libraries, is covered by the ordinary GNU -General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary one; -be sure to read it in full, and don't assume that anything in it is the same -as in the ordinary license. - -The reason we have a separate public license for some libraries is that they -blur the distinction we usually make between modifying or adding to a program -and simply using it. Linking a program with a library, without changing the -library, is in some sense simply using the library, and is analogous to -running a utility program or application program. However, in a textual and -legal sense, the linked executable is a combined work, a derivative of the -original library, and the ordinary General Public License treats it as such. - -Because of this blurred distinction, using the ordinary General Public -License for libraries did not effectively promote software sharing, because -most developers did not use the libraries. We concluded that weaker -conditions might promote sharing better. - -However, unrestricted linking of non-free programs would deprive the users of -those programs of all benefit from the free status of the libraries -themselves. This Library General Public License is intended to permit -developers of non-free programs to use free libraries, while preserving your -freedom as a user of such programs to change the free libraries that are -incorporated in them. (We have not seen how to achieve this as regards -changes in header files, but we have achieved it as regards changes in the -actual functions of the Library.) The hope is that this will lead to faster -development of free libraries. - -The precise terms and conditions for copying, distribution and modification -follow. Pay close attention to the difference between a "work based on the -library" and a "work that uses the library". The former contains code derived -from the library, while the latter only works together with the library. - -Note that it is possible for a library to be covered by the ordinary General -Public License rather than by this special one. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License Agreement applies to any software library which contains a -notice placed by the copyright holder or other authorized party saying it may -be distributed under the terms of this Library General Public License (also -called "this License"). Each licensee is addressed as "you". - -A "library" means a collection of software functions and/or data prepared so -as to be conveniently linked with application programs (which use some of -those functions and data) to form executables. - -The "Library", below, refers to any such software library or work which has -been distributed under these terms. A "work based on the Library" means -either the Library or any derivative work under copyright law: that is to -say, a work containing the Library or a portion of it, either verbatim or -with modifications and/or translated straightforwardly into another language. -(Hereinafter, translation is included without limitation in the term -"modification".) - -"Source code" for a work means the preferred form of the work for making -modifications to it. For a library, complete source code means all the source -code for all modules it contains, plus any associated interface definition -files, plus the scripts used to control compilation and installation of the -library. - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running a program -using the Library is not restricted, and output from such a program is -covered only if its contents constitute a work based on the Library -(independent of the use of the Library in a tool for writing it). Whether -that is true depends on what the Library does and what the program that uses -the Library does. - -1. You may copy and distribute verbatim copies of the Library's complete -source code as you receive it, in any medium, provided that you conspicuously -and appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this -License and to the absence of any warranty; and distribute a copy of this -License along with the Library. - -You may charge a fee for the physical act of transferring a copy, and you may -at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Library or any portion of it, -thus forming a work based on the Library, and copy and distribute such -modifications or work under the terms of Section 1 above, provided that you -also meet all of these conditions: - - a) The modified work must itself be a software library. - b) You must cause the files modified to carry prominent notices stating -that you changed the files and the date of any change. - c) You must cause the whole of the work to be licensed at no charge to -all third parties under the terms of this License. - d) If a facility in the modified Library refers to a function or a table -of data to be supplied by an application program that uses the facility, -other than as an argument passed when the facility is invoked, then you must -make a good faith effort to ensure that, in the event an application does not -supply such function or table, the facility still operates, and performs -whatever part of its purpose remains meaningful. - - (For example, a function in a library to compute square roots has a -purpose that is entirely well-defined independent of the application. -Therefore, Subsection 2d requires that any application-supplied function or -table used by this function must be optional: if the application does not -supply it, the square root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Library, and can be reasonably -considered independent and separate works in themselves, then this License, -and its terms, do not apply to those sections when you distribute them as -separate works. But when you distribute the same sections as part of a whole -which is a work based on the Library, the distribution of the whole must be -on the terms of this License, whose permissions for other licensees extend to -the entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on -the Library. - -In addition, mere aggregation of another work not based on the Library with -the Library (or with a work based on the Library) on a volume of a storage or -distribution medium does not bring the other work under the scope of this -License. - -3. You may opt to apply the terms of the ordinary GNU General Public License -instead of this License to a given copy of the Library. To do this, you must -alter all the notices that refer to this License, so that they refer to the -ordinary GNU General Public License, version 2, instead of to this License. -(If a newer version than version 2 of the ordinary GNU General Public License -has appeared, then you can specify that version instead if you wish.) Do not -make any other change in these notices. - -Once this change is made in a given copy, it is irreversible for that copy, -so the ordinary GNU General Public License applies to all subsequent copies -and derivative works made from that copy. - -This option is useful when you wish to copy part of the code of the Library -into a program that is not a library. - -4. You may copy and distribute the Library (or a portion or derivative of it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you accompany it with the complete -corresponding machine-readable source code, which must be distributed under -the terms of Sections 1 and 2 above on a medium customarily used for software -interchange. - -If distribution of object code is made by offering access to copy from a -designated place, then offering equivalent access to copy the source code -from the same place satisfies the requirement to distribute the source code, -even though third parties are not compelled to copy the source along with the -object code. - -5. A program that contains no derivative of any portion of the Library, but -is designed to work with the Library by being compiled or linked with it, is -called a "work that uses the Library". Such a work, in isolation, is not a -derivative work of the Library, and therefore falls outside the scope of this -License. - -However, linking a "work that uses the Library" with the Library creates an -executable that is a derivative of the Library (because it contains portions -of the Library), rather than a "work that uses the library". The executable -is therefore covered by this License. Section 6 states terms for distribution -of such executables. - -When a "work that uses the Library" uses material from a header file that is -part of the Library, the object code for the work may be a derivative work of -the Library even though the source code is not. Whether this is true is -especially significant if the work can be linked without the Library, or if -the work is itself a library. The threshold for this to be true is not -precisely defined by law. - -If such an object file uses only numerical parameters, data structure layouts -and accessors, and small macros and small inline functions (ten lines or less -in length), then the use of the object file is unrestricted, regardless of -whether it is legally a derivative work. (Executables containing this object -code plus portions of the Library will still fall under Section 6.) - -Otherwise, if the work is a derivative of the Library, you may distribute the -object code for the work under the terms of Section 6. Any executables -containing that work also fall under Section 6, whether or not they are -linked directly with the Library itself. - -6. As an exception to the Sections above, you may also compile or link a -"work that uses the Library" with the Library to produce a work containing -portions of the Library, and distribute that work under terms of your choice, -provided that the terms permit modification of the work for the customer's -own use and reverse engineering for debugging such modifications. - -You must give prominent notice with each copy of the work that the Library is -used in it and that the Library and its use are covered by this License. You -must supply a copy of this License. If the work during execution displays -copyright notices, you must include the copyright notice for the Library -among them, as well as a reference directing the user to the copy of this -License. Also, you must do one of these things: - - a) Accompany the work with the complete corresponding machine-readable -source code for the Library including whatever changes were used in the work -(which must be distributed under Sections 1 and 2 above); and, if the work is -an executable linked with the Library, with the complete machine-readable -"work that uses the Library", as object code and/or source code, so that the -user can modify the Library and then relink to produce a modified executable -containing the modified Library. (It is understood that the user who changes -the contents of definitions files in the Library will not necessarily be able -to recompile the application to use the modified definitions.) - b) Accompany the work with a written offer, valid for at least three -years, to give the same user the materials specified in Subsection 6a, above, -for a charge no more than the cost of performing this distribution. - c) If distribution of the work is made by offering access to copy from a -designated place, offer equivalent access to copy the above specified -materials from the same place. - d) Verify that the user has already received a copy of these materials or -that you have already sent this user a copy. - -For an executable, the required form of the "work that uses the Library" must -include any data and utility programs needed for reproducing the executable -from it. However, as a special exception, the source code distributed need -not include anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component itself -accompanies the executable. - -It may happen that this requirement contradicts the license restrictions of -other proprietary libraries that do not normally accompany the operating -system. Such a contradiction means you cannot use both them and the Library -together in an executable that you distribute. - -7. You may place library facilities that are a work based on the Library -side-by-side in a single library together with other library facilities not -covered by this License, and distribute such a combined library, provided -that the separate distribution of the work based on the Library and of the -other library facilities is otherwise permitted, and provided that you do -these two things: - - a) Accompany the combined library with a copy of the same work based on -the Library, uncombined with any other library facilities. This must be -distributed under the terms of the Sections above. - b) Give prominent notice with the combined library of the fact that part -of it is a work based on the Library, and explaining where to find the -accompanying uncombined form of the same work. - -8. You may not copy, modify, sublicense, link with, or distribute the Library -except as expressly provided under this License. Any attempt otherwise to -copy, modify, sublicense, link with, or distribute the Library is void, and -will automatically terminate your rights under this License. However, parties -who have received copies, or rights, from you under this License will not -have their licenses terminated so long as such parties remain in full -compliance. - -9. You are not required to accept this License, since you have not signed it. -However, nothing else grants you permission to modify or distribute the -Library or its derivative works. These actions are prohibited by law if you -do not accept this License. Therefore, by modifying or distributing the -Library (or any work based on the Library), you indicate your acceptance of -this License to do so, and all its terms and conditions for copying, -distributing or modifying the Library or works based on it. - -10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the original -licensor to copy, distribute, link with or modify the Library subject to -these terms and conditions. You may not impose any further restrictions on -the recipients' exercise of the rights granted herein. You are not -responsible for enforcing compliance by third parties to this License. - -11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not excuse -you from the conditions of this License. If you cannot distribute so as to -satisfy simultaneously your obligations under this License and any other -pertinent obligations, then as a consequence you may not distribute the -Library at all. For example, if a patent license would not permit -royalty-free redistribution of the Library by all those who receive copies -directly or indirectly through you, then the only way you could satisfy both -it and this License would be to refrain entirely from distribution of the -Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, and -the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents -or other property right claims or to contest validity of any such claims; -this section has the sole purpose of protecting the integrity of the free -software distribution system which is implemented by public license -practices. Many people have made generous contributions to the wide range of -software distributed through that system in reliance on consistent -application of that system; it is up to the author/donor to decide if he or -she is willing to distribute software through any other system and a licensee -cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -12. If the distribution and/or use of the Library is restricted in certain -countries either by patents or by copyrighted interfaces, the original -copyright holder who places the Library under this License may add an -explicit geographical distribution limitation excluding those countries, so -that distribution is permitted only in or among countries not thus excluded. -In such case, this License incorporates the limitation as if written in the -body of this License. - -13. The Free Software Foundation may publish revised and/or new versions of -the Library General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and "any later -version", you have the option of following the terms and conditions either of -that version or of any later version published by the Free Software -Foundation. If the Library does not specify a license version number, you may -choose any version ever published by the Free Software Foundation. - -14. If you wish to incorporate parts of the Library into other free programs -whose distribution conditions are incompatible with these, write to the -author to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - -NO WARRANTY - -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE -STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE -LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER -SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. -END OF TERMS AND CONDITIONS -How to Apply These Terms to Your New Libraries - -If you develop a new library, and you want it to be of the greatest possible -use to the public, we recommend making it free software that everyone can -redistribute and change. You can do so by permitting redistribution under -these terms (or, alternatively, under the terms of the ordinary General -Public License). - -To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - -one line to give the library's name and an idea of what it does. -Copyright (C) year name of author - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, -Boston, MA 02110-1301, USA. - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in -the library `Frob' (a library for tweaking knobs) written -by James Random Hacker. - -signature of Ty Coon, 1 April 1990 -Ty Coon, President of Vice - -That's all there is to it! - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Written Offer for Source Code - - For any software that you receive from Oracle in binary form which is - licensed under an open source license that gives you the right to - receive the source code for that binary, you can obtain a copy of the - applicable source code by visiting - http://www.oracle.com/goto/opensourcecode. If the source code for the - binary was not provided to you with the binary, you can also receive a - copy of the source code on physical media by submitting a written - request to the address listed below or by sending an email to Oracle - using the following link: - http://www.oracle.com/goto/opensourcecode/request. - Oracle America, Inc. - Attn: Senior Vice President - Development and Engineering Legal - 500 Oracle Parkway, 10th Floor - Redwood Shores, CA 94065 - - Your request should include: - - * The name of the binary for which you are requesting the source code - - * The name and version number of the Oracle product containing the - binary - - * The date you received the Oracle product - - * Your name - - * Your company name (if applicable) - - * Your return mailing address and email, and - - * A telephone number in the event we need to reach you. - - We may charge you a fee to cover the cost of physical media and - processing. - - Your request must be sent - a. within three (3) years of the date you received the Oracle product - that included the binary that is the subject of your request, or - b. in the case of code licensed under the GPL v3 for as long as Oracle - offers spare parts or customer support for that product model. +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/README.txt b/README.txt index 173bb2d2..46cce18a 100644 --- a/README.txt +++ b/README.txt @@ -3,7 +3,7 @@ MySQL Connector/Python 2.1 ========================== MySQL Connector/Python -Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. @@ -22,15 +22,45 @@ They can be found in the examples/ directory. License ======= -Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. +This is a release of MySQL Connector/Python, Oracle's dual- +license Python Driver for MySQL. For the avoidance of +doubt, this particular copy of the software is released +under the version 2 of the GNU General Public License. +MySQL Connector/Python is brought to you by Oracle. -This is a release of MySQL Connector/Python, Oracle's Python driver for MySQL. +Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. -This distribution may include materials developed by third parties. For license -and attribution notices for these materials, please refer to the LICENSE.txt file. -For more information on MySQL Connector/Python visit https://dev.mysql.com/doc/connector-python/en/ -For additional downloads and the source of MySQL Connector/Python visit http://dev.mysql.com/downloads +MySQL FOSS License Exception +We want free and open source software applications under +certain licenses to be able to use the GPL-licensed MySQL +Connector/Python (specified GPL-licensed MySQL client libraries) +despite the fact that not all such FOSS licenses are +compatible with version 2 of the GNU General Public License. +Therefore there are special exceptions to the terms and +conditions of the GPLv2 as applied to these client libraries, +which are identified and described in more detail in the +FOSS License Exception at + + +This software is OSI Certified Open Source Software. +OSI Certified is a certification mark of the Open Source Initiative. + +This distribution may include materials developed by third +parties. For license and attribution notices for these +materials, please refer to the documentation that accompanies +this distribution (see the "Licenses for Third-Party Components" +appendix) or view the online documentation at + +A copy of the license/notices is also reproduced below. + +GPLv2 Disclaimer +For the avoidance of doubt, except that if any license choice +other than GPL or LGPL is available it will apply instead, +Oracle elects to use only the General Public License version 2 +(GPLv2) at this time for any software where a choice of GPL +license versions is made available with the language indicating +that GPLv2 or any later version may be used, or where a choice +of which version of the GPL is applied is otherwise unspecified. -MySQL Connector/Python is brought to you by the MySQL team at Oracle. From a28925bc2d644f3d2228607ee746f35888c68111 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 28 Jun 2018 12:28:03 +0100 Subject: [PATCH 80/95] Revert "Update copyright source headers in issues tests files" This reverts commit 02b481a2947d19c8d0283d9423aee65843914de5. --- tests/issues/test_bug21449207.py | 39 ++++++++++++++------------------ tests/issues/test_bug21449996.py | 39 ++++++++++++++------------------ tests/issues/test_bug21879859.py | 39 ++++++++++++++------------------ tests/issues/test_bug21879914.py | 39 ++++++++++++++------------------ tests/issues/test_bug22545879.py | 39 ++++++++++++++------------------ 5 files changed, 85 insertions(+), 110 deletions(-) diff --git a/tests/issues/test_bug21449207.py b/tests/issues/test_bug21449207.py index c212896b..9b9c3285 100644 --- a/tests/issues/test_bug21449207.py +++ b/tests/issues/test_bug21449207.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import mysql.connector from tests import foreach_cnx, cnx_config diff --git a/tests/issues/test_bug21449996.py b/tests/issues/test_bug21449996.py index c977d7fd..b4e428f6 100644 --- a/tests/issues/test_bug21449996.py +++ b/tests/issues/test_bug21449996.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import mysql.connector from tests import foreach_cnx @@ -61,4 +56,4 @@ def test_load_data_compressed(self): self.fail(exc) cur.execute("SELECT COUNT(*) FROM %s" % self.table_name) - self.assertEqual(11486, cur.fetchone()[0]) + self.assertEqual(11486, cur.fetchone()[0]) \ No newline at end of file diff --git a/tests/issues/test_bug21879859.py b/tests/issues/test_bug21879859.py index 292d15ef..46fbfd6f 100644 --- a/tests/issues/test_bug21879859.py +++ b/tests/issues/test_bug21879859.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ BUG21879859 """ diff --git a/tests/issues/test_bug21879914.py b/tests/issues/test_bug21879914.py index 906e52de..7300e8bb 100644 --- a/tests/issues/test_bug21879914.py +++ b/tests/issues/test_bug21879914.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ BUG21879914 Fix using C/Extension with only CA given """ diff --git a/tests/issues/test_bug22545879.py b/tests/issues/test_bug22545879.py index 584cd3b1..6dfb3fb3 100644 --- a/tests/issues/test_bug22545879.py +++ b/tests/issues/test_bug22545879.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ BUG22545879 Fix reading and using ssl-cipher MySQL option """ From 1ea01e891cc8358844881e645083d618e3a56139 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 28 Jun 2018 12:28:12 +0100 Subject: [PATCH 81/95] Revert "Update copyright source headers in cext tests files" This reverts commit f69c7aa0a1c730ff4c0097a93af9f3d8f14afe22. --- tests/cext/test_cext_api.py | 37 ++++++++++++---------------- tests/cext/test_cext_connection.py | 39 +++++++++++++----------------- tests/cext/test_cext_cursor.py | 39 +++++++++++++----------------- 3 files changed, 50 insertions(+), 65 deletions(-) diff --git a/tests/cext/test_cext_api.py b/tests/cext/test_cext_api.py index 2ad561fb..9a15d086 100644 --- a/tests/cext/test_cext_api.py +++ b/tests/cext/test_cext_api.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Testing the C Extension MySQL C API """ diff --git a/tests/cext/test_cext_connection.py b/tests/cext/test_cext_connection.py index ebd55988..c6e389e9 100644 --- a/tests/cext/test_cext_connection.py +++ b/tests/cext/test_cext_connection.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Testing connection.CMySQLConnection class using the C Extension """ diff --git a/tests/cext/test_cext_cursor.py b/tests/cext/test_cext_cursor.py index bb3fce71..ea809eeb 100644 --- a/tests/cext/test_cext_cursor.py +++ b/tests/cext/test_cext_cursor.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Testing the C Extension cursors """ From c590ca54147397077528fedd84d71c79f78660fa Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 28 Jun 2018 12:28:22 +0100 Subject: [PATCH 82/95] Revert "WL11643: Update copyright source headers and license text" This reverts commit a22be480d541691e29c1b1912946f4c7a1be1c7b. --- cpyint | 2 +- examples/dates.py | 39 +++++++--------- examples/engines.py | 39 +++++++--------- examples/inserts.py | 39 +++++++--------- examples/microseconds.py | 39 +++++++--------- examples/multi_resultsets.py | 39 +++++++--------- examples/mysql_warnings.py | 39 +++++++--------- examples/prepared_statements.py | 40 +++++++---------- examples/transaction.py | 39 +++++++--------- examples/unicode.py | 39 +++++++--------- examples/warnings.py | 39 +++++++--------- lib/cpy_distutils.py | 39 +++++++--------- lib/mysql/connector/__init__.py | 37 +++++++-------- lib/mysql/connector/abstracts.py | 37 +++++++-------- lib/mysql/connector/authentication.py | 37 +++++++-------- lib/mysql/connector/catch23.py | 37 +++++++-------- lib/mysql/connector/charsets.py | 45 +++++++++---------- lib/mysql/connector/connection.py | 37 +++++++-------- lib/mysql/connector/connection_cext.py | 37 +++++++-------- lib/mysql/connector/constants.py | 37 +++++++-------- lib/mysql/connector/conversion.py | 37 +++++++-------- lib/mysql/connector/cursor.py | 37 +++++++-------- lib/mysql/connector/cursor_cext.py | 37 +++++++-------- lib/mysql/connector/custom_types.py | 39 +++++++--------- lib/mysql/connector/dbapi.py | 39 +++++++--------- lib/mysql/connector/errorcode.py | 45 +++++++++---------- lib/mysql/connector/errors.py | 37 +++++++-------- lib/mysql/connector/fabric/__init__.py | 39 +++++++--------- lib/mysql/connector/fabric/balancing.py | 39 +++++++--------- lib/mysql/connector/fabric/caching.py | 37 +++++++-------- lib/mysql/connector/fabric/connection.py | 37 +++++++-------- lib/mysql/connector/locales/__init__.py | 39 +++++++--------- lib/mysql/connector/locales/eng/__init__.py | 39 +++++++--------- .../connector/locales/eng/client_error.py | 45 +++++++++---------- lib/mysql/connector/network.py | 37 +++++++-------- lib/mysql/connector/optionfiles.py | 37 +++++++-------- lib/mysql/connector/pooling.py | 39 +++++++--------- lib/mysql/connector/protocol.py | 37 +++++++-------- lib/mysql/connector/utils.py | 37 +++++++-------- lib/mysql/connector/version.py | 40 +++++++---------- setup.py | 39 +++++++--------- setupinfo.py | 39 +++++++--------- src/exceptions.c | 39 +++++++--------- src/force_cpp_linkage.cc | 39 +++++++--------- src/include/catch23.h | 41 ++++++++--------- src/include/exceptions.h | 39 +++++++--------- src/include/mysql_capi.h | 39 +++++++--------- src/include/mysql_capi_conversion.h | 41 ++++++++--------- src/include/mysql_connector.h | 39 +++++++--------- src/mysql_capi.c | 39 +++++++--------- src/mysql_capi_conversion.c | 39 +++++++--------- src/mysql_connector.c | 39 +++++++--------- support/django/run_django_tests.py | 39 +++++++--------- .../django/test_mysqlconnector_settings.py | 40 ++++++++--------- tests/__init__.py | 39 +++++++--------- tests/mysqld.py | 37 +++++++-------- tests/py26.py | 40 ++++++++--------- tests/test_abstracts.py | 37 +++++++-------- tests/test_authentication.py | 39 +++++++--------- tests/test_bugs.py | 37 +++++++-------- tests/test_connection.py | 37 +++++++-------- tests/test_constants.py | 39 +++++++--------- tests/test_conversion.py | 39 +++++++--------- tests/test_cursor.py | 36 +++++++-------- tests/test_django.py | 39 +++++++--------- tests/test_errorcode.py | 39 +++++++--------- tests/test_errors.py | 39 +++++++--------- tests/test_examples.py | 41 ++++++++--------- tests/test_fabric.py | 39 +++++++--------- tests/test_locales.py | 39 +++++++--------- tests/test_mysql_datatypes.py | 39 +++++++--------- tests/test_network.py | 39 +++++++--------- tests/test_optionfiles.py | 39 +++++++--------- tests/test_pep249.py | 39 +++++++--------- tests/test_pooling.py | 38 +++++++--------- tests/test_protocol.py | 39 +++++++--------- tests/test_setup.py | 39 +++++++--------- tests/test_style.py | 39 +++++++--------- tests/test_utils.py | 39 +++++++--------- unittests.py | 39 +++++++--------- 80 files changed, 1334 insertions(+), 1731 deletions(-) diff --git a/cpyint b/cpyint index 83d14a44..069010a3 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 83d14a44861c288ec772c9d0f3bc1e37e57dae9f +Subproject commit 069010a344f13dcc3cccdeb6488bacae88949bf3 diff --git a/examples/dates.py b/examples/dates.py index 44a4e430..af599050 100644 --- a/examples/dates.py +++ b/examples/dates.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/engines.py b/examples/engines.py index d1718e3b..244bcc64 100755 --- a/examples/engines.py +++ b/examples/engines.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/inserts.py b/examples/inserts.py index 6a808c30..6e3a2bcc 100755 --- a/examples/inserts.py +++ b/examples/inserts.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ Example using MySQL Connector/Python showing: diff --git a/examples/microseconds.py b/examples/microseconds.py index 3e9c17d8..9c30a343 100644 --- a/examples/microseconds.py +++ b/examples/microseconds.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ Example using MySQL Connector/Python showing: diff --git a/examples/multi_resultsets.py b/examples/multi_resultsets.py index 858c0bf2..ae9afee3 100644 --- a/examples/multi_resultsets.py +++ b/examples/multi_resultsets.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/mysql_warnings.py b/examples/mysql_warnings.py index 3ca3f1ba..b0c651aa 100755 --- a/examples/mysql_warnings.py +++ b/examples/mysql_warnings.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/prepared_statements.py b/examples/prepared_statements.py index b3fc6f6e..5522884a 100644 --- a/examples/prepared_statements.py +++ b/examples/prepared_statements.py @@ -1,34 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Example using MySQL Prepared Statements Example using MySQL Connector/Python showing: diff --git a/examples/transaction.py b/examples/transaction.py index 2fd64552..53e79eaa 100755 --- a/examples/transaction.py +++ b/examples/transaction.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/unicode.py b/examples/unicode.py index a519aa7b..e32a7fa0 100755 --- a/examples/unicode.py +++ b/examples/unicode.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/examples/warnings.py b/examples/warnings.py index a8b2f9fb..bd87c835 100755 --- a/examples/warnings.py +++ b/examples/warnings.py @@ -1,33 +1,28 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import sys, os diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index a8b11fa9..bc87b8f3 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -1,30 +1,25 @@ -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implements the DistUtils command 'build_ext' """ diff --git a/lib/mysql/connector/__init__.py b/lib/mysql/connector/__init__.py index 41d6b8ac..f7e2c8ba 100644 --- a/lib/mysql/connector/__init__.py +++ b/lib/mysql/connector/__init__.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ MySQL Connector/Python - MySQL driver written in Python diff --git a/lib/mysql/connector/abstracts.py b/lib/mysql/connector/abstracts.py index 87d88cc1..ad7b6fbe 100644 --- a/lib/mysql/connector/abstracts.py +++ b/lib/mysql/connector/abstracts.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Module gathering all abstract base classes""" diff --git a/lib/mysql/connector/authentication.py b/lib/mysql/connector/authentication.py index 2988bfe3..acf6970b 100644 --- a/lib/mysql/connector/authentication.py +++ b/lib/mysql/connector/authentication.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing support for MySQL Authentication Plugins""" diff --git a/lib/mysql/connector/catch23.py b/lib/mysql/connector/catch23.py index 2367bbd8..2ed5d47c 100644 --- a/lib/mysql/connector/catch23.py +++ b/lib/mysql/connector/catch23.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Python v2 to v3 migration module""" diff --git a/lib/mysql/connector/charsets.py b/lib/mysql/connector/charsets.py index e2e78e47..48b066e8 100644 --- a/lib/mysql/connector/charsets.py +++ b/lib/mysql/connector/charsets.py @@ -1,32 +1,27 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. -# +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . +# # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. -# +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. _GENERATED_ON = '2015-08-24' diff --git a/lib/mysql/connector/connection.py b/lib/mysql/connector/connection.py index d0d4b12e..87637613 100644 --- a/lib/mysql/connector/connection.py +++ b/lib/mysql/connector/connection.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing communication with MySQL servers. """ diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index 5fa1a231..04ff7fdf 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Connection class using the C Extension """ diff --git a/lib/mysql/connector/constants.py b/lib/mysql/connector/constants.py index afa2ee23..85e3f3a3 100644 --- a/lib/mysql/connector/constants.py +++ b/lib/mysql/connector/constants.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Various MySQL constants and character sets """ diff --git a/lib/mysql/connector/conversion.py b/lib/mysql/connector/conversion.py index 3a84ab13..706c6b3d 100644 --- a/lib/mysql/connector/conversion.py +++ b/lib/mysql/connector/conversion.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Converting MySQL and Python types """ diff --git a/lib/mysql/connector/cursor.py b/lib/mysql/connector/cursor.py index 9845a05f..4b4d3bca 100644 --- a/lib/mysql/connector/cursor.py +++ b/lib/mysql/connector/cursor.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Cursor classes """ diff --git a/lib/mysql/connector/cursor_cext.py b/lib/mysql/connector/cursor_cext.py index 2df65ce9..74415527 100644 --- a/lib/mysql/connector/cursor_cext.py +++ b/lib/mysql/connector/cursor_cext.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Cursor classes using the C Extension """ diff --git a/lib/mysql/connector/custom_types.py b/lib/mysql/connector/custom_types.py index a29eb302..1688eae2 100644 --- a/lib/mysql/connector/custom_types.py +++ b/lib/mysql/connector/custom_types.py @@ -1,30 +1,25 @@ -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Custom Python types used by MySQL Connector/Python""" diff --git a/lib/mysql/connector/dbapi.py b/lib/mysql/connector/dbapi.py index 41e6a749..35cb03b9 100644 --- a/lib/mysql/connector/dbapi.py +++ b/lib/mysql/connector/dbapi.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ This module implements some constructors and singletons as required by the diff --git a/lib/mysql/connector/errorcode.py b/lib/mysql/connector/errorcode.py index 675c76b8..0b3489aa 100644 --- a/lib/mysql/connector/errorcode.py +++ b/lib/mysql/connector/errorcode.py @@ -1,32 +1,27 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. -# +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . +# # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. -# +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. _GENERATED_ON = '2018-03-16' diff --git a/lib/mysql/connector/errors.py b/lib/mysql/connector/errors.py index 43e0c942..c0225a77 100644 --- a/lib/mysql/connector/errors.py +++ b/lib/mysql/connector/errors.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Python exceptions """ diff --git a/lib/mysql/connector/fabric/__init__.py b/lib/mysql/connector/fabric/__init__.py index 806e1a63..c88fe033 100644 --- a/lib/mysql/connector/fabric/__init__.py +++ b/lib/mysql/connector/fabric/__init__.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """MySQL Fabric support""" diff --git a/lib/mysql/connector/fabric/balancing.py b/lib/mysql/connector/fabric/balancing.py index 71fbac7a..8ebf50bd 100644 --- a/lib/mysql/connector/fabric/balancing.py +++ b/lib/mysql/connector/fabric/balancing.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing load balancing""" diff --git a/lib/mysql/connector/fabric/caching.py b/lib/mysql/connector/fabric/caching.py index 4cd34ea7..b508fa4f 100644 --- a/lib/mysql/connector/fabric/caching.py +++ b/lib/mysql/connector/fabric/caching.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing caching mechanisms for MySQL Fabric""" diff --git a/lib/mysql/connector/fabric/connection.py b/lib/mysql/connector/fabric/connection.py index b2658e9b..2c9a1337 100644 --- a/lib/mysql/connector/fabric/connection.py +++ b/lib/mysql/connector/fabric/connection.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing communication with MySQL Fabric""" diff --git a/lib/mysql/connector/locales/__init__.py b/lib/mysql/connector/locales/__init__.py index 1473beba..cd5e54f8 100644 --- a/lib/mysql/connector/locales/__init__.py +++ b/lib/mysql/connector/locales/__init__.py @@ -1,30 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Translations """ diff --git a/lib/mysql/connector/locales/eng/__init__.py b/lib/mysql/connector/locales/eng/__init__.py index 05194705..cfddd846 100644 --- a/lib/mysql/connector/locales/eng/__init__.py +++ b/lib/mysql/connector/locales/eng/__init__.py @@ -1,30 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """English Content """ diff --git a/lib/mysql/connector/locales/eng/client_error.py b/lib/mysql/connector/locales/eng/client_error.py index dca8bf1d..05ad6dbb 100644 --- a/lib/mysql/connector/locales/eng/client_error.py +++ b/lib/mysql/connector/locales/eng/client_error.py @@ -1,32 +1,27 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. -# +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . +# # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. -# +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # This file was auto-generated. _GENERATED_ON = '2018-03-16' diff --git a/lib/mysql/connector/network.py b/lib/mysql/connector/network.py index 2be04cc3..ad853ba5 100644 --- a/lib/mysql/connector/network.py +++ b/lib/mysql/connector/network.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Module implementing low-level socket communication with MySQL servers. """ diff --git a/lib/mysql/connector/optionfiles.py b/lib/mysql/connector/optionfiles.py index 96b78562..4c711f55 100644 --- a/lib/mysql/connector/optionfiles.py +++ b/lib/mysql/connector/optionfiles.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implements parser to parse MySQL option files. """ diff --git a/lib/mysql/connector/pooling.py b/lib/mysql/connector/pooling.py index b1201c59..b6711202 100644 --- a/lib/mysql/connector/pooling.py +++ b/lib/mysql/connector/pooling.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implementing pooling of connections to MySQL servers. """ diff --git a/lib/mysql/connector/protocol.py b/lib/mysql/connector/protocol.py index e712c4ff..7daf93bd 100644 --- a/lib/mysql/connector/protocol.py +++ b/lib/mysql/connector/protocol.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Implements the MySQL Client/Server protocol """ diff --git a/lib/mysql/connector/utils.py b/lib/mysql/connector/utils.py index 163df2c0..af743a7b 100644 --- a/lib/mysql/connector/utils.py +++ b/lib/mysql/connector/utils.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Utilities """ diff --git a/lib/mysql/connector/version.py b/lib/mysql/connector/version.py index 017dca3c..387cb513 100644 --- a/lib/mysql/connector/version.py +++ b/lib/mysql/connector/version.py @@ -1,31 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """MySQL Connector/Python version information The file version.py gets installed and is available after installation diff --git a/setup.py b/setup.py index bb067520..d83022b8 100644 --- a/setup.py +++ b/setup.py @@ -1,32 +1,27 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/setupinfo.py b/setupinfo.py index 59338016..cb31f889 100644 --- a/setupinfo.py +++ b/setupinfo.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA from distutils.core import Extension import os diff --git a/src/exceptions.c b/src/exceptions.c index 37feef5c..2009cff8 100644 --- a/src/exceptions.c +++ b/src/exceptions.c @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/src/force_cpp_linkage.cc b/src/force_cpp_linkage.cc index fa3891bd..e40e9c3d 100644 --- a/src/force_cpp_linkage.cc +++ b/src/force_cpp_linkage.cc @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* diff --git a/src/include/catch23.h b/src/include/catch23.h index c14607c8..505a4e46 100644 --- a/src/include/catch23.h +++ b/src/include/catch23.h @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_CATCH23_H @@ -93,4 +88,4 @@ #define PyBytesFromFormat PyString_FromFormat #endif -#endif +#endif \ No newline at end of file diff --git a/src/include/exceptions.h b/src/include/exceptions.h index 91f46f46..c2391299 100644 --- a/src/include/exceptions.h +++ b/src/include/exceptions.h @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_EXCEPTIONS_H diff --git a/src/include/mysql_capi.h b/src/include/mysql_capi.h index 1ab90136..d3c071db 100644 --- a/src/include/mysql_capi.h +++ b/src/include/mysql_capi.h @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_MYSQL_CAPI_H diff --git a/src/include/mysql_capi_conversion.h b/src/include/mysql_capi_conversion.h index 5b05f26b..c36ece3c 100644 --- a/src/include/mysql_capi_conversion.h +++ b/src/include/mysql_capi_conversion.h @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_MYSQL_CAPI_CONVERSION_H @@ -74,4 +69,4 @@ mytopy_string(const char *data, const unsigned long length, const unsigned long flags, const char *charset, unsigned int use_unicode); -#endif /* MYCONNPY_MYSQL_CAPI_CONVERSION_H */ +#endif /* MYCONNPY_MYSQL_CAPI_CONVERSION_H */ \ No newline at end of file diff --git a/src/include/mysql_connector.h b/src/include/mysql_connector.h index a1d35526..063223b4 100644 --- a/src/include/mysql_connector.h +++ b/src/include/mysql_connector.h @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef MYCONNPY_MYSQL_CONNECTOR_H diff --git a/src/mysql_capi.c b/src/mysql_capi.c index d41bc7e6..6d60d0eb 100644 --- a/src/mysql_capi.c +++ b/src/mysql_capi.c @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/src/mysql_capi_conversion.c b/src/mysql_capi_conversion.c index 384b7b13..56178ebd 100644 --- a/src/mysql_capi_conversion.c +++ b/src/mysql_capi_conversion.c @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/src/mysql_connector.c b/src/mysql_connector.c index 327c72d3..8f991251 100644 --- a/src/mysql_connector.c +++ b/src/mysql_connector.c @@ -1,31 +1,26 @@ /* -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/support/django/run_django_tests.py b/support/django/run_django_tests.py index 74247a5d..67e5eb49 100755 --- a/support/django/run_django_tests.py +++ b/support/django/run_django_tests.py @@ -1,32 +1,27 @@ #!/usr/bin/env python -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Script for executing Django unit tests diff --git a/support/django/test_mysqlconnector_settings.py b/support/django/test_mysqlconnector_settings.py index e81ed740..0628cfc3 100644 --- a/support/django/test_mysqlconnector_settings.py +++ b/support/django/test_mysqlconnector_settings.py @@ -1,30 +1,26 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA DATABASES = { 'default': { diff --git a/tests/__init__.py b/tests/__init__.py index 88bea727..4788e908 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests """ diff --git a/tests/mysqld.py b/tests/mysqld.py index 69a75417..1495f034 100644 --- a/tests/mysqld.py +++ b/tests/mysqld.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Module for managing and running a MySQL server""" diff --git a/tests/py26.py b/tests/py26.py index 5638a878..ec6a22c3 100644 --- a/tests/py26.py +++ b/tests/py26.py @@ -1,31 +1,27 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + from functools import wraps import types diff --git a/tests/test_abstracts.py b/tests/test_abstracts.py index b34bdce7..7e4f0d28 100644 --- a/tests/test_abstracts.py +++ b/tests/test_abstracts.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.abstracts """ diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 9c2a6dd1..22803ac2 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Test module for authentication diff --git a/tests/test_bugs.py b/tests/test_bugs.py index 6f4f0d74..d963b53f 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Test module for bugs diff --git a/tests/test_connection.py b/tests/test_connection.py index 0fb80633..7ee0db4d 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,30 +1,25 @@ +# MySQL Connector/Python - MySQL driver written in Python. # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.connection """ diff --git a/tests/test_constants.py b/tests/test_constants.py index 8732c902..717751e7 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.constants """ diff --git a/tests/test_conversion.py b/tests/test_conversion.py index c3e5ad47..d18171f9 100644 --- a/tests/test_conversion.py +++ b/tests/test_conversion.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.conversion """ diff --git a/tests/test_cursor.py b/tests/test_cursor.py index d80b2f1b..a161fd6a 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -1,31 +1,25 @@ # -*- coding: utf-8 -*- # Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Incur., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Test module for bugs diff --git a/tests/test_django.py b/tests/test_django.py index 3a221c17..917ed3ba 100644 --- a/tests/test_django.py +++ b/tests/test_django.py @@ -1,30 +1,25 @@ -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.django """ diff --git a/tests/test_errorcode.py b/tests/test_errorcode.py index 7fd14cb0..607ad21d 100644 --- a/tests/test_errorcode.py +++ b/tests/test_errorcode.py @@ -1,30 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.errorcode """ diff --git a/tests/test_errors.py b/tests/test_errors.py index 0a5c9e91..bac81d73 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -1,30 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.errors """ diff --git a/tests/test_examples.py b/tests/test_examples.py index 2aad2f0a..4f7d516f 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,31 +1,26 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for examples """ @@ -227,4 +222,4 @@ def tearDown(self): self.cnx.close() def test_prepared_statements(self): - pass + pass \ No newline at end of file diff --git a/tests/test_fabric.py b/tests/test_fabric.py index c006c4f7..295ca765 100644 --- a/tests/test_fabric.py +++ b/tests/test_fabric.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.fabric """ diff --git a/tests/test_locales.py b/tests/test_locales.py index 3732e5e7..e6e1b672 100644 --- a/tests/test_locales.py +++ b/tests/test_locales.py @@ -1,30 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.locales """ diff --git a/tests/test_mysql_datatypes.py b/tests/test_mysql_datatypes.py index d43c2d3c..7c4f5797 100644 --- a/tests/test_mysql_datatypes.py +++ b/tests/test_mysql_datatypes.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for MySQL data types """ diff --git a/tests/test_network.py b/tests/test_network.py index 5340ff54..f0d20657 100644 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -1,30 +1,25 @@ -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.network """ diff --git a/tests/test_optionfiles.py b/tests/test_optionfiles.py index 41d003e3..f1d8450e 100644 --- a/tests/test_optionfiles.py +++ b/tests/test_optionfiles.py @@ -1,30 +1,25 @@ -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging import os diff --git a/tests/test_pep249.py b/tests/test_pep249.py index 0a618b22..fd8917c5 100644 --- a/tests/test_pep249.py +++ b/tests/test_pep249.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for PEP-249 diff --git a/tests/test_pooling.py b/tests/test_pooling.py index 66487a8b..cc88c940 100644 --- a/tests/test_pooling.py +++ b/tests/test_pooling.py @@ -1,31 +1,25 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.pooling """ diff --git a/tests/test_protocol.py b/tests/test_protocol.py index 150fc149..269da05c 100644 --- a/tests/test_protocol.py +++ b/tests/test_protocol.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.protocol """ diff --git a/tests/test_setup.py b/tests/test_setup.py index f040c2a9..9be8ffab 100644 --- a/tests/test_setup.py +++ b/tests/test_setup.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unit tests for the setup script of Connector/Python """ diff --git a/tests/test_style.py b/tests/test_style.py index 76a1c651..51b621ce 100644 --- a/tests/test_style.py +++ b/tests/test_style.py @@ -1,30 +1,25 @@ -# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests code analysis diff --git a/tests/test_utils.py b/tests/test_utils.py index b07d56d8..150bb799 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,30 +1,25 @@ -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Unittests for mysql.connector.utils """ diff --git a/unittests.py b/unittests.py index 6c721805..e6ae1681 100644 --- a/unittests.py +++ b/unittests.py @@ -1,32 +1,27 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. +# MySQL Connector/Python - MySQL driver written in Python. +# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. + +# MySQL Connector/Python is licensed under the terms of the GPLv2 +# , like most +# MySQL Connectors. There are special exceptions to the terms and +# conditions of the GPLv2 as it is applied to this software, see the +# FOSS License Exception +# . # # This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, as -# published by the Free Software Foundation. +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. # -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an -# additional permission to link the program and your derivative works -# with the separately licensed software that they have included with -# MySQL. -# -# Without limiting anything contained in the foregoing, this file, -# which is part of MySQL Connector/Python, is also subject to the -# Universal FOSS Exception, version 1.0, a copy of which can be found at -# http://oss.oracle.com/licenses/universal-foss-exception. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License, version 2.0, for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """Script for running unittests From 7945d61d4cbfcba376375214457527b9d7201463 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 28 Jun 2018 12:34:39 +0100 Subject: [PATCH 83/95] Remove OpenSSL linkage in the C extension --- cpyint | 2 +- lib/cpy_distutils.py | 79 +------------------------------------------- 2 files changed, 2 insertions(+), 79 deletions(-) diff --git a/cpyint b/cpyint index 069010a3..83d14a44 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 069010a344f13dcc3cccdeb6488bacae88949bf3 +Subproject commit 83d14a44861c288ec772c9d0f3bc1e37e57dae9f diff --git a/lib/cpy_distutils.py b/lib/cpy_distutils.py index bc87b8f3..463c304a 100644 --- a/lib/cpy_distutils.py +++ b/lib/cpy_distutils.py @@ -1,5 +1,5 @@ # MySQL Connector/Python - MySQL driver written in Python. -# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. # MySQL Connector/Python is licensed under the terms of the GPLv2 # , like most @@ -295,57 +295,6 @@ def initialize_options(self): self.extra_link_args = None self.with_mysql_capi = None - def _get_posix_openssl_libs(self): - openssl_libs = [] - try: - openssl_libs_path = os.path.join(self.with_mysql_capi, "lib") - openssl_libs.extend([ - os.path.basename(glob( - os.path.join(openssl_libs_path, "libssl.*.*.*"))[0]), - os.path.basename(glob( - os.path.join(openssl_libs_path, "libcrypto.*.*.*"))[0]) - ]) - except IndexError: - log.error("Couldn't find OpenSSL libraries in libmysqlclient") - return openssl_libs - - def _copy_vendor_libraries(self): - if not self.with_mysql_capi or self.distribution.data_files: - return - - data_files = [] - vendor_libs = [] - - if os.name == "nt": - mysql_capi = os.path.join(self.with_mysql_capi, "bin") - vendor_libs.append((mysql_capi, ["ssleay32.dll", "libeay32.dll"])) - vendor_folder = "" - # Bundle libmysql.dll - src = os.path.join(self.with_mysql_capi, "lib", "libmysql.dll") - dst = os.getcwd() - log.info("copying {0} -> {1}".format(src, dst)) - shutil.copy(src, dst) - data_files.append("libmysql.dll") - else: - mysql_capi = os.path.join(self.with_mysql_capi, "lib") - vendor_libs.append((mysql_capi, self._get_posix_openssl_libs())) - vendor_folder = "mysql-vendor" - - if vendor_folder: - mkpath(os.path.join(os.getcwd(), vendor_folder)) - - # Copy vendor libraries to 'mysql-vendor' folder - log.info("Copying vendor libraries") - for src_folder, files in vendor_libs: - for filename in files: - data_files.append(os.path.join(vendor_folder, filename)) - src = os.path.join(src_folder, filename) - dst = os.path.join(os.getcwd(), vendor_folder) - log.info("copying {0} -> {1}".format(src, dst)) - shutil.copy(src, dst) - # Add data_files to distribution - self.distribution.data_files = [(vendor_folder, data_files)] - def _finalize_connector_c(self, connc_loc): """Finalize the --with-connector-c command line argument """ @@ -469,8 +418,6 @@ def finalize_options(self): ('extra_link_args', 'extra_link_args'), ('with_mysql_capi', 'with_mysql_capi')) - self._copy_vendor_libraries() - build_ext.finalize_options(self) print("# Python architecture: {0}".format(py_arch)) @@ -524,8 +471,6 @@ def fix_compiler(self): # Add extra link args if self.extra_link_args and ext.name == "_mysql_connector": extra_link_args = self.extra_link_args.split() - if platform.system() == "Linux": - extra_link_args += ["-Wl,-rpath,$ORIGIN/mysql-vendor"] ext.extra_link_args.extend(extra_link_args) # Add system headers for sysheader in sysheaders: @@ -558,26 +503,6 @@ def run(self): self.fix_compiler() self.real_build_extensions() - if platform.system() == "Darwin": - libssl, libcrypto = self._get_posix_openssl_libs() - cmd_libssl = [ - "install_name_tool", "-change", libssl, - "@loader_path/mysql-vendor/{0}".format(libssl), - build_ext.get_ext_fullpath(self, "_mysql_connector") - ] - log.info("Executing: {0}".format(" ".join(cmd_libssl))) - proc = Popen(cmd_libssl, stdout=PIPE, universal_newlines=True) - stdout, _ = proc.communicate() - - cmd_libcrypto = [ - "install_name_tool", "-change", libcrypto, - "@loader_path/mysql-vendor/{0}".format(libcrypto), - build_ext.get_ext_fullpath(self, "_mysql_connector") - ] - log.info("Executing: {0}".format(" ".join(cmd_libcrypto))) - proc = Popen(cmd_libcrypto, stdout=PIPE, universal_newlines=True) - stdout, _ = proc.communicate() - class BuildExtStatic(BuildExtDynamic): @@ -586,8 +511,6 @@ class BuildExtStatic(BuildExtDynamic): user_options = build_ext.user_options + CEXT_OPTIONS def finalize_options(self): - self._copy_vendor_libraries() - install_obj = self.distribution.get_command_obj('install') install_obj.with_mysql_capi = self.with_mysql_capi install_obj.extra_compile_args = self.extra_compile_args From baac67564283137468317d7f7ce448314076db8e Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Thu, 28 Jun 2018 15:35:27 +0100 Subject: [PATCH 84/95] Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 83d14a44..09d3615a 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 83d14a44861c288ec772c9d0f3bc1e37e57dae9f +Subproject commit 09d3615aff1b80bfd38adba69abf2406052951c4 From f5d8110ea7c9e99dc30efa3ae7d0e988750232c1 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 2 Jul 2018 16:08:07 +0100 Subject: [PATCH 85/95] Remove the reverted worklogs from CHANGES.txt --- CHANGES.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index e36275aa..28f50747 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -12,8 +12,6 @@ v2.1.8 ====== - WL#11680: Add caching_sha2_password authentication plugin -- WL#11665: Allow OpenSSL linkage in the C extension -- WL#11643: Update copyright source headers and license text - BUG#27945883: Fixes for failing unittest with MySQL latest versions - BUG#27371245: Connection fails on unsupported default's auth_plugin - BUG#26484601: Unable to connect to a server using other than TLSv1 From 89d2b4de3fa710595a80c647bbe732b9614db699 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 3 Jul 2018 16:44:33 +0100 Subject: [PATCH 86/95] BUG28025111: Update copyright year in README.txt and LICENSE.txt --- README.txt | 4 ++-- cpyint | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.txt b/README.txt index 46cce18a..eb5723e6 100644 --- a/README.txt +++ b/README.txt @@ -3,7 +3,7 @@ MySQL Connector/Python 2.1 ========================== MySQL Connector/Python -Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. @@ -28,7 +28,7 @@ doubt, this particular copy of the software is released under the version 2 of the GNU General Public License. MySQL Connector/Python is brought to you by Oracle. -Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. License information can be found in the LICENSE.txt file. diff --git a/cpyint b/cpyint index 09d3615a..1477732c 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 09d3615aff1b80bfd38adba69abf2406052951c4 +Subproject commit 1477732cab15e5ac062a9114a8b7062cede35d20 From cfe941d9b49364dca9674e8238672a422226e24c Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Tue, 7 Aug 2018 13:13:12 +0200 Subject: [PATCH 87/95] Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 1477732c..b8758bf0 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 1477732cab15e5ac062a9114a8b7062cede35d20 +Subproject commit b8758bf05c06a585a695942263b1fbeac87a165c From 7f8e1193f1f2cd0ec30155c8c77b60984378b796 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Tue, 7 Aug 2018 13:35:50 +0200 Subject: [PATCH 88/95] Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index b8758bf0..4fd8f1cc 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit b8758bf05c06a585a695942263b1fbeac87a165c +Subproject commit 4fd8f1cce596cb0f4a9573ed3bd94864475745c5 From 7f538ca450b593e9226745459fbd8c82f0385da1 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Tue, 7 Aug 2018 13:54:33 +0200 Subject: [PATCH 89/95] Bug#28464866 C/PYTHON 2.1.8: 32 BIT MSI INSTALLATION OF C/PYT 3.5 AND 3.6 IS FAILING Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 1477732c..4fd8f1cc 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 1477732cab15e5ac062a9114a8b7062cede35d20 +Subproject commit 4fd8f1cce596cb0f4a9573ed3bd94864475745c5 From 1302a37f64ee4923a973d1853fd7b96f5a27b5f2 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 8 Aug 2018 11:27:31 +0200 Subject: [PATCH 90/95] Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 4fd8f1cc..8b6724f8 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 4fd8f1cce596cb0f4a9573ed3bd94864475745c5 +Subproject commit 8b6724f8bc706cbbe7a72d0166e4d46fb9b3695c From a3d3351f18e51cd39c7ffca2428f7b84a01a4036 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 8 Aug 2018 12:01:53 +0200 Subject: [PATCH 91/95] Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 8b6724f8..bfcce162 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 8b6724f8bc706cbbe7a72d0166e4d46fb9b3695c +Subproject commit bfcce162b774a7ae30acebbaf7b2d12dcbc1c316 From 0240b43785357df33f023fea33f053b2d00bd694 Mon Sep 17 00:00:00 2001 From: Piotr Obrzut Date: Wed, 8 Aug 2018 12:24:29 +0200 Subject: [PATCH 92/95] Update CPYINT branch --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index 4fd8f1cc..bfcce162 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit 4fd8f1cce596cb0f4a9573ed3bd94864475745c5 +Subproject commit bfcce162b774a7ae30acebbaf7b2d12dcbc1c316 From 83d6cb28541eeb108b603f1a2c4f847a8e7b3c98 Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Mon, 13 Aug 2018 14:14:44 +0100 Subject: [PATCH 93/95] BUG28463248: Fix Debian packages incorrect description --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index bfcce162..b9161e71 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit bfcce162b774a7ae30acebbaf7b2d12dcbc1c316 +Subproject commit b9161e7169b3977f3b8222b61174cc41b291767e From 9dd3f2065e13d88d03ac584b4a55201ead06c7ea Mon Sep 17 00:00:00 2001 From: Nuno Mariz Date: Tue, 14 Aug 2018 11:26:43 +0100 Subject: [PATCH 94/95] BUG28463248: Add 'pure' in the GPL Debian packages description --- cpyint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpyint b/cpyint index b9161e71..f77b8360 160000 --- a/cpyint +++ b/cpyint @@ -1 +1 @@ -Subproject commit b9161e7169b3977f3b8222b61174cc41b291767e +Subproject commit f77b83600d2df418cae7da3b728a4a930419d02e From 641964ee05b65b27f0b9f571e729e87bc8260e46 Mon Sep 17 00:00:00 2001 From: Israel Gomez Date: Thu, 16 Aug 2018 11:22:42 -0500 Subject: [PATCH 95/95] BUG28443941: differences on pure and c-ext in cmd_change_user() The invocation of the method cmd_change_user() using the c extension does not return any status information while the pure python implementation it does. This patch adds the missing status results for the cmd_change_user(), in addition this patchs renames the server_status atribute name to status_flag from the status information returned from fetch_eof_status() to be consistent with the name. --- lib/mysql/connector/connection_cext.py | 3 +- tests/cext/test_cext_connection.py | 2 +- tests/test_bugs.py | 131 +++++++++++++++++++++++++ 3 files changed, 134 insertions(+), 2 deletions(-) diff --git a/lib/mysql/connector/connection_cext.py b/lib/mysql/connector/connection_cext.py index 04ff7fdf..734af9bd 100644 --- a/lib/mysql/connector/connection_cext.py +++ b/lib/mysql/connector/connection_cext.py @@ -355,7 +355,7 @@ def fetch_eof_status(self): 'field_count': self._cmysql.st_field_count(), 'insert_id': self._cmysql.insert_id(), 'affected_rows': self._cmysql.affected_rows(), - 'server_status': self._server_status, + 'status_flag': self._server_status, } return None @@ -534,6 +534,7 @@ def cmd_change_user(self, username='', password='', database='', self._charset_id = charset self._post_connection() + return self.fetch_eof_status() def cmd_refresh(self, options): """Send the Refresh command to the MySQL server""" diff --git a/tests/cext/test_cext_connection.py b/tests/cext/test_cext_connection.py index c6e389e9..d0d3baaa 100644 --- a/tests/cext/test_cext_connection.py +++ b/tests/cext/test_cext_connection.py @@ -118,6 +118,6 @@ def test_cmd_query(self): info = self.cnx.cmd_query("SET @a = 1") exp = { 'warning_count': 0, 'insert_id': 0, 'affected_rows': 0, - 'server_status': 0, 'field_count': 0 + 'status_flag': 0, 'field_count': 0 } self.assertEqual(exp, info) diff --git a/tests/test_bugs.py b/tests/test_bugs.py index d963b53f..32e500ec 100644 --- a/tests/test_bugs.py +++ b/tests/test_bugs.py @@ -4861,6 +4861,137 @@ def test_retrieve_mysql_json_time_types(self): mysql_type, expected_type) +unittest.skipIf(tests.MYSQL_VERSION < (5, 6, 7), + "BugOra16217765 not tested with MySQL version < 5.6.7") +@unittest.skipIf(not CMySQLConnection, ERR_NO_CEXT) +class Bug28443941(tests.MySQLConnectorTests): + """BUG#28443941: DIFFERENCE PURE AND C-EXT ON CMD_CHANGE_USER() + """ + + users = { + 'sha256user': { + 'username': 'sha256user', + 'password': 'sha256P@ss', + 'auth_plugin': 'sha256_password', + }, + 'nativeuser': { + 'username': 'nativeuser', + 'password': 'nativeP@ss', + 'auth_plugin': 'mysql_native_password', + } + } + + def _create_user(self, cnx, user, password, host, database, + plugin): + + self._drop_user(user, host) + create_user = ("CREATE USER '{user}'@'{host}' " + "IDENTIFIED WITH {plugin}") + cnx.cmd_query(create_user.format(user=user, host=host, plugin=plugin)) + + if tests.MYSQL_VERSION[0:3] < (8, 0, 5): + if plugin == 'sha256_password': + cnx.cmd_query("SET old_passwords = 2") + else: + cnx.cmd_query("SET old_passwords = 0") + + if tests.MYSQL_VERSION < (5, 7, 5): + passwd = ("SET PASSWORD FOR '{user}'@'{host}' = " + "PASSWORD('{password}')").format(user=user, host=host, + password=password) + else: + passwd = ("ALTER USER '{user}'@'{host}' IDENTIFIED BY " + "'{password}'").format(user=user, host=host, + password=password) + cnx.cmd_query(passwd) + + grant = "GRANT ALL ON {database}.* TO '{user}'@'{host}'" + cnx.cmd_query(grant.format(database=database, user=user, host=host)) + + def _drop_user(self, user, host): + try: + self.admin_cnx.cmd_query("DROP USER '{user}'@'{host}'".format( + host=host, + user=user)) + except errors.DatabaseError: + # It's OK when drop fails + pass + + def setUp(self): + config = tests.get_mysql_config() + self.admin_cnx = connection.MySQLConnection(**config) + for _, user in self.users.items(): + self._create_user(self.admin_cnx, user['username'], + user['password'], + config['host'], + config['database'], + plugin=user['auth_plugin']) + + def tearDown(self): + config = tests.get_mysql_config() + for _, user in self.users.items(): + self._drop_user(user['username'], config['host']) + + def test_cmd_change_user(self): + config = tests.get_mysql_config() + config['unix_socket'] = None + + user = self.users['sha256user'] + config['user'] = user['username'] + config['password'] = user['password'] + config['client_flags'] = [constants.ClientFlag.PLUGIN_AUTH] + config['auth_plugin'] = user['auth_plugin'] + + try: + cnx = connection.MySQLConnection(**config) + except Exception as exc: + import traceback + traceback.print_exc() + self.fail(self.errmsg.format(config['auth_plugin'], exc)) + + user2 = self.users['nativeuser'] + config2 = {'user': user2['username'], + 'password': user2['password'], + 'client_flags': [constants.ClientFlag.PLUGIN_AUTH], + 'auth_plugin': user2['auth_plugin']} + try: + status_p = cnx.cmd_change_user(config2['user'], + config2['password']) + except: + self.fail("Changing user failed with pure Python connector") + + try: + cnx = CMySQLConnection(**config) + except Exception as exc: + import traceback + traceback.print_exc() + self.fail(self.errmsg.format(config['auth_plugin'], exc)) + + try: + status_c = cnx.cmd_change_user(config2['user'], + config2['password']) + except: + self.fail("cmd_change_user did not return any result.") + + if status_c is None: + self.fail("Changing user failed with c-extension") + + # Server status can be different, therefore we only check that exists. + for key in status_p.keys(): + try: + value = status_c.pop(key) + if key is not 'status_flag': + self.assertEqual(status_p[key], value, "status {} not " + "equal: {} differs from {}" + "".format(key, value, status_p[key])) + except KeyError as err: + self.fail("The cmd_change_user from c-ext is missing an" + "element: {}".format(err)) + if status_c: + self.fail("The cmd_change_user from c-ext has additional elements:" + " {}".format(status_c)) + + class BugOra27364914(tests.MySQLConnectorTests): """BUG#27364914: CURSOR PREPARED STATEMENTS DO NOT CONVERT STRINGS """