Skip to content

Loading…

DDC-1079: Behavior of Doctrine 2 is not as defined by EBNF definition for SimpleSelectExpression #1673

Closed
doctrinebot opened this Issue · 3 comments

2 participants

@doctrinebot

Jira issue originally created by user dalvarez:

Queries like

SELECT COUNT(a)
  FROM \a a
 WHERE EXISTS (SELECT 0
             FROM \b b
                WHERE b.a = a)

will not work, whereas they should.

Assume that there are potentially millions of b's per a, so this should not be joined, just simply left as-is as a correlated subquery within an exists expression. Actually, a "LIMIT 1" at the end of the subquery would come in handy here, too.

Doctrine 2 will give an error message

[Syntax Error] line 0, col [...]: Error: Expected known function, got '0''

when parsing the DQL statement.

According to the EBNF definition, 0 qualifies as a Literal, which qualifies as an ArithmeticPrimary, which qualifies as an ArithmeticFactor, which qualifies as an ArithmeticTerm, which qualifies as a SimpleArithmeticExpression, which qualifies as a ScalarExpression, which qualifies as a SimpleSelectExpression, which should be perfectly legitimate in that position.

This is yet another annoying case of the Doctrine 2 documentation not matching the behavior of the actual implementation.

Fortunately, it is easy to work around this defect by selecting some field and sacrificing a bit of performance, but then again, it sucks to have to continuously implement workarounds.

@doctrinebot

Comment created by @beberlei:

Fixed, didn't work because of a shortcut that was implemented in SimpleSelectExpression. I removed that now and fixed the problem the shortcut was trying to fix at a better location.

@doctrinebot

Issue was closed with resolution "Fixed"

@doctrinebot

Comment created by @beberlei:

Some more stuff is fixed in regard to this in some lsat ocmmits.

@beberlei beberlei was assigned by doctrinebot
@doctrinebot doctrinebot added this to the 2.0.4 milestone
@doctrinebot doctrinebot closed this
@doctrinebot doctrinebot added the Bug label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.