classification
Title: CheckCommitCursorReset regression sqlite3 test fails with old sqlite3
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 2.7
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: Nosy List: berker.peksag, mcepl
Priority: normal Keywords: patch

Created on 2019-07-10 07:45 by mcepl, last changed 2020-02-24 01:15 by berker.peksag. This issue is now closed.

Files
File name Uploaded Description Edit
log.txt mcepl, 2019-07-10 07:45 Full build log when the issue happened
avoid-sqlite-race.patch mcepl, 2020-01-09 13:22
Messages (3)
msg347606 - (view) Author: Matej Cepl (mcepl) * Date: 2019-07-10 07:45
When building Python 2.7.16 on very old SUSE Enterprise Linux (SLE-11), with gcc 4.3, sqlite3 3.6.4, CheckCommitCursorReset fails with:

test test_sqlite failed -- Traceback (most recent call last):
  File "/usr/src/packages/BUILD/Python-2.7.16/Lib/sqlite3/test/regression.py", line 338, in CheckCommitCursorReset
    con.commit()
OperationalError: cannot commit transaction - SQL statements in progress

It seems to me the problem is that the select from https://github.com/python/cpython/blob/master/Lib/sqlite3/test/regression.py#L353 is still open, while we run con.commit(). It should be probably better to store output of that enumerate somewhere and work on that variable instead.
msg359676 - (view) Author: Matej Cepl (mcepl) * Date: 2020-01-09 13:22
Fix for this situations (and we are talking about sqlite3 3.6.4, which is truly archaeological excavation) skip particular test.
msg362554 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2020-02-24 01:15
Thank you for the report and for the patch!

The minimum supported SQLite 3 version in Python 3 is 3.7.2 as declared at https://github.com/python/cpython/blob/9f37872e307734666a7169f7be6e3370d3068282/setup.py#L1364 

While it's still 3.0.8 in Python 2.7 (https://github.com/python/cpython/blob/249706c1fbce04125d81bd9993e6c010ae30f8e4/setup.py#L1175), I think we can live without the patch as Python 2.7 is now officially dead.

Of course, we can still apply it if one of our 2.7 buildbots were failing due to an ancient version of SQLite 3.
History
Date User Action Args
2020-02-24 01:15:24berker.peksagsetstatus: open -> closed
versions: - Python 3.8, Python 3.9
type: behavior
messages: + msg362554

resolution: wont fix
stage: resolved
2020-01-09 13:22:17mceplsetfiles: + avoid-sqlite-race.patch
keywords: + patch
messages: + msg359676
2019-07-10 17:14:41xtreaksetnosy: + berker.peksag
2019-07-10 07:45:49mceplcreate