fixed DDC-1474
This commit is contained in:
parent
14f20c16bc
commit
3f8347a4d9
@ -1905,6 +1905,9 @@ class Parser
|
|||||||
} else if (in_array($this->_lexer->lookahead['type'], array(Lexer::T_OPEN_PARENTHESIS, Lexer::T_INTEGER, Lexer::T_FLOAT, Lexer::T_STRING))) {
|
} else if (in_array($this->_lexer->lookahead['type'], array(Lexer::T_OPEN_PARENTHESIS, Lexer::T_INTEGER, Lexer::T_FLOAT, Lexer::T_STRING))) {
|
||||||
// Shortcut: ScalarExpression => SimpleArithmeticExpression
|
// Shortcut: ScalarExpression => SimpleArithmeticExpression
|
||||||
$expression = $this->SimpleArithmeticExpression();
|
$expression = $this->SimpleArithmeticExpression();
|
||||||
|
} else if (in_array($this->_lexer->lookahead['type'], array(Lexer::T_PLUS, Lexer::T_MINUS))) {
|
||||||
|
// SimpleArithmeticExpression : (- u.value ) or ( + u.value )
|
||||||
|
$expression = $this->SimpleArithmeticExpression();
|
||||||
} else {
|
} else {
|
||||||
$this->syntaxError(
|
$this->syntaxError(
|
||||||
'IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression',
|
'IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression',
|
||||||
|
122
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1474Test.php
Normal file
122
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1474Test.php
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../../../TestInit.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group DDC-1474
|
||||||
|
*/
|
||||||
|
class DDC1474Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->_schemaTool->createSchema(array(
|
||||||
|
$this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1474Entity'),
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->loadFixtures();
|
||||||
|
} catch (\Exception $exc) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTicket()
|
||||||
|
{
|
||||||
|
$query = $this->_em->createQuery('SELECT - e.value AS value, e.id FROM ' . __NAMESPACE__ . '\DDC1474Entity e');
|
||||||
|
$this->assertEquals('SELECT -d0_.value AS sclr0, d0_.id AS id1 FROM DDC1474Entity d0_', $query->getSQL());
|
||||||
|
$result = $query->getResult();
|
||||||
|
|
||||||
|
$this->assertEquals(2, sizeof($result));
|
||||||
|
|
||||||
|
$this->assertEquals(1, $result[0]['id']);
|
||||||
|
$this->assertEquals(2, $result[1]['id']);
|
||||||
|
|
||||||
|
$this->assertEquals(-10, $result[0]['value']);
|
||||||
|
$this->assertEquals(20, $result[1]['value']);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$query = $this->_em->createQuery('SELECT e.id, + e.value AS value FROM ' . __NAMESPACE__ . '\DDC1474Entity e');
|
||||||
|
$this->assertEquals('SELECT d0_.id AS id0, +d0_.value AS sclr1 FROM DDC1474Entity d0_', $query->getSQL());
|
||||||
|
$result = $query->getResult();
|
||||||
|
|
||||||
|
$this->assertEquals(2, sizeof($result));
|
||||||
|
|
||||||
|
$this->assertEquals(1, $result[0]['id']);
|
||||||
|
$this->assertEquals(2, $result[1]['id']);
|
||||||
|
|
||||||
|
$this->assertEquals(10, $result[0]['value']);
|
||||||
|
$this->assertEquals(-20, $result[1]['value']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function loadFixtures()
|
||||||
|
{
|
||||||
|
$e1 = new DDC1474Entity(10);
|
||||||
|
$e2 = new DDC1474Entity(-20);
|
||||||
|
|
||||||
|
$this->_em->persist($e1);
|
||||||
|
$this->_em->persist($e2);
|
||||||
|
|
||||||
|
$this->_em->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Entity
|
||||||
|
*/
|
||||||
|
class DDC1474Entity
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Id
|
||||||
|
* @Column(type="integer")
|
||||||
|
* @GeneratedValue()
|
||||||
|
*/
|
||||||
|
protected $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @column(type="float")
|
||||||
|
*/
|
||||||
|
private $value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $float
|
||||||
|
*/
|
||||||
|
public function __construct($float)
|
||||||
|
{
|
||||||
|
$this->value = $float;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
public function getId()
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function getValue()
|
||||||
|
{
|
||||||
|
return $this->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param float $value
|
||||||
|
*/
|
||||||
|
public function setValue($value)
|
||||||
|
{
|
||||||
|
$this->value = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user