Skip to content

Loading…

DDC-1523: Coalesce() does not work with functions #2155

Closed
doctrinebot opened this Issue · 3 comments

2 participants

@doctrinebot

Jira issue originally created by user bountin:

I wanted to use COALESCE in DQL with a function (e.g. CURRENT_TIMESTAMP()). If I run this DQL, I receive a syntax error exception like this one:

montbook:marlow mprebio$ php scripts/doctrine.php orm:run-dql "select COALESCE(CURRENT_TIMESTAMP()) from Project\Entity\User user"

[Doctrine\ORM\Query\QueryException]

[Syntax Error] line 0, col 33: Error: Expected Doctrine\ORM\Query\Lexer::TCLOSEPARENTHESIS, got '('

I've traced this error to Doctrine\ORM\Parser::ScalarExpression() which tries to interpret the currenttimestamp function as a SimpleArithmeticExpression or as a StateFieldPathExpression (first if). As far as I understand this part of the parser, the function call should lead to the if part with $this->_isFunction(). Therefore I added a "and !$this->isFunction()" to the first if clause. After this change everything works as expected: The above query returns the current timestamp (many times because of the from since DQL needs a from part).

Reordering the ifs should work too.

@doctrinebot

Comment created by bountin:

Also the documentation at http://www.doctrine-project.org/docs/orm/2.1/en/ only mentions COALESCE in the EBNF but not in the real documentation part. At first I thought that Doctrine doesn't support coalesce at all.

@doctrinebot

Comment created by @guilhermeblanco:

COALESCE does not exist on 2.1.
COALESCE is a 2.2-DEV, so use latest master.

Marking as invalid, since we won't change 2.1 to support this.

@doctrinebot

Issue was closed with resolution "Invalid"

@doctrinebot doctrinebot added this to the 2.2 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.