From ae30ce4596bfc60b9b29936934079177fcc909b8 Mon Sep 17 00:00:00 2001 From: Vaughn Clayton Date: Thu, 1 Nov 2012 17:43:18 -0400 Subject: [PATCH] [DDC-2113] Surround WHERE clause with parens if using SQLFilter --- lib/Doctrine/ORM/Query/SqlWalker.php | 2 +- .../Tests/ORM/Functional/SQLFilterTest.php | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Query/SqlWalker.php b/lib/Doctrine/ORM/Query/SqlWalker.php index 318ced2f6..26e31bdd7 100644 --- a/lib/Doctrine/ORM/Query/SqlWalker.php +++ b/lib/Doctrine/ORM/Query/SqlWalker.php @@ -1700,7 +1700,7 @@ class SqlWalker implements TreeWalker if (count($filterClauses)) { if ($condSql) { - $condSql .= ' AND '; + $condSql = '(' . $condSql . ') AND '; } $condSql .= implode(' AND ', $filterClauses); diff --git a/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php b/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php index 82c240951..30f6d63f7 100644 --- a/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php @@ -453,6 +453,22 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase $this->assertEquals(1, count($query->getResult())); } + public function testWhereOrFilter() + { + $this->loadFixtureData(); + $query = $this->_em->createQuery('select ug from Doctrine\Tests\Models\CMS\CmsGroup ug WHERE 1=1 OR 1=1'); + + // We get two users before enabling the filter + $this->assertEquals(2, count($query->getResult())); + + $conf = $this->_em->getConfiguration(); + $conf->addFilter("group_prefix", "\Doctrine\Tests\ORM\Functional\CMSGroupPrefixFilter"); + $this->_em->getFilters()->enable("group_prefix")->setParameter("prefix", "bar_%", DBALType::STRING); + + // We get one user after enabling the filter + $this->assertEquals(1, count($query->getResult())); + } + private function loadLazyFixtureData() {