summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/field/modules/field_sql_storage/field_sql_storage.module8
-rw-r--r--modules/simpletest/tests/database_test.test13
2 files changed, 19 insertions, 2 deletions
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.module b/modules/field/modules/field_sql_storage/field_sql_storage.module
index b0d0ed4c4..8229c523f 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.module
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.module
@@ -539,8 +539,12 @@ function field_sql_storage_field_storage_query($field_id, $conditions, $options)
// For a count query, return the count now.
if ($options['count']) {
- $query->addExpression('COUNT(DISTINCT e.type,t.entity_id,t.revision_id)');
- return $query->execute()->fetchField();
+ return $query
+ ->fields('t', array('etid', 'entity_id', 'revision_id'))
+ ->distinct()
+ ->countQuery()
+ ->execute()
+ ->fetchField();
}
// For a data query, add fields.
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index 19ecbe6e9..cf569f7cc 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -1909,6 +1909,19 @@ class DatabaseSelectComplexTestCase extends DatabaseTestCase {
}
/**
+ * Test that we can generate a count query from a query with distinct.
+ */
+ function testCountQueryDistinct() {
+ $query = db_select('test_task');
+ $task_field = $query->addField('test_task', 'task');
+ $query->distinct();
+
+ $count = $query->countQuery()->execute()->fetchField();
+
+ $this->assertEqual($count, 6, t('Counted the correct number of records.'));
+ }
+
+ /**
* Confirm that we can properly nest conditional clauses.
*/
function testNestedConditions() {