From: Benjamin Peterson Date: Thu, 12 Jan 2017 07:39:58 +0000 (-0800) Subject: revert 030e100f048a (#29006, #10513) X-Git-Tag: v2.7.14rc1~307 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0897a557f43b38f21a2a3f67778407ad968e52c5;p=python revert 030e100f048a (#29006, #10513) --- diff --git a/Lib/sqlite3/test/regression.py b/Lib/sqlite3/test/regression.py index 36fec59f11..6ac40167de 100644 --- a/Lib/sqlite3/test/regression.py +++ b/Lib/sqlite3/test/regression.py @@ -328,36 +328,6 @@ class RegressionTests(unittest.TestCase): self.assertRaises(ValueError, cur.execute, " \0select 2") 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")): - 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(): regression_suite = unittest.makeSuite(RegressionTests, "Check") diff --git a/Misc/NEWS b/Misc/NEWS index 2a211ddbc2..6a6fb8cc8d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -15,6 +15,9 @@ Core and Builtins Library ------- +- Issue #29006: Revert change from issue #10513 for making sqlite more liable to + emit "database table is locked" errors. + - Issue #29094: Offsets in a ZIP file created with extern file object and mode "w" now are relative to the start of the file. @@ -225,9 +228,6 @@ Library - Issue #19884: Avoid spurious output on OS X with Gnu Readline. -- Issue #10513: Fix a regression in Connection.commit(). Statements should - not be reset after a commit. - - Issue #2466: posixpath.ismount now correctly recognizes mount points which the user does not have permission to access. diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 237d6e419a..4e28289125 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -467,6 +467,7 @@ PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args) } if (self->inTransaction) { + pysqlite_do_all_statements(self, ACTION_RESET, 0); Py_BEGIN_ALLOW_THREADS rc = sqlite3_prepare(self->db, "COMMIT", -1, &statement, &tail);