cpython: 685f32972c11 (original) (raw)
Mercurial > cpython
changeset 102918:685f32972c11
Issue #10513: Merge from 3.5 [#10513]
Berker Peksag berker.peksag@gmail.com | |
---|---|
date | Fri, 26 Aug 2016 22:08:51 +0300 |
parents | 1c38457da5a1(current diff)81f614dd8136(diff) |
children | b64f83d6ff24 |
files | Misc/NEWS Modules/_sqlite/connection.c |
diffstat | 3 files changed, 34 insertions(+), 1 deletions(-)[+] [-] Lib/sqlite3/test/regression.py 31 Misc/NEWS 3 Modules/_sqlite/connection.c 1 |
line wrap: on
line diff
--- a/Lib/sqlite3/test/regression.py +++ b/Lib/sqlite3/test/regression.py @@ -322,6 +322,37 @@ class RegressionTests(unittest.TestCase) self.assertRaises(ValueError, cur.execute, " \0select 2") self.assertRaises(ValueError, cur.execute, "select 2\0")
- def CheckCommitCursorReset(self):
"""[](#l1.8)
Connection.commit() did reset cursors, which made sqlite3[](#l1.9)
to return rows multiple times when fetched from cursors[](#l1.10)
after commit. See issues 10513 and 23129 for details.[](#l1.11)
"""[](#l1.12)
con = sqlite.connect(":memory:")[](#l1.13)
con.executescript("""[](#l1.14)
create table t(c);[](#l1.15)
create table t2(c);[](#l1.16)
insert into t values(0);[](#l1.17)
insert into t values(1);[](#l1.18)
insert into t values(2);[](#l1.19)
""")[](#l1.20)
self.assertEqual(con.isolation_level, "")[](#l1.22)
counter = 0[](#l1.24)
for i, row in enumerate(con.execute("select c from t")):[](#l1.25)
with self.subTest(i=i, row=row):[](#l1.26)
con.execute("insert into t2(c) values (?)", (i,))[](#l1.27)
con.commit()[](#l1.28)
if counter == 0:[](#l1.29)
self.assertEqual(row[0], 0)[](#l1.30)
elif counter == 1:[](#l1.31)
self.assertEqual(row[0], 1)[](#l1.32)
elif counter == 2:[](#l1.33)
self.assertEqual(row[0], 2)[](#l1.34)
counter += 1[](#l1.35)
self.assertEqual(counter, 3, "should have returned exactly three rows")[](#l1.36)
+ def suite(): regression_suite = unittest.makeSuite(RegressionTests, "Check")
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -46,6 +46,9 @@ Core and Builtins Library ------- +- Issue #10513: Fix a regression in Connection.commit(). Statements should
- Issue #12319: Chunked transfer encoding support added to http.client.HTTPConnection requests. The urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
--- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -425,7 +425,6 @@ PyObject* pysqlite_connection_commit(pys } if (self->inTransaction) {
pysqlite_do_all_statements(self, ACTION_RESET, 0);[](#l3.7)
Py_BEGIN_ALLOW_THREADS rc = sqlite3_prepare(self->db, "COMMIT", -1, &statement, &tail);