~mysql/myconnpy/1.0

171.1.1 by Geert Vanderkelen
Adding release notes for 0.1.2-devel
1
MySQL Connector/Python - Release Notes / ChangeLog
372 by Geert Vanderkelen
BUG#16209119: Fix IPv6 support for older MS Windows version
2
Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
315 by Geert Vanderkelen
WL#6250: Updating license notice
3
389 by Geert Vanderkelen
Release 1.0.10
4
1.0.10 (2013-05-02)
382 by Geert Vanderkelen
BUG#16400735: Fixed verification of server certificates
5
-----------------------------------------------------------------------
386 by Geert Vanderkelen
BUG#16234441: Fixed shutdown using different shutdown types
6
- Fixed MySQLConnection.cmd_shutdown() method to accept shutdown types. A
7
  new constants class ShutdownType was added. (BUG#16234441)
8
384 by Geert Vanderkelen
BUG#16369511: Added support for LOAD DATA LOCAL INFILE
9
- Added support for LOAD DATA LOCAL INFILE. (BUG#16369511)
10
383 by Geert Vanderkelen
BUG#16430013: Removed non-GPL docs from GPL packages
11
- Removed non-GPL documentation from GPL packages. Added README_DOCS.txt
12
  with URL of the online manual and downloads. (BUG#16430013)
13
382 by Geert Vanderkelen
BUG#16400735: Fixed verification of server certificates
14
- Fixed SSL certificate checking and error reporting. We introduced
15
  a new connection argument ssl_verify_cert. When set to True,
16
  it will verify the server certificate (using ssl.CERT_REQUIRED).
17
  (BUG#16400735)
18
381 by Geert Vanderkelen
Release 1.0.9
19
1.0.9 (2013-02-21)
369 by Geert Vanderkelen
Release 1.0.8
20
-----------------------------------------------------------------------
376 by Geert Vanderkelen
BUG#16236136: version.py is now copied when building
21
- Fixed the 'build' DistUtils command to copy version.py. This makes
22
  sure that the version of Connector/Python inside the
23
  build-directory is fully functional. (BUG#16236136)
24
375 by Geert Vanderkelen
BUG#16217667: Setting SSL client flag with SSL options
25
- Fixed connecting using SSL: we now set the ClientFlag.SSL
26
  automatically whenever SSL arguments are used when setting
27
  up the connection. (BUG#16217667)
28
374 by Geert Vanderkelen
BUG#16217743: Fixed passing string parameters to stored routines
29
- Fixed passing string parameters to stored routines. (BUG#16217743)
30
373 by Geert Vanderkelen
BUG#16249347: Fixed mail address of FSF in copyright notice
31
- Fixed mail address of FSF in copyright notice. (BUG#16249347)
32
372 by Geert Vanderkelen
BUG#16209119: Fix IPv6 support for older MS Windows version
33
- Fixed IPv6 for older MS Windows versions. We now use
34
  socket.getaddrinfo() instead of inet_pton() to check whether we are
35
  connecting using IPv4 or IPv6. A new connection option 'force_ipv6'
36
  has been introduced. When set to True, IPv6 will be used when an
37
  address resolves to both IPv4 and IPv6. (BUG#16209119)
369 by Geert Vanderkelen
Release 1.0.8
38
39
1.0.8 (2012-12-17)
357 by Geert Vanderkelen
BUG#14754894: Fixed executemany() to support the pyformat parameter style
40
-----------------------------------------------------------------------
368 by Geert Vanderkelen
BUG#15915243: Fixed ping() method to only reconnect when needed
41
- Fixed MySQLConnection.ping() so it only reconnects when the reconnect
42
  argument is set to True. (BUG#15915243)
43
367 by Geert Vanderkelen
BUG#15916486: Fixed storing results after calling stored procedures
44
- Fixed storing multiple results after calling stored procedures which
45
  are using arguments. (BUG#15916486)
46
47
- Fixed support for connecting to MySQL using IPv6 addresses. (BUG#15876886)
48
364 by Geert Vanderkelen
BUG#15836979: Fixed handling of MySQL errors when doing handshake
49
- Fixed handling MySQL errors when doing handshake. (BUG#15836979)
50
365 by Geert Vanderkelen
BUG#15927825: Fixed remote connection using IPv6
51
- Fixed support for connecting to MySQL using IPv6 addresses. (BUG#15876886,
52
  BUG#15927825)
363 by Geert Vanderkelen
BUG#15876886: Fixed support for connecting to MySQL using IPv6 addresses
53
366 by Geert Vanderkelen
BUG#14829471: Fix reading incomplete MySQL packets headers
54
- Fixed reading the header of MySQL packets. Previously, we were reading
55
  the MySQL packet headers as 4 (or 7) bytes long buffers from the socket.
56
  When we did have the correct length, we would immediately raise an exception.
369 by Geert Vanderkelen
Release 1.0.8
57
  We now keep reading data from the socket until we got the full header
366 by Geert Vanderkelen
BUG#14829471: Fix reading incomplete MySQL packets headers
58
  or bail out on errors. (BUG#14829471)
59
362 by Geert Vanderkelen
BUG#13808727: Fixed error message when TCP/IP port is not an integer
60
- Fixed the error message when the TCP/IP port number is not a valid integer.
61
  Strings are first converted to integer and raise an error with a proper
62
  error when this fails. (BUG#13808727)
63
360 by Geert Vanderkelen
BUG#14843456: Fixed authenticating using unicode in usernames and passwords
64
- Fixed authenticating for Python v2 using usernames and/or passwords which
369 by Geert Vanderkelen
Release 1.0.8
65
  contain Unicode characters using Python v2. (BUG#14843456)
360 by Geert Vanderkelen
BUG#14843456: Fixed authenticating using unicode in usernames and passwords
66
358 by Geert Vanderkelen
BUG#14802017: Fixed reporting of socket errors
67
- Fixed reporting of socket errors. (BUG#14802017)
68
357 by Geert Vanderkelen
BUG#14754894: Fixed executemany() to support the pyformat parameter style
69
- Fixed executemany() to support the pyformat parameter style. (BUG#14754894)
70
    * The regular expression parsing the INSERT statement did not work when
71
      pyformat markers where used, that is, '%(c1)s' for example. This is now
72
      fixed so both ANSI C printf and Python extended format codes can be
73
      used by MySQLCursor.executemany().
74
354 by Geert Vanderkelen
Release 1.0.7
75
1.0.7 (2012-08-19)
349 by Geert Vanderkelen
Release 1.0.6-beta
76
-----------------------------------------------------------------------
352 by Geert Vanderkelen
BUG#14548043: Fixed formatting of client errors
77
- Fixed formatting of client errors changing numeric to string
78
  placeholders. (BUG#14548043)
79
    * Client and server errors have been regenerated using latest
80
      development release of MySQL v5.6.6.
349 by Geert Vanderkelen
Release 1.0.6-beta
81
82
1.0.6-beta (2012-08-28)
340 by Geert Vanderkelen
Release 1.0.5-beta
83
-----------------------------------------------------------------------
348 by Geert Vanderkelen
BUG#14524942: Fixed Python v3 code so it works with Python v3.3
84
- Fixed Python v3 code so it works with Python v3.3. (BUG#14524942)
85
347 by Geert Vanderkelen
BUG#14517262: Fixed MySQLCursorRaw.fetchall() to not raise with results
86
- Fixed MySQLCursorRaw.fetchall() to not raise when results are available.
87
  This was only a problem in the Python v3 code. (BUG#14517262, BUG#66465)
88
346 by Geert Vanderkelen
WL#6450: Changed Name/version to align with other MySQL projects
89
- Changed name and version of distributions to align with other MySQL
90
  projects (WL#6450)
91
    * The version now includes the suffix 'b' for beta and 'a' for alpha
92
      followed by a number. This version is used in the source and built
93
      distributions. GA versions will have no suffix.
94
    * The RPM spec files have been updated to create packages which names
95
      are aligned with RPMs from other MySQL projects.
96
345 by Geert Vanderkelen
BUG#14483142: Fixed installation of version.py on OS X
97
- Fixed installation of version.py on OS X. (BUG#14483142)
98
    * version.py is now correctly installed on OS X in the mysql.connector
99
      package. Previously it was installed through data_files, and version.py
100
      ended up in the system wide package location of Python from where it
101
      could not be imported.
102
    * data_files is not used any longer in setup.py and is removed. Extra
103
      files like version.py are now copied in the custom Distutils
104
      commands.
105
342.1.1 by Geert Vanderkelen
BUG#14402737: Fixed SSL unit testing for source distributions
106
- Fixed SSL unit testing for source distributions. (BUG#14402737)
107
    * The SSL keys and certificates were missing and have been added to
108
      the source distribution. Now SSL testing works properly.
109
    * Additionally for the Windows platform, forward slashes had to
110
      be added to the option file creation so the MySQL server can
111
      pickup the needed SSL files.
112
343 by Geert Vanderkelen
BUG#14487502: Setting connection time out higher for unit tests
113
- Timeout for unit tests has been set to 10 seconds. Test cases can
114
  individually adjust it to be higher or lower. (BUG#14487502)
115
342 by Geert Vanderkelen
BUG#14460680: Fixed test case using YEAR(2) for MySQL v5.6.6 and later
116
- Fixed test cases in test_mysql_database.py which failed when using
117
  using YEAR(2) with MySQL v5.6.6 and greater. (BUG#14460680)
118
341 by Geert Vanderkelen
WL#6412: Mapping MySQL errors to Python exceptions based on the SQLState
119
- Changed how MySQL server errors are mapped to Python exceptions. We now
120
  use the SQLState (when available) to raise a better error. (WL#6412)
121
    * Incompatibility: some server errors are now raised with a different
122
      exception.
123
    * It is possible to override how errors are raised using the
124
      mysql.connector.custom_error_exception() function, defined in
125
      the mysql.connector.errors module. This can be useful for certain
126
      frameworks to align with other database drivers.
340 by Geert Vanderkelen
Release 1.0.5-beta
127
128
1.0.5-beta (2012-07-17)
336 by Geert Vanderkelen
Release 1.0.4-alpha
129
-----------------------------------------------------------------------
338 by Geert Vanderkelen
WL#6411: Added SQL Modes as constants, making it easier to use them
130
- Added SQL Modes as constants, making it easier to use them (WL#6411)
131
    * Setting the SQL Modes meant that developers had to make sure the
132
      string passed to MySQL was correctly formatted and contains the correct
133
      modes. To make it easier, a new class constants.SQLMode containing all
134
      the SQL Modes was added: for example, constants.SQLMode.TRADITIONAL will
135
      return the string 'TRADITIONAL'.
341 by Geert Vanderkelen
WL#6412: Mapping MySQL errors to Python exceptions based on the SQLState
136
    * Additionally, MySQLConnection.sql_mode property now accepts a sequence of
338 by Geert Vanderkelen
WL#6411: Added SQL Modes as constants, making it easier to use them
137
      SQL Modes. For example, to set 2 SQL Modes, you can do the following
138
      cnx.sql_mode = [SQLMode.REAL_AS_FLOAT, SQLMode.NO_ZERO_DATE]
139
337 by Geert Vanderkelen
WL#6351: Added descriptive error codes for both client and server errors
140
- Added descriptive error codes for both client and server errors (WL#6351)
141
    * The errorcode module contains client and server error codes which can
142
      be used instead of the error numbers. For example,
143
      errorcode.CR_CONNECTION_ERROR is 2002.
144
    * A new locales sub-package has been created in mysql.connector. This will
145
      provided localized content. The first support language is the default
146
      English and contains the client error messages: locales.eng.client_error.
147
      To retrieve a client error based on the error number or code (name) you
148
      can use the get_client_error() function importing it from locales:
149
      from mysql.connector.locales import get_client_error()
150
    * Error messages and error codes are automatically fetch from the latest
151
      development release of MySQL. The errorcode.py and all files in the
152
      locales package are generated. You can see the generation date and the
153
      version of MySQL which was used in those files.
336 by Geert Vanderkelen
Release 1.0.4-alpha
154
155
1.0.4-alpha (2012-07-08)
324 by Geert Vanderkelen
Release 1.0.3-alpha
156
-----------------------------------------------------------------------
335 by Geert Vanderkelen
BUG#14259996: Removing redundant (un)set_client_flag methods
157
- Redundant MySQLConnection methods unset_client_flag() and set_client_flag()
340 by Geert Vanderkelen
Release 1.0.5-beta
158
  have been removed. Use set_client_flags() using a sequence of flags to
335 by Geert Vanderkelen
BUG#14259996: Removing redundant (un)set_client_flag methods
159
  change the client flags. (BUG#14259996)
160
334 by Geert Vanderkelen
BUG#14260052: Simplified setting and retrieving character set and collation
161
- Greatly simplified setting and retrieving character set and collation
162
  information (BUG#14260052):
163
    * Incompatible change: MySQLConnection's set_charset() has been replaced
164
      by the method set_charset_collation() with which it is possible to set
165
      character set and collation. The properties collation and charset are
166
      now read-only.
167
333 by Geert Vanderkelen
BUG#14259954: Fixed executing many INSERT .. ON DUPLICATE KEY with functions
168
- Fixed MySQLCursor.executemany() when INSERT statements use the
169
  'ON DUPLICATE KEY'-clause with a function like VALUES() (BUG#14259954)
170
330 by Geert Vanderkelen
BUG#14236592: Fixing unit testing on the MS Windows platform
171
- Fixing unit testing on the MS Windows platform (BUG#14236592)
172
    * tests/mysqld.py has been updated to make sure Windows binaries are
173
      looked up. Also, backslashes are now replaced by double forward
174
      slashes in the option file.
175
    * Bootstrapping is done using --no-defaults and we make sure that
176
      --standalone is used when launching mysqld.exe on Windows.
177
    * examples/dates.py has been updated to produce more predictable
178
      output and to work in environments where SQL Modes are set by
179
      default, for example, MySQL installation on Windows.
180
    * Some unit test have been update for Windows.
181
329 by Geert Vanderkelen
BUG#14231941: Fixed converting datetime.time to MySQL for Python 2.4/2.5
182
- Converting a datetime.time for MySQL failed for Python v2.4/2.5
183
  because strftime() has no support for the %f mark (BUG#14231941)
184
328 by Geert Vanderkelen
BUG#14231160: Cursors .description, .lastrowid and .rowcount are read-only
185
- cursor.CursorBase attributes description, lastrowid and rowcount are now
186
  read-only properties. This change was needed to to comply with Python's
187
  DB API v2.0 specification or PEP-249. (BUG#14231160)
188
327 by Geert Vanderkelen
BUG#14201459: Server Error 1426 classified as ProgrammingError
189
- Server error 1426 has been classified as ProgrammingError for
190
  MySQL 5.6.4 and later (BUG#14201459)
191
    * Additionally, the unit tests will now show the actual version of the
192
      MySQL server being bootstrapped and started. The version is also
193
      available to all tests.
194
326 by Geert Vanderkelen
BUG#14208326: cmd_query_iter() added to support multiple statements
195
- MySQLConnection.cmd_query() could and can not handle multiple statements.
340 by Geert Vanderkelen
Release 1.0.5-beta
196
  There for, a new method cmd_query_iter() has been introduced which will
326 by Geert Vanderkelen
BUG#14208326: cmd_query_iter() added to support multiple statements
197
  return an generator object to iterate through results. To prevent
198
  duplication of functionality/code, we made a few changes to the
199
  cursors in the cursor module. Here is a list of what is new and
200
  incompatible changes (BUG#14208326):
201
    * MySQLConnection.cmd_query() will raise an error when multiple
202
      statements are given; cmd_query_iter() should be used.
203
    * MySQLCursor.execute() returns a generator object with which you can
204
      iterate over results when executing multiple statements. Previously
205
      it returned -1 or the row count. MySQLCursor.execute() yields True
206
      when there are rows available (for example, after a SELECT), or False
207
      when no rows need to be or can be fetched.
208
    * The method MySQLCursor.next_resultset() has been removed since you
209
      can now iterate through results using MySQLCursor.execute().
210
    * The method MySQLCursor.next_proc_result() has been renamed to
211
      MySQLCursor.proc_results() and returns a generator object.
212
    * MySQLCursor.statement will return the executed statement.
213
    * MySQLCursor.with_rows returns True when there is result which could
214
      return rows (which has columns definitions returned by MySQL).
215
    * The multiple_resultset.py example shows how to go through results
216
      produced by sending multiple statements.
217
325 by Geert Vanderkelen
BUG#14184643: Fixed checking for unread results when sending commands
218
- MySQLConnection.cmd_query() and other methods sending server commands
219
  did not take into consideration that there might be unread results. This
220
  could possibly lead to wrong results and the application waiting forever.
221
  (BUG#14184643)
324 by Geert Vanderkelen
Release 1.0.3-alpha
222
223
1.0.3-alpha (2012-06-08)
224
-----------------------------------------------------------------------
225
- Facilitate the creation of source and built distributions (WL#6250)
226
    * New Distutils commands for creating packages. Every command can be
227
      given with the setup script, `python setup.py <command>`. These
228
      commands are a good base for later adding more distribution types.
229
      All commands are either specific to a particular Python minor version
230
      or major version (that is Python 2.x or Python 3.x).
231
    * sdist_gpl: GPLv2 distribution created in a folder in dist/. This is
232
      the base command for other GPLv2 source distributions.
233
    * bdist_com: Commercial distribution created in a folder in dist/. This
234
      the base command for other commercial built distributions. Before
235
      the source byte-compiled and removed, the GPL license is removed.
236
    * sdist_gpl_msi: Based on command sdist_gpl, it creates a Windows
237
      Installer installing a source distribution using WiX v3.5 (see
238
      support/MSWindows).
239
    * bdist_com_msi: Based on command bdist_com, it creates a Windows
240
      Installer installing a commercial built distribution
241
      using WiX v3.5 (see support/MSWindows).
242
    * sdist_gpl_rpm: Based on command sdist_gpl, it creates an architecture
243
      independent, but Python version specific, source distribution
244
      using a RPM spec file (see support/RPM).
245
    * bdist_com_rpm: Based on command bdist_com, it creates a architecture
246
      independent, but Python version specific, built distribution
247
      using a RPM spec file (see support/RPM).
248
    * There is an additional command to make Egg, but this proved to be not
249
      working due to the fact that Connector/Python is installed in a folder
250
      or package used by other projects (like MySQL Utilities). We, however,
251
      leave the code as it might be useful later.
252
    * The support/ directory is not part of any distribution and the setup.py
253
      will silently ignore when the extra Distutils commands are not
254
      available.
255
    * The distribution name of the Connector/Python (metasetupinfo.py) has
256
      changed from MySQL-Connector-Python to MySQL_Connector_Python to avoid
257
      problems installing using easy_install and others.
258
    * The docs/ directory now contains placeholder files for various
259
      documentation formats which will be part of the distribution later. We
260
      added these to facilitate the development and testing of the extra
261
      Distutils commands.
262
    * We removed the support/make_release.py script because we now use the
263
      Distutils. The file _version.py has been renamed to version.py so it
264
      can be imported without to much problems as it is also part of the
265
      distributions.
266
  
322 by Geert Vanderkelen
WL#6149: Adding support for time values with a fractional part
267
- Adding support for time values with a fractional part (WL#6149)
268
    * In MySQL 5.6.4, the fractional part of DATETIME, TIME, and TIMESTAMP
269
      values can be stored (provided the table schema supports it). 
270
      Connector/Python will send the fractional part and read it from results.
271
      Support is transparent and there is no extra option needed to enable
272
      this feature.
273
    * The new example script microseconds.py was added showing how to use
274
      Connector/Python to save and read TIME values with a fractional part.
321 by Geert Vanderkelen
Release 1.0.2-alpha
275
276
1.0.2-alpha (2012-05-19)
317 by Geert Vanderkelen
BUG#14048685: Bootstrapping MySQL v5.6 running unittests have been fixed
277
-----------------------------------------------------------------------
320 by Geert Vanderkelen
WL#6069: Adding missing unittests
278
- Adding missing unittests (WL#6069):
279
    * Adding missing unit tests for important modules like connection and
280
      network.
281
    * SSL wasn't tested and the bootstrapped MySQL server can now setup
282
      secure connections using certificates and keys found in the
283
      /support/ssl folder of the source.
284
    * Some bugs around SSL have been found and fixed together with some
285
      refactoring.
286
    * Some code in mysql.connector.connection has been refactored or removed.
287
318 by Geert Vanderkelen
BUG#14039339: Fixing and refactoring the mysql.connector.errors module
288
- Fixing and refactoring the mysql.connector.errors module (BUG#14039339):
289
    * class ClientError has been removed. The client error messages are
290
      now found in errors._CLIENT_ERROR and the function returning the
291
      MySQL Client error message is named errors._get_mysql_client_error.
292
    * Some server errors were incorrectly or classified twice.
293
    * errors.raise_error will raise a ValueError when the packet does not
294
      contain a MySQL error.
295
    * Removed Python mapping keys from client error messages
296
      in _CLIENT_ERROR.
297
    * The SQLState returned by MySQL errors were not reported in the
298
      raised exceptions.
299
    * Unit tests were missing for the errors module and have been added.
300
317 by Geert Vanderkelen
BUG#14048685: Bootstrapping MySQL v5.6 running unittests have been fixed
301
- Bootstrapping MySQL v5.6 running unittests have been fixed. (BUG#14048685)
302
    * A semicolon was missing issuing the USE command when loading the
303
      system table when bootstrapping. It seems that this is a problem
304
      with more recent MySQL versions.
305
    * STDOUT and STDERR when bootstrapping and starting the MySQL server
306
      for unittest testing is being redirected to devnull.
307
    * There is now an info logger line when we bootstrap and when we start
308
      the MySQL server. This should help showing at which state has been
309
      reached.
310
311
316 by Geert Vanderkelen
Release v1.0.1-alpha
312
1.0.1-alpha (2012-04-26)
313
-----------------------------------------------------------------------
314
- Updating copyright notice and license: the FLOSS License Exception is
315
  now explicitly mentioned in all source files. (WL#6273)
316
317
- The version does only contain integers now. The 'a' or 'alpha' suffix will
318
  not be present in packages, but it will be mentioned in the _version.py
319
  module since metasetupinfo.py uses this information to set, for example,
320
  the Trove classifiers dynamically.
321
322
1.0.0-alpha (2012-04-22)
323
-----------------------------------------------------------------------
324
- Preparation for first Alpha release in the MySQL Connector/Python v1.0
325
  series (WL#6273):
326
    * _version.py was removed from the mysql.connector package and moved
327
      now only used when installing and making packages.
328
    * The README and AUTHORS files have been updated. The ChangeLog has
329
      been revamped to included only v1.0 releases.
330
    * Documentation is moving to the MySQL manual: contains of docs/ folder
331
      has been removed and for now replaced by a README.
332
    * metasetupinfo.py has been updated.
333
    * The make_release.py script has been updated and moved to the subfolder
334
      support/.
335
    * MANIFEST.in does not include setup.cfg anymore.
336
337
- The metasetupinfo.py was using the already installed modules of
338
  Connector/Python instead of the ones going to be installed. This meant that
339
  upgrading would haven't worked when new modules would have been added.
340
  The metasetupinfo.py now alters the sys.path to make sure the to be
341
  installed modules are loaded first. (BUG#13962765)
342
343
- Refactoring the modules connection and protocol (WL#6196):
344
    * Moving socket classes connection to the new module 
345
      mysql.connector.network.
346
    * The MySQLProtocol class does not keep a reference to a 
347
      MySQLConnection-object any more. MySQLProtocol is now only dealing
348
      with creating and parsing MySQL packets. Network interaction is now
349
      done only by the MySQLConnection objects with the exception of the
350
      MySQLProtocol.read_text_result, which needs a socket object to be
351
      passed.
352
    * MySQLConnection handles handshaking, authentication,
353
      OK/EOF packets and Error packets, all which was done previously by the
354
      MySQLProtocol class.
355
    * Packet numbers are now tracked by network.BaseMySQLSocket. This was
356
      previously done by MySQLProtocol.
357
358
- MySQLCursor.description now stores column names as Unicode (BUG#13792575).
359
360
- The dbapi.Binary is now bytes for Python v3 (BUG#13780676)
361
362
- Fixed automatic garbage collection which caused memory usage to grow
363
  over time. (Bug#13435186)
364
    * MySQLConverter uses getattr() instead of mapping types and methods in
365
      a dictionary.
366
    * MySQLCursor keeps a weak reference to the MySQLConnection object that
367
      created it.
368
    * MySQLConnection does not keep track of its cursors any longer.
369
    * Some changes where reworked with refactoring the connection and
370
      protocol modules. (WL#6196)
371
372
- Implemented reconnect and fixed the ping()-method (BUG#13392739)
373
    * MySQLConnection.reconnect() can be used to reconnect to the MySQL
374
      server. It accepts number of retries and an optional delay between
375
      attempts.
376
    * MySQLConnectiong.ping() is now a method and works the way the MySQL
377
      C API mysql_ping() function works: it raises an error. It can also
378
      optionally reconnect.
379
    * MySQLConnection.is_connected() now returns True when connection is
380
      available, False otherwise.
381
    * ping() and is_connected() are backwards incompatible.
382
383
- Fixed setting time zone for current MySQL session. (BUG#13395083)
384
385
- Fixed setting and retrieving character set and collation. (Bug#13375632)
386
    * Setting the character set using the MySQLConnection charset property
387
      or set_charset() method can now be done in 3 ways: using MySQL's ID,
388
      using a name or using a tuple with second element the collation.
389
    * Setting the collation will retrieve and reset MySQLConnection's
390
      _charset_id attribute to the correct character set.
391
    * The MySQLConnection.charset_name and MySQLConnection.collation_name
392
      properties can be used to retrieve respectively the character set and
393
      the collation name.
394
395
- Fixed setting sql_mode to a list of modes. (BUG#13365985)
396
397
- Fixed handling of errors after authentication for Python v3 (BUG#13364285)
398
399
- Various improvements around receiving and sending MySQL packets:
400
    * Refactored MySQLBaseSocket.recv_plain and
401
      MySQLBaseSocket.recv_compressed: they are now simpler and handle socket
402
      errors better.
403
    * Using sendall() for sending packets.
274 by Geert Vanderkelen
Adding support for Python v2.4 (again)
404