bpo-26187: Test that set_trace_callback() is not called multiple times (GH-461)
conn.set_trace_callback() shouldn't be called multiple times when the schema is changing. This has indirectly been fixed by using sqlite3_prepare_v2() in bpo-9303.
This commit is contained in:
parent
2abfdf5a81
commit
0e6cb2ea62
|
@ -24,6 +24,8 @@
|
|||
import unittest
|
||||
import sqlite3 as sqlite
|
||||
|
||||
from test.support import TESTFN, unlink
|
||||
|
||||
class CollationTests(unittest.TestCase):
|
||||
def CheckCreateCollationNotString(self):
|
||||
con = sqlite.connect(":memory:")
|
||||
|
@ -248,6 +250,24 @@ class TraceCallbackTests(unittest.TestCase):
|
|||
"Unicode data %s garbled in trace callback: %s"
|
||||
% (ascii(unicode_value), ', '.join(map(ascii, traced_statements))))
|
||||
|
||||
@unittest.skipIf(sqlite.sqlite_version_info < (3, 3, 9), "sqlite3_prepare_v2 is not available")
|
||||
def CheckTraceCallbackContent(self):
|
||||
# set_trace_callback() shouldn't produce duplicate content (bpo-26187)
|
||||
traced_statements = []
|
||||
def trace(statement):
|
||||
traced_statements.append(statement)
|
||||
|
||||
queries = ["create table foo(x)",
|
||||
"insert into foo(x) values(1)"]
|
||||
self.addCleanup(unlink, TESTFN)
|
||||
con1 = sqlite.connect(TESTFN, isolation_level=None)
|
||||
con2 = sqlite.connect(TESTFN)
|
||||
con1.set_trace_callback(trace)
|
||||
cur = con1.cursor()
|
||||
cur.execute(queries[0])
|
||||
con2.execute("create table bar(x)")
|
||||
cur.execute(queries[1])
|
||||
self.assertEqual(traced_statements, queries)
|
||||
|
||||
|
||||
def suite():
|
||||
|
|
|
@ -307,6 +307,10 @@ Extension Modules
|
|||
Library
|
||||
-------
|
||||
|
||||
- bpo-26187: Test that sqlite3 trace callback is not called multiple
|
||||
times when schema is changing. Indirectly fixed by switching to
|
||||
use sqlite3_prepare_v2() in bpo-9303. Patch by Aviv Palivoda.
|
||||
|
||||
- bpo-29998: Pickling and copying ImportError now preserves name and path
|
||||
attributes.
|
||||
|
||||
|
|
Loading…
Reference in New Issue