Code in PredicateList can be enhanced to use variant type of expressions while determining whether a predicate qualifies to be a search clause or not.
Currently code checks for ConstantNode or ParameterNode directly. It should also be possible to enhance this logic to cover constant expressions so that predicates like col = upper('ES5') would also be considered as search clauses. For a customer query in question, having col='ES5' in the query completes the query in about 20 seconds, where as col=upper('ES5') runs for a looong time. (more than several hours)