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