Update SqlWalker.php fixed wrong GROUP BY clause on SQL Server platform
Without this patch a query would like like: ``` SELECT c0_.Country AS sclr0 FROM Continent c0_ WITH (NOLOCK) WHERE c0_.Country = 38 GROUP BY sclr0 ``` Using the column alias in the GROUP BY clause. However this is not allowed on SQL Server. References: 1. http://stackoverflow.com/a/3841804 2. http://technet.microsoft.com/en-us/library/ms189499.aspx (Logical Processing Order of the SELECT statement) The correct query should be: ``` SELECT c0_.Country AS sclr0 FROM Continent c0_ WITH (NOLOCK) WHERE c0_.Country = 38 GROUP BY c0_.Country ```
This commit is contained in:
parent
bd7c7ebaf3
commit
76fda9562c
@ -21,6 +21,7 @@ namespace Doctrine\ORM\Query;
|
|||||||
|
|
||||||
use Doctrine\DBAL\LockMode;
|
use Doctrine\DBAL\LockMode;
|
||||||
use Doctrine\DBAL\Types\Type;
|
use Doctrine\DBAL\Types\Type;
|
||||||
|
use Doctrine\DBAL\Platforms\SQLServerPlatform;
|
||||||
use Doctrine\ORM\Mapping\ClassMetadata;
|
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||||
use Doctrine\ORM\Query;
|
use Doctrine\ORM\Query;
|
||||||
use Doctrine\ORM\Query\QueryException;
|
use Doctrine\ORM\Query\QueryException;
|
||||||
@ -1624,7 +1625,11 @@ class SqlWalker implements TreeWalker
|
|||||||
|
|
||||||
// ResultVariable
|
// ResultVariable
|
||||||
if (isset($this->queryComponents[$groupByItem]['resultVariable'])) {
|
if (isset($this->queryComponents[$groupByItem]['resultVariable'])) {
|
||||||
return $this->walkResultVariable($groupByItem);
|
if ($this->platform instanceof SQLServerPlatform) {
|
||||||
|
return $this->walkPathExpression($this->queryComponents[$groupByItem]['resultVariable']->pathExpression);
|
||||||
|
} else {
|
||||||
|
return $this->walkResultVariable($groupByItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// IdentificationVariable
|
// IdentificationVariable
|
||||||
|
Loading…
x
Reference in New Issue
Block a user