This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch STABLE-4.2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/STABLE-4.2 by this push: new 5c4344214 CAY-2805 Stop calling exp parser internally 5c4344214 is described below commit 5c43442140ffbe2d6d2c7dad54f52a868609968e Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Tue Apr 11 16:22:42 2023 +0300 CAY-2805 Stop calling exp parser internally --- RELEASE-NOTES.txt | 1 + .../apache/cayenne/access/PrefetchProcessorJointNode.java | 2 +- .../access/translator/select/PrefetchNodeStage.java | 14 ++++++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 7a8f439be..a23c21036 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -14,6 +14,7 @@ Date: Changes/New Features: CAY-2802 Upgrade Gradle to 7.6.1 +CAY-2805 Stop calling exp parser internally Bug Fixes: diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java index 9d72ddcf3..7c1296346 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java @@ -161,7 +161,7 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode { final String prefix; if (jointRoot != this) { - Expression objectPath = ExpressionFactory.exp(getPath(jointRoot)); + Expression objectPath = ExpressionFactory.pathExp(getPath(jointRoot)); ASTPath translated = (ASTPath) ((PrefetchProcessorNode) jointRoot) .getResolver() .getEntity() diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java index 3aa795df1..924a6e916 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java @@ -77,7 +77,7 @@ class PrefetchNodeStage implements TranslationStage { boolean warnPrefetchWithLimit = false; for(PrefetchTreeNode node : prefetch.adjacentJointNodes()) { - Expression prefetchExp = ExpressionFactory.exp(node.getPath()); + Expression prefetchExp = ExpressionFactory.pathExp(node.getPath()); ASTDbPath dbPrefetch = (ASTDbPath) objEntity.translateToDbPath(prefetchExp); final String dbPath = dbPrefetch.getPath(); DbEntity dbEntity = objEntity.getDbEntity(); @@ -124,10 +124,16 @@ class PrefetchNodeStage implements TranslationStage { PathTranslator pathTranslator = context.getPathTranslator(); PrefetchSelectQuery<?> prefetchSelectQuery = (PrefetchSelectQuery<?>) select; for(String prefetchPath: prefetchSelectQuery.getResultPaths()) { - ASTDbPath pathExp = (ASTDbPath) context.getMetadata().getClassDescriptor().getEntity() - .translateToDbPath(ExpressionFactory.exp(prefetchPath)); + String path; + if(prefetchPath.startsWith(ASTDbPath.DB_PREFIX)) { + path = prefetchPath.substring(ASTDbPath.DB_PREFIX.length()); + } else { + Expression exp = ExpressionFactory.pathExp(prefetchPath); + ASTDbPath pathExp = (ASTDbPath) context.getMetadata().getClassDescriptor().getEntity() + .translateToDbPath(exp); + path = pathExp.getPath(); + } - String path = pathExp.getPath(); PathTranslationResult result = pathTranslator .translatePath(context.getMetadata().getDbEntity(), path); result.getDbRelationship().ifPresent(r -> {