Merge branch 'feature/#6162-report-that-subqueries-are-not-allowed-in-from-and-join'
Close #6162
This commit is contained in:
commit
1e3bf6562e
@ -1712,9 +1712,15 @@ class Parser
|
||||
* RangeVariableDeclaration ::= AbstractSchemaName ["AS"] AliasIdentificationVariable
|
||||
*
|
||||
* @return \Doctrine\ORM\Query\AST\RangeVariableDeclaration
|
||||
*
|
||||
* @throws QueryException
|
||||
*/
|
||||
public function RangeVariableDeclaration()
|
||||
{
|
||||
if ($this->lexer->isNextToken(Lexer::T_OPEN_PARENTHESIS) && $this->lexer->glimpse()['type'] === Lexer::T_SELECT) {
|
||||
$this->semanticalError('Subquery is not supported here', $this->lexer->token);
|
||||
}
|
||||
|
||||
$abstractSchemaName = $this->AbstractSchemaName();
|
||||
|
||||
$this->validateAbstractSchemaName($abstractSchemaName);
|
||||
|
@ -8,6 +8,7 @@ use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Doctrine\ORM\Internal\Hydration\IterableResult;
|
||||
use Doctrine\ORM\Query\Parameter;
|
||||
use Doctrine\ORM\Query\QueryException;
|
||||
use Doctrine\Tests\Mocks\DriverConnectionMock;
|
||||
use Doctrine\Tests\Mocks\StatementArrayMock;
|
||||
use Doctrine\Tests\Models\CMS\CmsAddress;
|
||||
@ -278,4 +279,28 @@ class QueryTest extends OrmTestCase
|
||||
// Retrieves cached data since expire flag is false and we have a cached result set
|
||||
self::assertCount(2, $query->expireResultCache(false)->getResult());
|
||||
}
|
||||
|
||||
/**
|
||||
* @group #6162
|
||||
*/
|
||||
public function testSelectJoinSubquery()
|
||||
{
|
||||
$query = $this->_em->createQuery("select u from Doctrine\Tests\Models\CMS\CmsUser u JOIN (SELECT )");
|
||||
|
||||
$this->expectException(QueryException::class);
|
||||
$this->expectExceptionMessage('Subquery');
|
||||
$query->getSQL();
|
||||
}
|
||||
|
||||
/**
|
||||
* @group #6162
|
||||
*/
|
||||
public function testSelectFromSubquery()
|
||||
{
|
||||
$query = $this->_em->createQuery("select u from (select Doctrine\Tests\Models\CMS\CmsUser c) as u");
|
||||
|
||||
$this->expectException(QueryException::class);
|
||||
$this->expectExceptionMessage('Subquery');
|
||||
$query->getSQL();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user