diff --git a/product/ERP5Catalog/tests/testERP5Catalog.py b/product/ERP5Catalog/tests/testERP5Catalog.py
index 6e6d3c5094b203ea929d0ca2634f69cfa3041869..f0907c6e7cb419b17297ff94984d64d00da5f5ac 100644
--- a/product/ERP5Catalog/tests/testERP5Catalog.py
+++ b/product/ERP5Catalog/tests/testERP5Catalog.py
@@ -3989,6 +3989,35 @@ VALUES
     self.assertEquals([x.getTitle() for x in
                       folder_object_list], real_title_list)
 
+  def test_countResultsUsesFromExpression(self, quiet=quiet):
+    if not quiet:
+      message = 'countResults uses from_expression'
+      ZopeTestCase._print('\n%s ' % message)
+      LOG('Testing... ',0,message)
+
+    person_module = self.getPersonModule()
+    module_len = len(person_module)
+    if module_len == 0:
+      person = person_module.newContent(portal_type='Person')
+      module_len = len(person_module)
+    module_uid = person_module.getUid()
+
+    get_transaction().commit()
+    self.tic()
+    catalog = self.getCatalogTool()
+
+    # Test sanity checks
+    self.assertEqual(len(catalog.searchResults(parent_uid=module_uid)),
+      module_len)
+    self.assertEqual(catalog.countResults(parent_uid=module_uid)[0][0],
+      module_len)
+
+    self.assertEquals(catalog.countResults(from_expression={
+      'catalog': '(SELECT sub_catalog.* FROM catalog AS sub_catalog' \
+        ' WHERE sub_catalog.parent_uid=%i)' \
+        ' AS catalog' % (module_uid, ),
+    })[0][0], module_len)
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestERP5Catalog))