diff options
author | Erlend Egeberg Aasland <erlend.aasland@innova.no> | 2021-09-21 13:20:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-21 12:20:34 +0100 |
commit | 050d1035957379d70e8601e6f5636637716a264b (patch) | |
tree | e6d21a1cc20b46585e1da7433556f8ce5107b594 /Lib/sqlite3/test/test_regression.py | |
parent | debd80403721b00423680328d6adf160a28fbff4 (diff) | |
download | cpython-git-050d1035957379d70e8601e6f5636637716a264b.tar.gz |
bpo-44958: Only reset `sqlite3` statements when needed (GH-27844)
Diffstat (limited to 'Lib/sqlite3/test/test_regression.py')
-rw-r--r-- | Lib/sqlite3/test/test_regression.py | 49 |
1 files changed, 42 insertions, 7 deletions
diff --git a/Lib/sqlite3/test/test_regression.py b/Lib/sqlite3/test/test_regression.py index f75e48f156..d41f118141 100644 --- a/Lib/sqlite3/test/test_regression.py +++ b/Lib/sqlite3/test/test_regression.py @@ -124,13 +124,14 @@ class RegressionTests(unittest.TestCase): """ SELECT = "select * from foo" con = sqlite.connect(":memory:",detect_types=sqlite.PARSE_DECLTYPES) - con.execute("create table foo(bar timestamp)") - con.execute("insert into foo(bar) values (?)", (datetime.datetime.now(),)) - con.execute(SELECT).close() - con.execute("drop table foo") - con.execute("create table foo(bar integer)") - con.execute("insert into foo(bar) values (5)") - con.execute(SELECT).close() + cur = con.cursor() + cur.execute("create table foo(bar timestamp)") + cur.execute("insert into foo(bar) values (?)", (datetime.datetime.now(),)) + cur.execute(SELECT) + cur.execute("drop table foo") + cur.execute("create table foo(bar integer)") + cur.execute("insert into foo(bar) values (5)") + cur.execute(SELECT) def test_bind_mutating_list(self): # Issue41662: Crash when mutate a list of parameters during iteration. @@ -435,6 +436,40 @@ class RegressionTests(unittest.TestCase): val = cur.fetchone()[0] self.assertEqual(val, b'') + def test_table_lock_cursor_replace_stmt(self): + con = sqlite.connect(":memory:") + cur = con.cursor() + cur.execute("create table t(t)") + cur.executemany("insert into t values(?)", ((v,) for v in range(5))) + con.commit() + cur.execute("select t from t") + cur.execute("drop table t") + con.commit() + + def test_table_lock_cursor_dealloc(self): + con = sqlite.connect(":memory:") + con.execute("create table t(t)") + con.executemany("insert into t values(?)", ((v,) for v in range(5))) + con.commit() + cur = con.execute("select t from t") + del cur + con.execute("drop table t") + con.commit() + + def test_table_lock_cursor_non_readonly_select(self): + con = sqlite.connect(":memory:") + con.execute("create table t(t)") + con.executemany("insert into t values(?)", ((v,) for v in range(5))) + con.commit() + def dup(v): + con.execute("insert into t values(?)", (v,)) + return + con.create_function("dup", 1, dup) + cur = con.execute("select dup(t) from t") + del cur + con.execute("drop table t") + con.commit() + if __name__ == "__main__": unittest.main() |