From b8b7afe5762c012778bd61b1bc5b6afe29848b88 Mon Sep 17 00:00:00 2001 From: Raymond Kolbe Date: Tue, 9 Apr 2013 17:00:06 -0300 Subject: [PATCH] Fix Oracle subquery ordering lost bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See http://www.doctrine-project.org/jira/browse/DDC-1800 for a full description. --- .../Tools/Pagination/LimitSubqueryOutputWalker.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/Doctrine/ORM/Tools/Pagination/LimitSubqueryOutputWalker.php b/lib/Doctrine/ORM/Tools/Pagination/LimitSubqueryOutputWalker.php index 3943cb5e6..274dac271 100644 --- a/lib/Doctrine/ORM/Tools/Pagination/LimitSubqueryOutputWalker.php +++ b/lib/Doctrine/ORM/Tools/Pagination/LimitSubqueryOutputWalker.php @@ -137,9 +137,16 @@ class LimitSubqueryOutputWalker extends SqlWalker )); } - // Build the counter query. - $sql = sprintf('SELECT DISTINCT %s FROM (%s) dctrn_result', - implode(', ', $sqlIdentifier), $innerSql); + // Build the counter query + if ($this->platform instanceof OraclePlatform) { + // Ordering is lost in Oracle with subqueries + // http://www.doctrine-project.org/jira/browse/DDC-1800 + $sql = sprintf('SELECT DISTINCT %s, ROWNUM FROM (%s) dctrn_result ORDER BY ROWNUM ASC', + implode(', ', $sqlIdentifier), $innerSql); + } else { + $sql = sprintf('SELECT DISTINCT %s FROM (%s) dctrn_result', + implode(', ', $sqlIdentifier), $innerSql); + } if ($this->platform instanceof PostgreSqlPlatform) { //http://www.doctrine-project.org/jira/browse/DDC-1958