changeset: 101940:12bf71b9f1cd branch: 3.5 parent: 101938:a825aee0721f user: Berker Peksag date: Sun Jun 12 14:09:51 2016 +0300 files: Lib/sqlite3/test/dbapi.py Misc/NEWS Modules/_sqlite/connection.c description: Issue #27190: Raise NotSupportedError if sqlite3 is older than 3.3.1 Patch by Dave Sawyer. diff -r a825aee0721f -r 12bf71b9f1cd Lib/sqlite3/test/dbapi.py --- a/Lib/sqlite3/test/dbapi.py Sun Jun 12 13:41:47 2016 +0300 +++ b/Lib/sqlite3/test/dbapi.py Sun Jun 12 14:09:51 2016 +0300 @@ -180,6 +180,12 @@ with self.assertRaises(sqlite.OperationalError): 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): def setUp(self): diff -r a825aee0721f -r 12bf71b9f1cd Misc/NEWS --- a/Misc/NEWS Sun Jun 12 13:41:47 2016 +0300 +++ b/Misc/NEWS Sun Jun 12 14:09:51 2016 +0300 @@ -10,6 +10,9 @@ 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 function with generalized unpacking (PEP 448) and conflicting keyword names could cause undefined behavior. diff -r a825aee0721f -r 12bf71b9f1cd Modules/_sqlite/connection.c --- a/Modules/_sqlite/connection.c Sun Jun 12 13:41:47 2016 +0300 +++ b/Modules/_sqlite/connection.c Sun Jun 12 14:09:51 2016 +0300 @@ -164,6 +164,10 @@ #ifdef WITH_THREAD self->thread_ident = PyThread_get_thread_ident(); #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->function_pinboard = PyDict_New();