Michael Manfre avatar Michael Manfre committed 07396e8

Issue 103 - Use NEWID() for random order_by queries so multiple, identical queries return different randomly ordered resultsets.

Comments (0)

Files changed (2)

sqlserver_ado/operations.py

         return '[%s]' % name
 
     def random_function_sql(self):
-        return 'RAND()'
+        return 'NEWID()'
 
     def regex_lookup(self, lookup_type):
         # Case sensitivity

tests/test_main/regressiontests/tests.py

 
         dates = Bug93Table.objects.filter(dt__year='2010')
         self.assertTrue(dates.count() == 2)
+
+class RandomOrderTestCase(TestCase):
+    def testRandomOrder(self):
+        """
+        Check that multiple results with order_by('?') return
+        different orders.
+        """
+        for x in xrange(1,20):
+            Bug69Table1.objects.create(id=x)
+
+        a = list(Bug69Table1.objects.all().order_by('?'))
+        b = list(Bug69Table1.objects.all().order_by('?'))
+        
+        self.assertNotEquals(a, b)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.