FAQ
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.

Search Discussions

  • Andrus Adamchik at Oct 11, 2010 at 10:15 am
    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.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupdev @
categoriescayenne
postedOct 9, '10 at 8:51p
activeOct 11, '10 at 10:15a
posts2
users1
websitecayenne.apache.org

1 user in discussion

Andrus Adamchik: 2 posts

People

Translate

site design / logo © 2022 Grokbase