#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
-~----------~----~----~----~------~----~------~--~---

Reply via email to