This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Check sqlite3_version before allowing check_same_thread = False
Type: enhancement Stage: resolved
Components: Extension Modules Versions: Python 3.6, Python 3.5
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Dave Sawyer, berker.peksag, python-dev
Priority: normal Keywords:

Created on 2016-06-03 00:53 by Dave Sawyer, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
sqlite_oldver_issue.txt Dave Sawyer, 2016-06-03 00:53 review
issue27190_patch2.txt Dave Sawyer, 2016-06-03 19:15 review
Messages (5)
msg267013 - (view) Author: Dave Sawyer (Dave Sawyer) * Date: 2016-06-03 00:53
Starting in sqlite version 3.3.1 (Jan 2006) multiple threads can share the same connection. Python allows you do use this with the check_same_thread parameter of sqlite3.connect() method. It's almost certain users have a late enough version of sqlite that they can use this option. While we could document "check your version before using this feature" (see http://bugs.python.org/issue27113) it would be nicer to check the actual database for support. Code can be written and tested on one machine and deployed to another machine. Using this feature on an very old version of sqlite can crash or possibly corrupt the database.
msg267022 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2016-06-03 02:09
Thanks for the patch. I'm not sure we can apply the patch to bugfix branches. You can use SQLITE_VERSION_NUMBER to check sqlite3 version.
msg267141 - (view) Author: Dave Sawyer (Dave Sawyer) * Date: 2016-06-03 19:15
This can go into bugfix branches. In fact, it's most likely to be helpful there because they are more likely to be running with a version of sqlite 10 years old. I use the sqlite3_libversion_number() call because I'm testing against the version of sqlite actually loaded. The SQLITE_VERSION_NUMBER define is set at compile time.
msg268362 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-12 11:10
New changeset 12bf71b9f1cd by Berker Peksag in branch '3.5':
Issue #27190: Raise NotSupportedError if sqlite3 is older than 3.3.1
https://hg.python.org/cpython/rev/12bf71b9f1cd

New changeset 4502cff170c2 by Berker Peksag in branch 'default':
Issue #27190: Merge from 3.5
https://hg.python.org/cpython/rev/4502cff170c2
msg268363 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2016-06-12 11:11
Thanks!
History
Date User Action Args
2022-04-11 14:58:31adminsetgithub: 71377
2016-06-12 11:11:03berker.peksagsetstatus: open -> closed
versions: + Python 3.5
messages: + msg268363

resolution: fixed
stage: patch review -> resolved
2016-06-12 11:10:16python-devsetnosy: + python-dev
messages: + msg268362
2016-06-03 19:15:10Dave Sawyersetfiles: + issue27190_patch2.txt

messages: + msg267141
2016-06-03 02:09:42berker.peksagsetcomponents: + Extension Modules
2016-06-03 02:09:31berker.peksagsetversions: + Python 3.6
nosy: + berker.peksag

messages: + msg267022

stage: patch review
2016-06-03 00:53:39Dave Sawyercreate