mirror of https://github.com/python/cpython
Issue #10513: Merge from 3.5
This commit is contained in:
commit
6ed442c48d
|
@ -322,6 +322,37 @@ class RegressionTests(unittest.TestCase):
|
||||||
self.assertRaises(ValueError, cur.execute, " \0select 2")
|
self.assertRaises(ValueError, cur.execute, " \0select 2")
|
||||||
self.assertRaises(ValueError, cur.execute, "select 2\0")
|
self.assertRaises(ValueError, cur.execute, "select 2\0")
|
||||||
|
|
||||||
|
def CheckCommitCursorReset(self):
|
||||||
|
"""
|
||||||
|
Connection.commit() did reset cursors, which made sqlite3
|
||||||
|
to return rows multiple times when fetched from cursors
|
||||||
|
after commit. See issues 10513 and 23129 for details.
|
||||||
|
"""
|
||||||
|
con = sqlite.connect(":memory:")
|
||||||
|
con.executescript("""
|
||||||
|
create table t(c);
|
||||||
|
create table t2(c);
|
||||||
|
insert into t values(0);
|
||||||
|
insert into t values(1);
|
||||||
|
insert into t values(2);
|
||||||
|
""")
|
||||||
|
|
||||||
|
self.assertEqual(con.isolation_level, "")
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
for i, row in enumerate(con.execute("select c from t")):
|
||||||
|
with self.subTest(i=i, row=row):
|
||||||
|
con.execute("insert into t2(c) values (?)", (i,))
|
||||||
|
con.commit()
|
||||||
|
if counter == 0:
|
||||||
|
self.assertEqual(row[0], 0)
|
||||||
|
elif counter == 1:
|
||||||
|
self.assertEqual(row[0], 1)
|
||||||
|
elif counter == 2:
|
||||||
|
self.assertEqual(row[0], 2)
|
||||||
|
counter += 1
|
||||||
|
self.assertEqual(counter, 3, "should have returned exactly three rows")
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
regression_suite = unittest.makeSuite(RegressionTests, "Check")
|
regression_suite = unittest.makeSuite(RegressionTests, "Check")
|
||||||
|
|
|
@ -46,6 +46,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #10513: Fix a regression in Connection.commit(). Statements should
|
||||||
|
not be reset after a commit.
|
||||||
|
|
||||||
- Issue #12319: Chunked transfer encoding support added to
|
- Issue #12319: Chunked transfer encoding support added to
|
||||||
http.client.HTTPConnection requests. The
|
http.client.HTTPConnection requests. The
|
||||||
urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
|
urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
|
||||||
|
|
|
@ -425,7 +425,6 @@ PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->inTransaction) {
|
if (self->inTransaction) {
|
||||||
pysqlite_do_all_statements(self, ACTION_RESET, 0);
|
|
||||||
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
rc = sqlite3_prepare(self->db, "COMMIT", -1, &statement, &tail);
|
rc = sqlite3_prepare(self->db, "COMMIT", -1, &statement, &tail);
|
||||||
|
|
Loading…
Reference in New Issue