Added support for ResultVariable referencing in ArithmeticPrimary. Fixes DDC-1346.
This commit is contained in:
parent
ddfdb37a58
commit
6bbf2d9da3
@ -2381,7 +2381,7 @@ class Parser
|
|||||||
/**
|
/**
|
||||||
* ArithmeticPrimary ::= SingleValuedPathExpression | Literal | "(" SimpleArithmeticExpression ")"
|
* ArithmeticPrimary ::= SingleValuedPathExpression | Literal | "(" SimpleArithmeticExpression ")"
|
||||||
* | FunctionsReturningNumerics | AggregateExpression | FunctionsReturningStrings
|
* | FunctionsReturningNumerics | AggregateExpression | FunctionsReturningStrings
|
||||||
* | FunctionsReturningDatetime | IdentificationVariable | CaseExpression
|
* | FunctionsReturningDatetime | IdentificationVariable | ResultVariable | CaseExpression
|
||||||
*/
|
*/
|
||||||
public function ArithmeticPrimary()
|
public function ArithmeticPrimary()
|
||||||
{
|
{
|
||||||
@ -2410,7 +2410,11 @@ class Parser
|
|||||||
if ($peek['value'] == '.') {
|
if ($peek['value'] == '.') {
|
||||||
return $this->SingleValuedPathExpression();
|
return $this->SingleValuedPathExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($this->_queryComponents[$this->_lexer->lookahead['value']]['resultVariable'])) {
|
||||||
|
return $this->ResultVariable();
|
||||||
|
}
|
||||||
|
|
||||||
return $this->StateFieldPathExpression();
|
return $this->StateFieldPathExpression();
|
||||||
|
|
||||||
case Lexer::T_INPUT_PARAMETER:
|
case Lexer::T_INPUT_PARAMETER:
|
||||||
|
@ -1971,6 +1971,12 @@ class SqlWalker implements TreeWalker
|
|||||||
public function walkArithmeticTerm($term)
|
public function walkArithmeticTerm($term)
|
||||||
{
|
{
|
||||||
if (is_string($term)) {
|
if (is_string($term)) {
|
||||||
|
if (isset($this->_queryComponents[$term])) {
|
||||||
|
$columnName = $this->_queryComponents[$term]['token']['value'];
|
||||||
|
|
||||||
|
return $this->_scalarResultAliasMap[$columnName];
|
||||||
|
}
|
||||||
|
|
||||||
return $term;
|
return $term;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class SelectSqlGenerationTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
foreach ($queryHints AS $name => $value) {
|
foreach ($queryHints AS $name => $value) {
|
||||||
$query->setHint($name, $value);
|
$query->setHint($name, $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::assertEquals($sqlToBeConfirmed, $query->getSQL());
|
parent::assertEquals($sqlToBeConfirmed, $query->getSQL());
|
||||||
$query->free();
|
$query->free();
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
@ -991,6 +991,14 @@ class SelectSqlGenerationTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSubSelectAliasesFromOuterQueryReuseInWhereClause()
|
||||||
|
{
|
||||||
|
$this->assertSqlGeneration(
|
||||||
|
"SELECT uo, (SELECT ui.name FROM Doctrine\Tests\Models\CMS\CmsUser ui WHERE ui.id = uo.id) AS bar FROM Doctrine\Tests\Models\CMS\CmsUser uo WHERE bar = ?0",
|
||||||
|
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3, (SELECT c1_.name FROM cms_users c1_ WHERE c1_.id = c0_.id) AS sclr4 FROM cms_users c0_ WHERE sclr4 = ?"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group DDC-1298
|
* @group DDC-1298
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user