#10031: Recommend against Windows/SQLite < 3.3.6 much more strongly
------------------------------------+---------------------------------------
Reporter: russellm | Owner: nobody
Status: new | Milestone: 1.1
Component: Documentation | Version: SVN
Resolution: | Keywords:
Stage: Accepted | Has_patch: 0
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
------------------------------------+---------------------------------------
Changes (by jacob):
* summary: Test failures with DateFields and DecimalField under Windows
and Python 2.5 => Recommend against
Windows/SQLite < 3.3.6 much more strongly
* stage: Unreviewed => Accepted
* component: Database layer (models, ORM) => Documentation
* milestone: => 1.1
Old description:
> The aggregation and aggregation_regress system tests fail due to problems
> with DateFields and DecimalFields under Windows and Python 2.5
>
> The problem manifests as the following failures:
> {{{
> ======================================================================
> FAIL: Doctest: modeltests.aggregation.models.__test__.API_TESTS
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "d:\u\kmt\django\aggregation\django\test\_doctest.py", line 2180,
> in runTest
> raise self.failureException(self.format_failure(new.getvalue()))
> AssertionError: Failed doctest test for
> modeltests.aggregation.models.__test__.API_TESTS
> File
> "D:\u\kmt\django\aggregation\tests\modeltests\aggregation\models.py",
> line unknown line number, in API_TESTS
>
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\modeltests\aggregation\models.py",
> line ?, in modeltests.aggregation.models.__test__.API_TESTS
> Failed example:
> Book.objects.filter(pk=1).annotate(mean_age=Avg('authors__age')).values()
> Expected:
> [{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
> to Django: Web Development Done Right', 'pubdate': datetime.date(2007,
> 12, 6), 'price': Decimal("30..."), 'id': 1, 'publisher_id': 1, 'pages':
> 447, 'mean_age': 34.5}]
> Got:
> [{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
> to Django: Web Development Done Right', 'pubdate': u'2007-12-06',
> 'price': 30, 'id': 1, 'publisher_id': 1, 'pages': 447, 'mean_age': 34.5}]
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\modeltests\aggregation\models.py",
> line ?, in modeltests.aggregation.models.__test__.API_TESTS
> Failed example:
> Book.objects.filter(pk=1).values().annotate(mean_age=Avg('authors__age'))
> Expected:
> [{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
> to Django: Web Development Done Right', 'pubdate': datetime.date(2007,
> 12, 6), 'price': Decimal("30..."), 'id': 1, 'publisher_id': 1, 'pages':
> 447, 'mean_age': 34.5}]
> Got:
> [{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
> to Django: Web Development Done Right', 'pubdate': u'2007-12-06',
> 'price': 30, 'id': 1, 'publisher_id': 1, 'pages': 447, 'mean_age': 34.5}]
>
> ======================================================================
> FAIL: Doctest:
> regressiontests.aggregation_regress.models.__test__.API_TESTS
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "d:\u\kmt\django\aggregation\django\test\_doctest.py", line 2180,
> in runTest
> raise self.failureException(self.format_failure(new.getvalue()))
> AssertionError: Failed doctest test for
> regressiontests.aggregation_regress.models.__test__.API_TESTS
> File
> "D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
> line unknown line number, in API_TESTS
>
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
> line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
> Failed example:
> sorted(Book.objects.all().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost'
> : 'price * .5'}).get(pk=2).__dict__.items())
> Expected:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
> ...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
> Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
> ('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
> 3.0)]
> Got:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
> ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
> Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
> ('publisher_id', 2), ('rating', 3.0)]
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
> line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
> Failed example:
> sorted(Book.objects.all().extra(select={'manufacture_cost' : 'price *
> .5'}).annotate(mean_auth_age=Avg('authors__age')).get(pk=2).__dict__.items())
> Expected:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
> ...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
> Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
> ('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
> 3.0)]
> Got:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
> ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
> Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
> ('publisher_id', 2), ('rating', 3.0)]
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
> line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
> Failed example:
> sorted(Book.objects.all().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost'
> : 'price * .5'}).values().get(pk=2).items())
> Expected:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
> ...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
> Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
> ('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
> 3.0)]
> Got:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
> ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
> Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
> ('publisher_id', 2), ('rating', 3.0)]
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
> line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
> Failed example:
> sorted(Book.objects.all().values().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost'
> : 'price * .5'}).get(pk=2).items())
> Expected:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
> ...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
> Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
> ('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
> 3.0)]
> Got:
> [('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
> ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
> Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
> ('publisher_id', 2), ('rating', 3.0)]
> ----------------------------------------------------------------------
> File
> "D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
> line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
> Failed example:
> Book.objects.values('price').annotate(oldest=Max('authors__age')).order_by('oldest',
> 'price').annotate(Max('publisher__num_awards'))
> Expected:
> [{'price': Decimal("30..."), 'oldest': 35,
> 'publisher__num_awards__max': 3}, {'price': Decimal("29.69"), 'oldest':
> 37, 'publisher__num_awards__max': 7}, {'price': Decimal("23.09"),
> 'oldest': 45, 'publisher__num_awards__max': 1}, {'price':
> Decimal("75..."), 'oldest': 57, 'publisher__num_awards__max': 9},
> {'price': Decimal("82.8..."), 'oldest': 57, 'publisher__num_awards__max':
> 7}]
> Got:
> [{'price': 30, 'oldest': 35, 'publisher__num_awards__max': 3},
> {'price': 29.690000000000001, 'oldest': 37, 'publisher__num_awards__max':
> 7}, {'price': 23.09, 'oldest': 45, 'publisher__num_awards__max': 1},
> {'price': 75, 'oldest': 57, 'publisher__num_awards__max': 9}, {'price':
> 82.799999999999997, 'oldest': 57, 'publisher__num_awards__max': 7}]
>
> ----------------------------------------------------------------------
> }}}
>
> This doesn't appear to affect other versions of Python (2.4 or 2.6), or
> any version of Python on Linux/OS X. Only Win/Py2.5 appears to be
> affected.
New description:
This is yet another Windows/SQLite 3.3.4 bug; see the first comment below.
Original ticket follows
----
The aggregation and aggregation_regress system tests fail due to problems
with DateFields and DecimalFields under Windows and Python 2.5
The problem manifests as the following failures:
{{{
======================================================================
FAIL: Doctest: modeltests.aggregation.models.__test__.API_TESTS
----------------------------------------------------------------------
Traceback (most recent call last):
File "d:\u\kmt\django\aggregation\django\test\_doctest.py", line 2180,
in runTest
raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for
modeltests.aggregation.models.__test__.API_TESTS
File
"D:\u\kmt\django\aggregation\tests\modeltests\aggregation\models.py", line
unknown line number, in API_TESTS
----------------------------------------------------------------------
File "D:\u\kmt\django\aggregation\tests\modeltests\aggregation\models.py",
line ?, in modeltests.aggregation.models.__test__.API_TESTS
Failed example:
Book.objects.filter(pk=1).annotate(mean_age=Avg('authors__age')).values()
Expected:
[{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
to Django: Web Development Done Right', 'pubdate': datetime.date(2007, 12,
6), 'price': Decimal("30..."), 'id': 1, 'publisher_id': 1, 'pages': 447,
'mean_age': 34.5}]
Got:
[{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
to Django: Web Development Done Right', 'pubdate': u'2007-12-06', 'price':
30, 'id': 1, 'publisher_id': 1, 'pages': 447, 'mean_age': 34.5}]
----------------------------------------------------------------------
File "D:\u\kmt\django\aggregation\tests\modeltests\aggregation\models.py",
line ?, in modeltests.aggregation.models.__test__.API_TESTS
Failed example:
Book.objects.filter(pk=1).values().annotate(mean_age=Avg('authors__age'))
Expected:
[{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
to Django: Web Development Done Right', 'pubdate': datetime.date(2007, 12,
6), 'price': Decimal("30..."), 'id': 1, 'publisher_id': 1, 'pages': 447,
'mean_age': 34.5}]
Got:
[{'rating': 4.5, 'isbn': u'159059725', 'name': u'The Definitive Guide
to Django: Web Development Done Right', 'pubdate': u'2007-12-06', 'price':
30, 'id': 1, 'publisher_id': 1, 'pages': 447, 'mean_age': 34.5}]
======================================================================
FAIL: Doctest:
regressiontests.aggregation_regress.models.__test__.API_TESTS
----------------------------------------------------------------------
Traceback (most recent call last):
File "d:\u\kmt\django\aggregation\django\test\_doctest.py", line 2180,
in runTest
raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for
regressiontests.aggregation_regress.models.__test__.API_TESTS
File
"D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
line unknown line number, in API_TESTS
----------------------------------------------------------------------
File
"D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
Failed example:
sorted(Book.objects.all().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost'
: 'price * .5'}).get(pk=2).__dict__.items())
Expected:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
3.0)]
Got:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
('publisher_id', 2), ('rating', 3.0)]
----------------------------------------------------------------------
File
"D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
Failed example:
sorted(Book.objects.all().extra(select={'manufacture_cost' : 'price *
.5'}).annotate(mean_auth_age=Avg('authors__age')).get(pk=2).__dict__.items())
Expected:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
3.0)]
Got:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
('publisher_id', 2), ('rating', 3.0)]
----------------------------------------------------------------------
File
"D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
Failed example:
sorted(Book.objects.all().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost'
: 'price * .5'}).values().get(pk=2).items())
Expected:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
3.0)]
Got:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
('publisher_id', 2), ('rating', 3.0)]
----------------------------------------------------------------------
File
"D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
Failed example:
sorted(Book.objects.all().values().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost'
: 'price * .5'}).get(pk=2).items())
Expected:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost',
...11.545...), ('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself
Django in 24 Hours'), ('pages', 528), ('price', Decimal("23.09")),
('pubdate', datetime.date(2008, 3, 3)), ('publisher_id', 2), ('rating',
3.0)]
Got:
[('id', 2), ('isbn', u'067232959'), ('manufacture_cost', 11.545),
('mean_auth_age', 45.0), ('name', u'Sams Teach Yourself Django in 24
Hours'), ('pages', 528), ('price', 23.09), ('pubdate', u'2008-03-03'),
('publisher_id', 2), ('rating', 3.0)]
----------------------------------------------------------------------
File
"D:\u\kmt\django\aggregation\tests\regressiontests\aggregation_regress\models.py",
line ?, in regressiontests.aggregation_regress.models.__test__.API_TESTS
Failed example:
Book.objects.values('price').annotate(oldest=Max('authors__age')).order_by('oldest',
'price').annotate(Max('publisher__num_awards'))
Expected:
[{'price': Decimal("30..."), 'oldest': 35,
'publisher__num_awards__max': 3}, {'price': Decimal("29.69"), 'oldest':
37, 'publisher__num_awards__max': 7}, {'price': Decimal("23.09"),
'oldest': 45, 'publisher__num_awards__max': 1}, {'price':
Decimal("75..."), 'oldest': 57, 'publisher__num_awards__max': 9},
{'price': Decimal("82.8..."), 'oldest': 57, 'publisher__num_awards__max':
7}]
Got:
[{'price': 30, 'oldest': 35, 'publisher__num_awards__max': 3},
{'price': 29.690000000000001, 'oldest': 37, 'publisher__num_awards__max':
7}, {'price': 23.09, 'oldest': 45, 'publisher__num_awards__max': 1},
{'price': 75, 'oldest': 57, 'publisher__num_awards__max': 9}, {'price':
82.799999999999997, 'oldest': 57, 'publisher__num_awards__max': 7}]
----------------------------------------------------------------------
}}}
This doesn't appear to affect other versions of Python (2.4 or 2.6), or
any version of Python on Linux/OS X. Only Win/Py2.5 appears to be
affected.
Comment:
I agree: we should just change the docs to be more insistant that using
SQLite < 3.3.6 is a Bad Idea.
--
Ticket URL: <http://code.djangoproject.com/ticket/10031#comment:2>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---