msg201728 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2013-10-30 11:12 |
My System:
$ python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.6.21'
Test Script:
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('PRAGMA foreign_keys = ON')
fk = (conn.execute("PRAGMA foreign_keys").fetchone()[0])
print 'version = %s, foreign keys = %r' % (sqlite3.sqlite_version, bool(fk))
if not fk:
raise Exception('No foreign keys!?')
c = conn.cursor()
c.executescript('''
create table if not exists main.one (resource_id TEXT PRIMARY KEY, data TEXT);
create table if not exists main.two (node_id INTEGER PRIMARY KEY, data TEXT);
create table if not exists main.mapping (node_id INTEGER REFERENCES two, resource_id TEXT REFERENCES one);
insert into main.one(resource_id, data) values('A', 'A one thing');
insert into main.two(node_id, data) values(1, 'A two thing');
insert into main.mapping(resource_id, node_id) values('A', 1);
insert into main.one(resource_id, data) values('B', 'Another one thing');
insert into main.two(node_id, data) values(2, 'Another two thing');
insert into main.mapping(resource_id, node_id) values('B', 2);
insert into main.one(resource_id, data) values('C', 'Yet another one thing');
''')
for tbl in 'one', 'two', 'mapping':
print 'TABLE main.%s:\n%s\n' % (tbl, '\n'.join(repr(r) for r in c.execute('select * from main.%s' % tbl).fetchall()))
del_cmd = """delete from main.one where resource_id='B'"""
print 'Attempting: %s' % (del_cmd,)
try:
c.execute(del_cmd)
except Exception, e:
print 'Failed to delete: %s' % e
cmd = """delete from main.one where resource_id='C'"""
print 'Attempting: %s' % (cmd,)
c.execute(cmd)
cmd = """delete from main.mapping where resource_id='B' AND node_id=2"""
print '\nAttempting: %s' % (cmd,)
c.execute(cmd)
for tbl in 'one', 'two', 'mapping':
print 'TABLE main.%s:\n%s\n' % (tbl, '\n'.join(repr(r) for r in c.execute('select * from main.%s' % tbl).fetchall()))
print 'Attempting: %s' % (del_cmd,)
c.execute(del_cmd)
This fails with "sqlite3.IntegrityError: foreign key constraint failed". Original report comes from SO: http://stackoverflow.com/questions/9342763/sqlite3-foreign-keys-remembered
The proposed solution (to upgrade sqlite) is not possible on Windows as it comes bundled with Python.
So please update the bundled sqlite version where this bug is solved.
|
msg201796 - (view) |
Author: Martin v. Löwis (loewis) *  |
Date: 2013-10-31 10:23 |
It's certainly possible to update SQLite without rebuilding Python. Just replace sqlite3.dll with a newer version.
|
msg201820 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2013-10-31 14:37 |
Ah that's great. The issue is resolved with SQLite 3.8.1.
However, would be great if a newer SQLite version comes already bundled with Python.
|
msg222638 - (view) |
Author: Mark Lawrence (BreamoreBoy) * |
Date: 2014-07-09 20:47 |
FYI 3.4.0 Windows was shipped with SQLite 3.8.3.1 see #20465.
|
msg222652 - (view) |
Author: Martin v. Löwis (loewis) *  |
Date: 2014-07-10 07:48 |
I don't maintain Python 2.7 anymore, so removing myself.
|
msg223118 - (view) |
Author: Steve Dower (steve.dower) *  |
Date: 2014-07-15 16:22 |
I don't know enough about the SQLite API to determine whether we can safely upgrade from 3.6.21 in Python 2.7, but since this doesn't appear to be a security issue I don't see any solid justification for doing it anyway.
If someone else does it, I'll build it, but I'm not taking responsibility for the change :)
|
msg223127 - (view) |
Author: Ned Deily (ned.deily) *  |
Date: 2014-07-15 17:24 |
IMO, what third-party libraries are included with the Windows and OS X binary installers, what versions of them, and when to update them are questions without firm established policy answers, say in a PEP. In many ways, for the installers we are performing the role of a third-party distributor / integrator. In many other such situations, the third-party libraries would be dynamically linked from the platform OS's or distributor's version and would be independently updated, assuming ABI compatibility is maintained. For the python.org installers, I think the updating has been mostly at the discretion of the installer developers with occasional instigation by the release managers or other core developers in the cases of security issues. FWIW, the most recent 2.7.x installers for OS X ship with SQLite 3.8.3.1. The current version of SQLite is 3.8.5 and that project has a very good reputation for its well-tested, regression-free releases. So I would not see a problem in upgrading the library but I would get a pronouncement from the release manager.
|
msg229430 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2014-10-15 10:20 |
I've now run various and partially complex applications including SQLAlchemy against SQLite 3.8.1 for months without having any issues. Right now I have run extensive database test suites against the current SQLite release 3.8.6 without any issues, too.
So I would say it's save to bundle a newer SQLite version in the next Python 2.7.x. Who would be responsible for this? Is there anything I can do to get progress on this issue?
|
msg229431 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2014-10-15 10:22 |
Steve is responsible for the Windows builds, but he always answered to your request above.
|
msg229433 - (view) |
Author: Mark Lawrence (BreamoreBoy) * |
Date: 2014-10-15 11:18 |
A work around is already given in msg201796 and is reinforced by this https://mail.python.org/pipermail/python-list/2014-October/679369.html
|
msg229463 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2014-10-15 15:42 |
Yes, but this is no practical solution. Telling *all* my clients to update the sqlite3.dll after *every* Python update is just not feasible and will just not work out in practice.
What would be the required steps to update the *.dll in the build? Just update the external.bat to fetch another version or I am missing something?
I would suggest synchronizing it with Python 3, which means SQLite 3.8.3.1. Or what do you think?
|
msg229464 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2014-10-15 15:44 |
The main risk is if SQLite 3.8 changes some behaviours compared to older versions. This is why we generally choose to only apply bugfix releases of external libraries in our owbn bugfix branches.
The question is whether this issue can be worked around without upgrading SQLite.
|
msg229468 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2014-10-15 15:59 |
Well, OSX release ships with 3.8.3.1, too:
https://hg.python.org/cpython/file/2.7/Mac/BuildScript/build-installer.py#l290
|
msg229469 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2014-10-15 16:01 |
As I said, I think it's really Steve's choice here (as long as he is doing the Windows release builds).
|
msg240609 - (view) |
Author: Zachary Ware (zach.ware) *  |
Date: 2015-04-13 14:14 |
I'm ambivalent on whether to do it, but Marc is right that it's just a version update in Tools/buildbot/external-common.bat and PCbuild/pyproject.vsprops.
|
msg247480 - (view) |
Author: Brett Cannon (brett.cannon) *  |
Date: 2015-07-27 20:05 |
Apparently we are shipping an old version in 3.5b4 (3.8.3.1 and the latest release is 3.11), so this should probably be upgraded before rc.
|
msg247487 - (view) |
Author: Steve Dower (steve.dower) *  |
Date: 2015-07-27 21:24 |
I agree, and I know that backwards compatibility is a very high priority especially now that SQLite is shipping as part of Windows 10. While we *could* take a dependency on this binary (winsqlite3.dll, for those who have it), I don't think it's actually any different from the main release.
In short, let's update the SQLite version for 3.5 and put it through its paces.
I'm only +0 on doing it for Python 2.7, and that's assuming we'll do an RC before releasing 2.7.11. Given we just revised the entire build project, I think an RC would be appropriate.
|
msg247527 - (view) |
Author: Steve Dower (steve.dower) *  |
Date: 2015-07-28 15:50 |
Updating to 3.8.11.0 now.
|
msg247532 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2015-07-28 17:04 |
I'm still +1 for an update in 2.7 as there are a lot of important bug fixes and a new SQLite version is 100% backwards compatible for my medium to big size (SQLAlchemy) SQLite applications.
|
msg247537 - (view) |
Author: Steve Dower (steve.dower) *  |
Date: 2015-07-28 18:38 |
Looks like Python 2.7 is still on SQLite 3.6.21, so the RM (Benjamin) will have to make a call on whether we take the upgrade.
|
msg247538 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2015-07-28 18:39 |
New changeset 1003746ee7a0 by Steve Dower in branch '3.4':
Issue #19450: Update Windows builds to use SQLite 3.8.11.0
https://hg.python.org/cpython/rev/1003746ee7a0
New changeset 4b37e81fcc54 by Steve Dower in branch '3.5':
Issue #19450: Update Windows builds to use SQLite 3.8.11.0
https://hg.python.org/cpython/rev/4b37e81fcc54
New changeset efb8132a7a22 by Steve Dower in branch 'default':
Issue #19450: Update Windows builds to use SQLite 3.8.11.0
https://hg.python.org/cpython/rev/efb8132a7a22
|
msg247560 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2015-07-29 06:30 |
New changeset 33dbcde76b3f by Ned Deily in branch '3.4':
Issue #19450: Update OS X installer builds to use SQLite 3.8.11.
https://hg.python.org/cpython/rev/33dbcde76b3f
New changeset ebe72984c1b9 by Ned Deily in branch '3.5':
Issue #19450: merge from 3.4
https://hg.python.org/cpython/rev/ebe72984c1b9
New changeset 1f4ef305b658 by Ned Deily in branch 'default':
Issue #19450: merge from 3.5
https://hg.python.org/cpython/rev/1f4ef305b658
|
msg261153 - (view) |
Author: Marc Schlaich (schlamar) * |
Date: 2016-03-03 09:18 |
This wasn't decided yet for 2.7 so I'm reopening it until a decision is made.
I'm still +1 for an update to 3.8.3.1 on Windows so that this is on par with the version on OSX and the version in Python 3.
|
msg261658 - (view) |
Author: Steve Dower (steve.dower) *  |
Date: 2016-03-12 16:10 |
Assigning to Benjamin to make the call for 2.7. Either close or assign it back if you want the update.
|
msg261800 - (view) |
Author: Benjamin Peterson (benjamin.peterson) *  |
Date: 2016-03-15 05:38 |
Let's make Windows use the same version as the Mac installer.
|
msg261935 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2016-03-17 21:42 |
New changeset fa68df1d5e65 by Steve Dower in branch '2.7':
Issue #19450: Update Windows builds to use SQLite 3.8.11.0.
https://hg.python.org/cpython/rev/fa68df1d5e65
|
msg261936 - (view) |
Author: Steve Dower (steve.dower) *  |
Date: 2016-03-17 21:56 |
Done. The test_sqlite tests were fine, but that's all I checked.
|
|
Date |
User |
Action |
Args |
2022-04-11 14:57:52 | admin | set | github: 63649 |
2016-03-17 21:56:39 | steve.dower | set | status: open -> closed resolution: fixed messages:
+ msg261936
|
2016-03-17 21:42:17 | python-dev | set | messages:
+ msg261935 |
2016-03-15 05:38:18 | benjamin.peterson | set | assignee: benjamin.peterson -> steve.dower messages:
+ msg261800 |
2016-03-13 00:41:39 | BreamoreBoy | set | nosy:
- BreamoreBoy
|
2016-03-12 16:10:46 | steve.dower | set | assignee: steve.dower -> benjamin.peterson messages:
+ msg261658 versions:
- Python 3.5, Python 3.6 |
2016-03-03 09:18:30 | schlamar | set | status: closed -> open resolution: fixed -> (no value) messages:
+ msg261153
|
2015-08-08 16:07:27 | steve.dower | set | status: open -> closed resolution: fixed stage: resolved |
2015-07-29 06:30:24 | python-dev | set | messages:
+ msg247560 |
2015-07-28 18:39:08 | python-dev | set | nosy:
+ python-dev messages:
+ msg247538
|
2015-07-28 18:38:26 | steve.dower | set | messages:
+ msg247537 |
2015-07-28 17:04:05 | schlamar | set | messages:
+ msg247532 |
2015-07-28 15:50:13 | steve.dower | set | messages:
+ msg247527 |
2015-07-27 21:24:45 | steve.dower | set | messages:
+ msg247487 versions:
+ Python 3.6 |
2015-07-27 20:05:51 | brett.cannon | set | nosy:
+ brett.cannon
messages:
+ msg247480 versions:
+ Python 3.5 |
2015-04-13 14:14:51 | zach.ware | set | assignee: steve.dower messages:
+ msg240609 |
2014-10-15 16:01:28 | pitrou | set | messages:
+ msg229469 |
2014-10-15 15:59:58 | schlamar | set | messages:
+ msg229468 |
2014-10-15 15:44:07 | pitrou | set | messages:
+ msg229464 |
2014-10-15 15:42:34 | schlamar | set | messages:
+ msg229463 |
2014-10-15 11:18:57 | BreamoreBoy | set | nosy:
+ zach.ware messages:
+ msg229433
|
2014-10-15 10:22:40 | pitrou | set | nosy:
+ pitrou messages:
+ msg229431
|
2014-10-15 10:20:26 | schlamar | set | messages:
+ msg229430 |
2014-07-15 17:37:31 | steve.dower | set | nosy:
+ benjamin.peterson
|
2014-07-15 17:24:44 | ned.deily | set | nosy:
+ ned.deily messages:
+ msg223127
|
2014-07-15 16:22:24 | steve.dower | set | nosy:
+ ghaering messages:
+ msg223118
|
2014-07-10 11:35:49 | berker.peksag | set | nosy:
+ steve.dower
|
2014-07-10 07:48:19 | loewis | set | nosy:
- loewis
|
2014-07-10 07:48:14 | loewis | set | messages:
+ msg222652 |
2014-07-09 20:47:07 | BreamoreBoy | set | nosy:
+ BreamoreBoy messages:
+ msg222638
|
2013-10-31 14:37:23 | schlamar | set | messages:
+ msg201820 |
2013-10-31 10:23:55 | loewis | set | messages:
+ msg201796 |
2013-10-30 22:33:47 | ned.deily | set | nosy:
+ loewis components:
+ Build, Windows, - Extension Modules
|
2013-10-30 11:12:38 | schlamar | create | |