Skip to content
Snippets Groups Projects
  • Jared Hancock's avatar
    6be61133
    orm: Propagate LEFT joins in join paths · 6be61133
    Jared Hancock authored
    If something like members__staff is considered leaving the Team model,
    and the `members` relationship is nullable, and the `staff` relationship is
    not, in the context of the compiled SQL statement, the second join should
    also be considered nullable (LEFT join), because otherwise inconsistent
    results would be returned from the query.
    
    In other words, if a count is considered as an annotation to the Team model
    instances, Teams with zero members should still be considered as valid teams
    and should be selected with such an annotation. Before this patch, however,
    the join between TeamMember and Staff would have been an inner join instead
    of a LEFT join, which could skew the database results.
    6be61133
    History
    orm: Propagate LEFT joins in join paths
    Jared Hancock authored
    If something like members__staff is considered leaving the Team model,
    and the `members` relationship is nullable, and the `staff` relationship is
    not, in the context of the compiled SQL statement, the second join should
    also be considered nullable (LEFT join), because otherwise inconsistent
    results would be returned from the query.
    
    In other words, if a count is considered as an annotation to the Team model
    instances, Teams with zero members should still be considered as valid teams
    and should be selected with such an annotation. Before this patch, however,
    the join between TeamMember and Staff would have been an inner join instead
    of a LEFT join, which could skew the database results.