DDC-680: Complex Mathematical Expressions in DQL Subselects #5191

Closed
doctrinebot opened this Issue Jul 10, 2010 · 6 comments

2 participants

@doctrinebot

Jira issue originally created by user @beberlei:

It seems complex mathematical expressions are handled differently in DQL Subselects then in normal Selects:

    public function testSelectCorrelatedSubqueryComplexMathematicalExpression()
    {
        $this->assertSqlGeneration(
            'SELECT (SELECT (count(p.phonenumber)<ins>5)*10 FROM Doctrine\Tests\Models\CMS\CmsPhonenumber p JOIN p.user ui WHERE ui.id = u.id) AS c FROM Doctrine\Tests\Models\CMS\CmsUser u',
            'SELECT (SELECT (count(c0*.phonenumber)</ins>5)*10 AS dctrn__1 FROM cms_phonenumbers c0_ INNER JOIN cms_users c1_ ON c0_.user_id = c1_.id WHERE c1_.id = c2_.id) AS sclr0 FROM cms_users c2*'
        );
    }

    public function testSelectComplexMathematicalExpression()
    {
        $this->assertSqlGeneration(
            'SELECT (count(p.phonenumber)<ins>5)*10 FROM Doctrine\Tests\Models\CMS\CmsPhonenumber p JOIN p.user ui WHERE ui.id = ?1',
            'SELECT (count(c0*.phonenumber) </ins> 5) * 10 AS sclr0 FROM cms_phonenumbers c0_ INNER JOIN cms_users c1_ ON c0_.user_id = c1_.id WHERE c1*.id = ?'
        );
    }

Here the first test fails and the second passes. The second has the nested SQL running alone. The failure message is:

1) Doctrine\Tests\ORM\Query\SelectSqlGenerationTest::testSelectCorrelatedSubqueryComplexMathematicalExpression
[Syntax Error] line 0, col 15: Error: Expected One of: MAX, MIN, AVG, SUM, COUNT, got '('

/home/benny/code/php/wsnetbeans/doctrine2/tests/Doctrine/Tests/ORM/Query/SelectSqlGenerationTest.php:31
/home/benny/code/php/wsnetbeans/doctrine2/tests/Doctrine/Tests/ORM/Query/SelectSqlGenerationTest.php:709
@doctrinebot

Comment created by @beberlei:

The problem seems to be in SelectExpression(). Functions are only detected in isolation, i.e. everything after the first function is ignored.

@doctrinebot

Comment created by @guilhermeblanco:

Patch that fixes the issue.

However, I am not 100% if the alias (sclr) of subquery select expression should be generated and added to RSM.
Can anyone chat with me tomorrow and agree on this patch?

@doctrinebot

Comment created by @guilhermeblanco:

New patch

@doctrinebot

Issue was closed with resolution "Fixed"

@doctrinebot doctrinebot added this to the 2.0-BETA4 milestone Dec 6, 2015
@doctrinebot doctrinebot closed this Dec 6, 2015
@doctrinebot doctrinebot added the Bug label Dec 7, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment