diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py
index 55ec71a72f9424f39331cd8b8a6d251c6913d228..aabc00daf3d39046d62774915c20c05764fa6464 100644
--- a/product/ZSQLCatalog/SQLCatalog.py
+++ b/product/ZSQLCatalog/SQLCatalog.py
@@ -2489,36 +2489,40 @@ class Catalog(Folder,
     """
     return getComparisonOperatorInstance(operator)
 
-  PROPAGATE_PARAMETER_SET = ('selection_domain',
-                             'selection_report',
-                             # XXX should get the next parameters from
-                             # the ZSQLMethod class itself
-                             'zsql_brain')
-  def _queryResults(self, REQUEST=None, build_sql_query_method=None, **kw):
-    """ Returns a list of brains from a set of constraints on variables """
+
+  def queryResults(
+        self,
+        sql_method,
+        REQUEST=None,
+        src__=0,
+        build_sql_query_method=None,
+        selection_domain=None,
+        selection_report=None,
+        # XXX should get zsql_brain from ZSQLMethod class itself
+        zsql_brain=None,
+        implicit_join=False,
+        **kw
+      ):
     if build_sql_query_method is None:
       build_sql_query_method = self.buildSQLQuery
-    kw.setdefault('implicit_join', False)
-    query = build_sql_query_method(REQUEST=REQUEST, **kw)
-    # XXX: decide if this should be made normal
-    ENFORCE_SEPARATION = True
-    if ENFORCE_SEPARATION:
-      # Some parameters must be propagated:
-      kw = {name: kw[name] for name in self.PROPAGATE_PARAMETER_SET
-                           if name in kw}
-    kw['where_expression'] = query['where_expression']
-    kw['sort_on'] = query['order_by_expression']
-    kw['from_table_list'] = query['from_table_list']
-    kw['from_expression'] = query['from_expression']
-    kw['limit_expression'] = query['limit_expression']
-    kw['select_expression'] = query['select_expression']
-    kw['group_by_expression'] = query['group_by_expression']
-    # XXX: why not kw.update(query)??
-    return kw
-
-  def queryResults(self, sql_method, REQUEST=None, src__=0, build_sql_query_method=None, **kw):
-    sql_kw = self._queryResults(REQUEST=REQUEST, build_sql_query_method=build_sql_query_method, **kw)
-    return sql_method(src__=src__, **sql_kw)
+    query = build_sql_query_method(
+      REQUEST=REQUEST,
+      implicit_join=implicit_join,
+      **kw
+    )
+    return sql_method(
+      src__=src__,
+      zsql_brain=zsql_brain,
+      selection_domain=selection_domain,
+      selection_report=selection_report,
+      where_expression=query['where_expression'],
+      select_expression=query['select_expression'],
+      group_by_expression=query['group_by_expression'],
+      from_table_list=query['from_table_list'],
+      from_expression=query['from_expression'],
+      sort_on=query['order_by_expression'],
+      limit_expression=query['limit_expression'],
+    )
 
   def getSearchResultsMethod(self):
     return getattr(self, self.sql_search_results)
diff --git a/product/ZSQLCatalog/tests/testSQLCatalog.py b/product/ZSQLCatalog/tests/testSQLCatalog.py
index 3a7b809a4b0b67b900654334048b2c7679a7bbcb..41a5b4c3d5a2c9a0745d22c71f145048c2c59d37 100644
--- a/product/ZSQLCatalog/tests/testSQLCatalog.py
+++ b/product/ZSQLCatalog/tests/testSQLCatalog.py
@@ -226,7 +226,7 @@ class TestSQLCatalog(ERP5TypeTestCase):
 
   def catalog(self, reference_tree, kw, check_search_text=True,
       check_select_expression=True, expected_failure=False):
-    reference_param_dict = self._catalog._queryResults(query_table='foo', **kw)
+    reference_param_dict = self._catalog.buildSQLQuery(query_table='foo', **kw)
     query = self._catalog.buildEntireQuery(kw).query
     assertEqual = self.assertEqual
     if expected_failure:
@@ -236,7 +236,7 @@ class TestSQLCatalog(ERP5TypeTestCase):
     search_text = query.asSearchTextExpression(self._catalog)
     if check_search_text:
       # XXX: sould "keyword" be always used for search text searches ?
-      search_text_param_dict = self._catalog._queryResults(query_table='foo', keyword=search_text)
+      search_text_param_dict = self._catalog.buildSQLQuery(query_table='foo', keyword=search_text)
       if not check_select_expression:
         search_text_param_dict.pop('select_expression')
         reference_param_dict.pop('select_expression')