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 unittest
|
||||||
import sqlite3 as sqlite
|
import sqlite3 as sqlite
|
||||||
|
|
||||||
|
from test.support import TESTFN, unlink
|
||||||
|
|
||||||
class CollationTests(unittest.TestCase):
|
class CollationTests(unittest.TestCase):
|
||||||
def CheckCreateCollationNotString(self):
|
def CheckCreateCollationNotString(self):
|
||||||
con = sqlite.connect(":memory:")
|
con = sqlite.connect(":memory:")
|
||||||
|
@ -248,6 +250,24 @@ class TraceCallbackTests(unittest.TestCase):
|
||||||
"Unicode data %s garbled in trace callback: %s"
|
"Unicode data %s garbled in trace callback: %s"
|
||||||
% (ascii(unicode_value), ', '.join(map(ascii, traced_statements))))
|
% (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():
|
def suite():
|
||||||
|
|
|
@ -307,6 +307,10 @@ Extension Modules
|
||||||
Library
|
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
|
- bpo-29998: Pickling and copying ImportError now preserves name and path
|
||||||
attributes.
|
attributes.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue