Skip to content

Commit e1b88d4

Browse files
committed
Fixing oversimplification problem
1 parent c1ecb91 commit e1b88d4

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/SQLParser/Node/Expression.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
namespace SQLParser\Node;
3434

3535
use Doctrine\DBAL\Connection;
36+
use function is_iterable;
3637
use Mouf\MoufInstanceDescriptor;
3738
use Mouf\MoufManager;
3839
use SQLParser\Node\Traverser\NodeTraverser;
@@ -263,10 +264,14 @@ public function walk(VisitorInterface $visitor)
263264
*/
264265
public function canBeBypassed(array $parameters): bool
265266
{
266-
foreach ($this->subTree as $node) {
267-
if (!$node instanceof BypassableInterface || !$node->canBeBypassed($parameters)) {
268-
return false;
267+
if (is_iterable($this->subTree)) {
268+
foreach ($this->subTree as $node) {
269+
if (!$node instanceof BypassableInterface || !$node->canBeBypassed($parameters)) {
270+
return false;
271+
}
269272
}
273+
} elseif (!$this->subTree instanceof BypassableInterface || !$this->subTree->canBeBypassed($parameters)) {
274+
return false;
270275
}
271276
return true;
272277
}

tests/Mouf/Database/MagicQueryTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ public function testStandardSelect()
179179
$this->assertEquals('SELECT a FROM users AS u CROSS JOIN users AS u2', self::simplifySql($magicQuery->build($sql)));
180180

181181
$sql = 'SELECT a FROM users u WHERE status = (CASE WHEN u.id = 1 THEN u.status_1 ELSE u.status_2 END)';
182-
$this->assertEquals('foo', self::simplifySql($magicQuery->build($sql)));
182+
$this->assertEquals('SELECT a FROM users AS u WHERE status = (CASE WHEN u.id = 1 THEN u.status_1 ELSE u.status_2 END)', self::simplifySql($magicQuery->build($sql)));
183183
}
184184

185185
/**

0 commit comments

Comments
 (0)