Description
This is a performance optimization suggestion. Just noticed during profiling a few minor "hotspots" due to calling "ExpressionFactory.exp()" inside the following methods in the Cayenne core:
- PrefetchProcessorJointNode.buildRowMapping(..)
- DefaultSelectTranslator.appendQueryColumns(..)
- SelectQueryMetadata.buildEntityResultForColumn(..)
This results in exp parser invocation, which is fairly slow. At the same time, in all these places the expression is known to be a path (either DB or OBJ). So we can take a shortcut and apply a faster parsing function to generate ASTObjPath or ASTDbPath.