Issue #27190: Raise NotSupportedError if sqlite3 is older than 3.3.1

Patch by Dave Sawyer.
This commit is contained in:
Berker Peksag 2016-06-12 14:09:51 +03:00
parent c415440faa
commit 7bea2347c7
3 changed files with 13 additions and 0 deletions

View File

@ -180,6 +180,12 @@ class ConnectionTests(unittest.TestCase):
with self.assertRaises(sqlite.OperationalError): with self.assertRaises(sqlite.OperationalError):
cx.execute('insert into test(id) values(1)') cx.execute('insert into test(id) values(1)')
def CheckSameThreadErrorOnOldVersion(self):
if sqlite.sqlite_version_info >= (3, 3, 1):
self.skipTest('test needs sqlite3 versions older than 3.3.1')
with self.assertRaises(sqlite.NotSupportedError) as cm:
sqlite.connect(':memory:', check_same_thread=False)
self.assertEqual(str(cm.exception), 'shared connections not available')
class CursorTests(unittest.TestCase): class CursorTests(unittest.TestCase):
def setUp(self): def setUp(self):

View File

@ -10,6 +10,9 @@ Release date: tba
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #27190: Raise NotSupportedError if sqlite3 is older than 3.3.1.
Patch by Dave Sawyer.
- Issue #27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling - Issue #27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling
function with generalized unpacking (PEP 448) and conflicting keyword names function with generalized unpacking (PEP 448) and conflicting keyword names
could cause undefined behavior. could cause undefined behavior.

View File

@ -164,6 +164,10 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject
#ifdef WITH_THREAD #ifdef WITH_THREAD
self->thread_ident = PyThread_get_thread_ident(); self->thread_ident = PyThread_get_thread_ident();
#endif #endif
if (!check_same_thread && sqlite3_libversion_number() < 3003001) {
PyErr_SetString(pysqlite_NotSupportedError, "shared connections not available");
return -1;
}
self->check_same_thread = check_same_thread; self->check_same_thread = check_same_thread;
self->function_pinboard = PyDict_New(); self->function_pinboard = PyDict_New();