#9407: The testModerationQueueContents test case does not work on databases
without a microsecond precision datetime data type
-------------------------------------------------+--------------------------
 Reporter:  egenix_viktor                        |       Owner:  nobody    
   Status:  new                                  |   Milestone:            
Component:  Database layer (models, ORM)         |     Version:  1.0       
 Keywords:  MSSQL microsecond datetime ordering  |       Stage:  Unreviewed
Has_patch:  0                                    |  
-------------------------------------------------+--------------------------
 Database server: MS SQL Server 2005

 Unit test: `regressiontests/moderation_view_tests`

 Test case: `ModerationQueueTests.testModerationQueueContents`

 Statement: `self.assertEqual(list(response.context[0]["comments"]), [c1,
 c2])`

 The test fails due to wrong row order, since
 `list(response.context[0]["comments"])` gives `[c2, c1]` instead of `[c1,
 c2]`.

 The SQL query generated (split into multiple lines for readability):

 {{{
 SELECT TOP 2
     [django_comments].[id],
     [django_comments].[content_type_id],
     [django_comments].[object_pk],
     [django_comments].[site_id],
     [django_comments].[user_id],
     [django_comments].[user_name],
     [django_comments].[user_email],
     [django_comments].[user_url],
     [django_comments].[comment],
     [django_comments].[submit_date],
     [django_comments].[ip_address],
     [django_comments].[is_public],
     [django_comments].[is_removed]
 FROM [django_comments]
 WHERE ([django_comments].[is_public] = %s AND
        [django_comments].[is_removed] = %s )
 ORDER BY [django_comments].[submit_date] ASC
 }}}

 Parameters:

 {{{
 (False, False)
 }}}

 Which will be translated to `(0, 0)`.

 The above test case depends on sorting the comments on their
 `submit_date`. Since MS SQL does not have a microsecond component in its
 `datetime` columns both comments are inserted with the same `submit_date`
 value with nearly 100% probability. It might cause a result set with
 unexpected record order, since the above query sorts the rows on a column
 containing identical values, therefore no sort order defined at all.

 So, this bug is due to the lack of microsecond precision of MS SQL
 Server's `datetime` data type. However, it works on SQLite, since SQLite
 can store the microseconds as well.

 The test case should be modified to insert the test data with different
 `submit_date` values or sort on the primary key as well as a secondary
 ordering.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/9407>
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 django-updates@googlegroups.com
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