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	27 Dec 2010 14:50:03 -0000
@@ -1354,7 +1354,7 @@ class SelectQuery extends Query implemen
   }
 
   public function groupBy($field) {
-    $this->group[] = $field;
+    $this->group[$field] = $field;
     return $this;
   }
 
@@ -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 = $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	27 Dec 2010 14:50:03 -0000
@@ -2033,10 +2033,13 @@ class DatabaseSelectComplexTestCase exte
 
     $this->assertEqual($count, 3, t('Counted the correct number of records.'));
 
-    // Test wth an alias.
+    // Use a column alias as, without one, 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();
 
