FAQ
Ordering across relationship should use inner join
--------------------------------------------------

Key: CAY-928
URL: https://issues.apache.org/cayenne/browse/CAY-928
Project: Cayenne
Issue Type: Bug
Components: Cayenne Core Library
Reporter: Ari Maniatis
Assignee: Andrus Adamchik
Priority: Critical


When ordering across a relationship like this:

SelectQuery qual = new SelectQuery(Painting.class);
qual.addOrdering(new Ordering(Painting.ARTIST_PROPERTY+"."+Artist.NAME_PROPERTY, true, true));

the SQL looks like this:

SELECT t0.id FROM Painting t0, Artist t1 WHERE t0.artistId = t1.id ORDER BY t1.name

but it should be like this:

SELECT t0.id FROM Painting t0 LEFT JOIN Artist t1 ON t0.artistId = t1.id ORDER BY t1.name

What this means is that at the moment Cayenne will exclude from this query all paintings with no related artist.

Regardless of how one thinks NULLs should be sorted in this relationship, the addition of a new Ordering in Cayenne shouldn't change the number of records returned from the SelectQuery.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Search Discussions

  • Anonymous at Dec 3, 2007 at 8:27 am
    [ https://issues.apache.org/cayenne/browse/CAY-928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Ari Maniatis updated CAY-928:
    -----------------------------

    Summary: Ordering across relationship should use left join (was: Ordering across relationship should use inner join)
    Ordering across relationship should use left join
    -------------------------------------------------

    Key: CAY-928
    URL: https://issues.apache.org/cayenne/browse/CAY-928
    Project: Cayenne
    Issue Type: Bug
    Components: Cayenne Core Library
    Reporter: Ari Maniatis
    Assignee: Andrus Adamchik
    Priority: Critical

    When ordering across a relationship like this:
    SelectQuery qual = new SelectQuery(Painting.class);
    qual.addOrdering(new Ordering(Painting.ARTIST_PROPERTY+"."+Artist.NAME_PROPERTY, true, true));
    the SQL looks like this:
    SELECT t0.id FROM Painting t0, Artist t1 WHERE t0.artistId = t1.id ORDER BY t1.name
    but it should be like this:
    SELECT t0.id FROM Painting t0 LEFT JOIN Artist t1 ON t0.artistId = t1.id ORDER BY t1.name
    What this means is that at the moment Cayenne will exclude from this query all paintings with no related artist.
    Regardless of how one thinks NULLs should be sorted in this relationship, the addition of a new Ordering in Cayenne shouldn't change the number of records returned from the SelectQuery.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Anonymous at Dec 3, 2007 at 8:33 am
    [ https://issues.apache.org/cayenne/browse/CAY-928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12613 ]

    Andrus Adamchik commented on CAY-928:
    -------------------------------------

    This can only be implemented when we change a SelectQuery translator to use JOIN syntax (instead key1 = key2) ... I think we should do that at some point.

    Ordering across relationship should use left join
    -------------------------------------------------

    Key: CAY-928
    URL: https://issues.apache.org/cayenne/browse/CAY-928
    Project: Cayenne
    Issue Type: Bug
    Components: Cayenne Core Library
    Reporter: Ari Maniatis
    Assignee: Andrus Adamchik
    Priority: Critical

    When ordering across a relationship like this:
    SelectQuery qual = new SelectQuery(Painting.class);
    qual.addOrdering(new Ordering(Painting.ARTIST_PROPERTY+"."+Artist.NAME_PROPERTY, true, true));
    the SQL looks like this:
    SELECT t0.id FROM Painting t0, Artist t1 WHERE t0.artistId = t1.id ORDER BY t1.name
    but it should be like this:
    SELECT t0.id FROM Painting t0 LEFT JOIN Artist t1 ON t0.artistId = t1.id ORDER BY t1.name
    What this means is that at the moment Cayenne will exclude from this query all paintings with no related artist.
    Regardless of how one thinks NULLs should be sorted in this relationship, the addition of a new Ordering in Cayenne shouldn't change the number of records returned from the SelectQuery.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Anonymous at May 6, 2008 at 9:07 pm
    [ https://issues.apache.org/cayenne/browse/CAY-928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Andrus Adamchik closed CAY-928.
    -------------------------------

    Resolution: Fixed

    CAY-929 fix addresses this issue too... The way join semantics now works is this: there is no implicit rule for OUTER joins, it is all encoded in the path. E.g.:

    SelectQuery query = new SelectQuery(Painting.class);
    query.addOrdering("toArtist+.artistName", Ordering.DESC);

    (Notice plus sign indicating OUTER join after "toArtist").
    Ordering across relationship should use left join
    -------------------------------------------------

    Key: CAY-928
    URL: https://issues.apache.org/cayenne/browse/CAY-928
    Project: Cayenne
    Issue Type: Bug
    Components: Cayenne Core Library
    Reporter: Ari Maniatis
    Assignee: Andrus Adamchik
    Priority: Critical

    When ordering across a relationship like this:
    SelectQuery qual = new SelectQuery(Painting.class);
    qual.addOrdering(new Ordering(Painting.ARTIST_PROPERTY+"."+Artist.NAME_PROPERTY, true, true));
    the SQL looks like this:
    SELECT t0.id FROM Painting t0, Artist t1 WHERE t0.artistId = t1.id ORDER BY t1.name
    but it should be like this:
    SELECT t0.id FROM Painting t0 LEFT JOIN Artist t1 ON t0.artistId = t1.id ORDER BY t1.name
    What this means is that at the moment Cayenne will exclude from this query all paintings with no related artist.
    Regardless of how one thinks NULLs should be sorted in this relationship, the addition of a new Ordering in Cayenne shouldn't change the number of records returned from the SelectQuery.
    --
    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
postedDec 3, '07 at 8:13a
activeMay 6, '08 at 9:07p
posts4
users1
websitecayenne.apache.org

1 user in discussion

Anonymous: 4 posts

People

Translate

site design / logo © 2022 Grokbase