Fixed issue when paginator orders by a subselect expression on platforms supporting ROW_NUMBER OVER() function.
This commit is contained in:
parent
33c2ae465d
commit
61488d955e
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user