Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2420

[GH-656] [DDC-2235] Fix for using a LEFT JOIN onto an entity with single table inheritance

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Incomplete
    • Affects Version/s: None
    • Fix Version/s: 2.4
    • Component/s: None
    • Security Level: All
    • Labels:
      None

      Description

      This issue is created automatically through a Github pull request on behalf of tarnfeld:

      Url: https://github.com/doctrine/doctrine2/pull/656

      Message:

      Possible fix for the bug DDC-2235. I'd love to hear some opinions on whether this is the right way to go about this issue. I'm not particularly familiar with the internals of doctrine so there may be a better solution.

      ------

      The issue is when using DQL to perform a left join on an entity using single
      table inheritance, doctrine tries to insert an `IN()` predicate into the `WHERE`
      clause for all of the discriminator values. That makes sense and is valid, so
      it would be wrong to remove that behaviour.

      However when using a left join having an `IN()` in the main where clause makes
      the `LEFT JOIN` pretty much useless, as it implicitly creates a `WHERE NOT NULL`
      clause. This commit attempts to fix that by including an `OR IS NULL` in the
      query if the join is a `LEFT JOIN`.

      I've added some regression tests to ensure this bug never creeps back in. They fail on master (highlighting the bug) and pass after these commits have been applied. I've also included a couple of other queries as tests to be sure only this one case has been affected.

        Activity

        Doctrine Bot created issue -
        Marco Pivetta made changes -
        Field Original Value New Value
        Status Open [ 1 ] Resolved [ 5 ]
        Assignee Benjamin Eberlei [ beberlei ] Marco Pivetta [ ocramius ]
        Resolution Incomplete [ 4 ]
        Marco Pivetta made changes -
        Fix Version/s 2.4 [ 10321 ]

          People

          • Assignee:
            Marco Pivetta
            Reporter:
            Doctrine Bot
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: