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

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Oct 11 2010 - 10:15:24 UTC

  • Next message: Andrus Adamchik: "Re: Build failed in Hudson: Cayenne-30 » JDK 1.5 (latest),Ubuntu #107"

    Xenia,

    I saw your commit - thanks, and congrats on your first Cayenne commit in the new role :-)

    A few notes:

    1. We log all fixed Jiras under docs/doc/src/main/resources/RELEASE-NOTES.txt . Once this is done, you can go ahead and close the Jira.

    2. Since we support 2 Cayenne branches - 3.0 and 3.1 (== trunk), all fixes to 3.0 should also be cloned to trunk, so that they do not disappear from the future releases.

    Cheers,
    Andrus

    On Oct 9, 2010, at 11:51 PM, Andrus Adamchik wrote:

    > 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 : Mon Oct 11 2010 - 10:15:59 UTC