Re: [jira] Updated: (CAY-1484) Flattened attribute queries are incorrectly generated

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sat Oct 09 2010 - 20:51:26 UTC

  • Next message: Michael Gentry: "Re: Build failed in Hudson: Cayenne-trunk » h2,JDK 1.5 (latest),Ubuntu #372"

    Hi Xenia,

    Thanks for looking into this. I reviewed the patch - looks correct to me (the unit test fails with an error before changes to SelectTranslator, and passes after doing the join stack reset), so please feel free to use your new committer powers to apply it. A few notes:

    (1) Don't forget to add the newly generated CompoundPaintingLongNames.java and _CompoundPaintingLongNames.java (not included in the patch).

    (2) I think we may even go with a more general fix - instead of conditionally resetting the stack after a flattened attribute, always do a reset before any attribute or relationship:

    diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java b/framework/cayen
    index 4ddee21..0d1c64f 100644
    --- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
    +++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
    ..-364,6 +365,8 @@ public class SelectTranslator extends QueryAssembler {
                 }
     
                 private void visitRelationship(ArcProperty property) {
    + resetJoinStack();
    +
                     ObjRelationship rel = property.getRelationship();
                     DbRelationship dbRel = rel.getDbRelationships().get(0);

    The reset is a rather cheap operation, and the above seems to be just a little more consistent (hmm... I wonder if not resetting it inside 'visitRelationship' would result in bugs similar to CAY-1484 for entities with multiple flattened relationships??)

    Andrus

    On Oct 8, 2010, at 3:23 PM, Ksenia Khailenko (JIRA) wrote:

    >
    > [ https://issues.apache.org/jira/browse/CAY-1484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
    >
    > Ksenia Khailenko updated CAY-1484:
    > ----------------------------------
    >
    > Attachment: CAY-1484.-Fixed-using-of-incorrect-alias.patch
    >
    >> Flattened attribute queries are incorrectly generated
    >> -----------------------------------------------------
    >>
    >> Key: CAY-1484
    >> URL: https://issues.apache.org/jira/browse/CAY-1484
    >> Project: Cayenne
    >> Issue Type: Bug
    >> Components: Core Library
    >> Affects Versions: 3.0.1
    >> Environment: Gentoo linux
    >> MySQL 5.1
    >> java version "1.6.0_20"
    >> Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
    >> Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
    >> Reporter: Misha Doronin
    >> Attachments: bugdemo_maven_derby.zip, bugdemo_maven_derby_nobug.zip, CAY-1484.-Fixed-using-of-incorrect-alias.patch, CayenneBugDemo.zip
    >>
    >> Original Estimate: 1h
    >> Remaining Estimate: 1h
    >>
    >> Attached eclipse project demonstrating issue, including cayenne model
    >> When creating database structure like:
    >> table1
    >> t1key
    >> t1value
    >> t2keyref
    >> table2
    >> t2key
    >> t2value
    >> t3keyref
    >> table3
    >> t3key
    >> t3value
    >> and cayenne model with flattened attribute table3.t3value in table2
    >> it produces incorrect join query to table2 and 3:
    >> SELECT t1.t3value, t1.t2key, t0.t2value, t0.t3keyref, t0.t2key FROM testschema.table2 t0 JOIN testschema.table3 t1 ON (t0.t3key = t1.t3keyref) WHERE t0.t2key = ?
    >> Note t1.t2key, which obviously shouldn't be there and produces error.
    >
    > --
    > This message is automatically generated by JIRA.
    > -
    > You can reply to this email to add a comment to the issue online.
    >
    >



    This archive was generated by hypermail 2.0.0 : Sat Oct 09 2010 - 20:51:55 UTC