1
0
mirror of synced 2025-02-09 00:39:25 +03:00

Fixed issue when paginator orders by a subselect expression on platforms supporting ROW_NUMBER OVER() function.

This commit is contained in:
Andy Cook 2015-07-16 11:20:22 +01:00
parent 33c2ae465d
commit 61488d955e
2 changed files with 26 additions and 0 deletions

View File

@ -1093,6 +1093,10 @@ class SqlWalker implements TreeWalker
$this->orderedColumnsMap[$sql] = $type; $this->orderedColumnsMap[$sql] = $type;
if ($expr instanceof Query\AST\Subselect) {
$sql = "($sql)";
}
return $sql . ' ' . $type; return $sql . ' ' . $type;
} }

View File

@ -669,6 +669,28 @@ class PaginationTest extends \Doctrine\Tests\OrmFunctionalTestCase
$this->assertCount(9, $paginator); $this->assertCount(9, $paginator);
} }
/**
* @dataProvider useOutputWalkersAndFetchJoinCollection
*/
public function testPaginationWithSubSelectOrderByExpression($useOutputWalker, $fetchJoinCollection)
{
$query = $this->_em->createQuery(
"SELECT u,
(
SELECT MAX(a.version)
FROM Doctrine\\Tests\\Models\\CMS\\CmsArticle a
WHERE a.user = u
) AS HIDDEN max_version
FROM Doctrine\\Tests\\Models\\CMS\\CmsUser u
ORDER BY max_version DESC"
);
$paginator = new Paginator($query, $fetchJoinCollection);
$paginator->setUseOutputWalkers($useOutputWalker);
$this->assertCount(9, $paginator->getIterator());
}
public function populate() public function populate()
{ {
$groups = array(); $groups = array();