diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/field/modules/field_sql_storage/field_sql_storage.module | 8 | ||||
-rw-r--r-- | modules/simpletest/tests/database_test.test | 13 |
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() { |