diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py
index 1ac57db5ab6ac24691125dd0b4781170cfb4f9ac..469b752899e4e28a5f0c0aa703b7383a8e4511f0 100644
--- a/product/ZSQLCatalog/SQLCatalog.py
+++ b/product/ZSQLCatalog/SQLCatalog.py
@@ -77,6 +77,13 @@ except ImportError:
   enableReadOnlyTransactionCache = doNothing
   disableReadOnlyTransactionCache = doNothing
  
+try:
+  from ZPublisher.HTTPRequest import record
+  dict_type_list = (dict, record)
+except ImportError:
+  dict_type_list = (dict, )
+   
+     
 UID_BUFFER_SIZE = 300
 OBJECT_LIST_SIZE = 300
 MAX_PATH_LEN = 255
@@ -1782,7 +1789,7 @@ class Catalog(Folder,
         new_k = k[0:-usage_len]
         if not new_kw.has_key(new_k):
           new_kw[new_k] = {}
-        if not isinstance(new_kw[new_k], dict):
+        if not isinstance(new_kw[new_k], dict_type_list):
           new_kw[new_k] = {'query': new_kw[new_k]}
         split_v = v.split(':')
         new_kw[new_k] = {split_v[0]: split_v[1]}
@@ -1832,7 +1839,7 @@ class Catalog(Folder,
             current_query = search_key_instance.buildQuery('', value)
           if hasattr(current_query, 'order_by'): query_group_by_list = current_query.order_by
         else:
-          if isinstance(value, dict):
+          if isinstance(value, dict_type_list):
             new_query_dict = value.copy()
             if 'query' in new_query_dict:
               new_query_dict[key] = new_query_dict.pop('query')