You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Nikita Timofeev (Jira)" <ji...@apache.org> on 2022/11/29 09:09:00 UTC

[jira] [Assigned] (CAY-2764) Split expressions do not work with DB relationships

     [ https://issues.apache.org/jira/browse/CAY-2764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nikita Timofeev reassigned CAY-2764:
------------------------------------

    Assignee: Nikita Timofeev

> Split expressions do not work with DB relationships
> ---------------------------------------------------
>
>                 Key: CAY-2764
>                 URL: https://issues.apache.org/jira/browse/CAY-2764
>             Project: Cayenne
>          Issue Type: Bug
>    Affects Versions: 4.2.RC1
>            Reporter: Andrus Adamchik
>            Assignee: Nikita Timofeev
>            Priority: Major
>             Fix For: 4.2, 5.0.M1
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> As a workaround for CAY-2763,  I tried to use a DB expression with split paths ("db:|dbr11.dbr12"), building the expression on my own, using ""ExpressionFactory.matchAllExp(String, Collection)" as a template, but replacing all ASTObjPath with ASTDbPath. This doesn't work:
> {noformat}
> [19/Oct/2022:10:08:30,910] bootique-http-42 WARN olD0dqQ-80000000 test_id i.a.c.s.CayenneRuntimeExceptionMapper: Cayenne exception
> org.apache.cayenne.CayenneRuntimeException: [v.4.2.RC1 Jun 03 2022 10:10:32] Query exception.
> at org.apache.cayenne.access.DataDomainQueryAction.nextQueryException(DataDomainQueryAction.java:622)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:279)
> at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:468)
> at org.apache.cayenne.access.DataDomainQueryAction.lambda$runQueryInTransaction$1(DataDomainQueryAction.java:444)
> at org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInTransaction(DefaultTransactionManager.java:180)
> at org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInNewTransaction(DefaultTransactionManager.java:152)
> at org.apache.cayenne.tx.DefaultTransactionManager$NestedTransactionHandler.handle(DefaultTransactionManager.java:95)
> at org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:62)
> at org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:40)
> at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:443)
> at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:127)
> at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:570)
> at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:819)
> at io.bootique.cayenne.v42.junit5.tester.QueryCounter.onQuery(QueryCounter.java:45)
> at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:818)
> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:562)
> at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:406)
> at org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:107)
> at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:94)
> at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:960)
> at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:949)
> at org.apache.cayenne.BaseContext.select(BaseContext.java:307)
> Caused by: java.lang.IllegalStateException: Unable to resolve path: dbr11#split0_0.dbr12
> at org.apache.cayenne.access.translator.select.DbPathProcessor.processNormalAttribute(DbPathProcessor.java:63)
> at org.apache.cayenne.access.translator.select.PathProcessor.process(PathProcessor.java:79)
> at org.apache.cayenne.access.translator.select.PathTranslator.lambda$translatePath$1(PathTranslator.java:57)
> at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1737)
> at org.apache.cayenne.access.translator.select.PathTranslator.translatePath(PathTranslator.java:56)
> at org.apache.cayenne.access.translator.select.PathTranslator.translatePath(PathTranslator.java:61)
> at org.apache.cayenne.access.translator.select.PathTranslator.translatePath(PathTranslator.java:65)
> at org.apache.cayenne.access.translator.select.QualifierTranslator.expressionNodeToSqlNode(QualifierTranslator.java:160)
> at org.apache.cayenne.access.translator.select.QualifierTranslator.startNode(QualifierTranslator.java:118)
> at org.apache.cayenne.exp.Expression.traverse(Expression.java:568)
> at org.apache.cayenne.exp.Expression.traverse(Expression.java:577)
> at org.apache.cayenne.exp.Expression.traverse(Expression.java:577)
> at org.apache.cayenne.exp.Expression.traverse(Expression.java:577)
> at org.apache.cayenne.exp.Expression.traverse(Expression.java:557)
> at org.apache.cayenne.access.translator.select.QualifierTranslator.translate(QualifierTranslator.java:96)
> at org.apache.cayenne.access.translator.select.QualifierTranslationStage.perform(QualifierTranslationStage.java:52)
> at org.apache.cayenne.access.translator.select.DefaultSelectTranslator.translate(DefaultSelectTranslator.java:98)
> at org.apache.cayenne.access.translator.select.DefaultSelectTranslator.getSql(DefaultSelectTranslator.java:104)
> at org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:87)
> at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
> ... 105 common frames omitted
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)