Index: includes/database/select.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/select.inc,v
retrieving revision 1.57
diff -u -p -r1.57 select.inc
--- includes/database/select.inc	23 Dec 2010 09:31:56 -0000	1.57
+++ includes/database/select.inc	24 Dec 2010 20:17:29 -0000
@@ -1362,7 +1362,7 @@ class SelectQuery extends Query implemen
     // Create our new query object that we will mutate into a count query.
     $count = clone($this);
 
-    $group_by = drupal_map_assoc(array_values($count->getGroupBy()));
+    $group_by = drupal_map_assoc($count->getGroupBy());
 
     if (!$count->distinct) {
       // When not executing a distinct query, we can zero-out existing fields
Index: modules/simpletest/tests/database_test.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/database_test.test,v
retrieving revision 1.108
diff -u -p -r1.108 database_test.test
--- modules/simpletest/tests/database_test.test	23 Dec 2010 09:31:56 -0000	1.108
+++ modules/simpletest/tests/database_test.test	24 Dec 2010 20:17:29 -0000
@@ -2033,10 +2033,13 @@ class DatabaseSelectComplexTestCase exte
 
     $this->assertEqual($count, 3, t('Counted the correct number of records.'));
 
-    // Test wth an alias.
+    // Using a column alias is necessary to testing the code.
+    // Without the alias, the query can succeed for the wrong reason.
     $query = db_select('test_task');
     $pid_field = $query->addField('test_task', 'pid', 'pid_alias');
+    $query->addExpression('COUNT(test_task.task)', 'count');
     $query->groupBy('pid_alias');
+    $query->orderBy('pid_alias', 'asc');
 
     $count = $query->countQuery()->execute()->fetchField();
 
