8000 Merge pull request #406 from methane/fix/result-sync · pkdevboxy/PyMySQL@dbb16ee · GitHub
[go: up one dir, main page]

Skip to content

Commit dbb16ee

Browse files
committed
Merge pull request PyMySQL#406 from methane/fix/result-sync
Calling connection's method during multiple result breaks command sync
2 parents 78af0a9 + b837d22 commit dbb16ee

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

pymysql/connections.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,10 +1021,13 @@ def _execute_command(self, command, sql):
10211021

10221022
# If the last query was unbuffered, make sure it finishes before
10231023
# sending new commands
1024-
if self._result is not None and self._result.unbuffered_active:
1025-
warnings.warn("Previous unbuffered result was left incomplete")
1026-
self._result._finish_unbuffered_query()
1027-
self._result = None
1024+
if self._result is not None:
1025+
if self._result.unbuffered_active:
1026+
warnings.warn("Previous unbuffered result was left incomplete")
1027+
self._result._finish_unbuffered_query()
1028+
while self._result.has_next:
1029+
self.next_result()
1030+
self._result = None
10281031

10291032
if isinstance(sql, text_type):
10301033
sql = sql.encode(self.encoding)
@@ -1113,9 +1116,6 @@ def _request_authentication(self):
11131116
self.write_packet(data)
11141117
auth_packet = self._read_packet()
11151118

1116-
#TODO: ok packet or error packet?
1117-
1118-
11191119
def _process_auth(self, plugin_name, auth_packet):
11201120
plugin_class = self._auth_plugin_map.get(plugin_name)
11211121
if not plugin_class:

pymysql/tests/test_connection.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ def test_connection_gone_away(self):
418418
with self.assertRaises(pymysql.OperationalError) as cm:
419419
cur.execute("SELECT 1+1")
420420
# error occures while reading, not writing because of socket buffer.
421-
#self.assertEquals(cm.exception.args[0], 2006)
421+
#self.assertEqual(cm.exception.args[0], 2006)
422422
self.assertIn(cm.exception.args[0], (2006, 2013))
423423

424424
def test_init_command(self):
@@ -566,3 +566,11 @@ def test_previous_cursor_not_closed(self):
566566
cur2 = con.cursor()
567567
with self.assertRaises(pymysql.ProgrammingError):
568568
cur2.execute("SELECT 3")
569+
570+
def test_commit_during_multi_result(self):
571+
con = self.connections[0]
572+
cur = con.cursor()
573+
cur.execute("SELECT 1; SELECT 2")
574+
con.commit()
575+
cur.execute("SELECT 3")
576+
self.assertEqual(cur.fetchone()[0], 3)

0 commit comments

Comments
 (0)
0