summaryrefslogtreecommitdiff
path: root/Lib/sqlite3/test/test_regression.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/sqlite3/test/test_regression.py')
-rw-r--r--Lib/sqlite3/test/test_regression.py49
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()