Skip to content

Commit 902cf9d

Browse files
authored
Merge pull request #52 from moufmouf/having_alias_issue
Fixing issue with alias and having
2 parents e6c267f + 7843b2f commit 902cf9d

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

src/SQLParser/Node/Expression.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ public function toInstanceDescriptor(MoufManager $moufManager)
204204
*/
205205
public function toSql(array $parameters = array(), Connection $dbConnection = null, $indent = 0, $conditionsMode = self::CONDITION_APPLY, bool $extrapolateParameters = true)
206206
{
207+
if (empty($this->subTree)) {
208+
return $this->getBaseExpression();
209+
}
207210
$sql = NodeFactory::toSql($this->subTree, $dbConnection, $parameters, $this->delimiter, false, $indent, $conditionsMode, $extrapolateParameters);
208211

209212
if ($sql === null) {
@@ -264,6 +267,10 @@ public function walk(VisitorInterface $visitor)
264267
*/
265268
public function canBeBypassed(array $parameters): bool
266269
{
270+
if (empty($this->subTree)) {
271+
// Some expression can (rarely) have no subtree. Don't know why.
272+
return false;
273+
}
267274
if (is_iterable($this->subTree)) {
268275
foreach ($this->subTree as $node) {
269276
if (!$node instanceof BypassableInterface || !$node->canBeBypassed($parameters)) {

src/SQLParser/Node/NodeFactory.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ public static function toObject(array $desc)
389389
unset($desc['alias']);
390390
unset($desc['direction']);
391391
unset($desc['delim']);
392+
unset($desc['no_quotes']);
392393
if (!empty($desc)) {
393394
error_log('MagicQuery - NodeFactory: Unexpected parameters in exception: '.var_export($desc, true));
394395
}

tests/Mouf/Database/MagicQueryTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ public function testStandardSelect()
180180

181181
$sql = 'SELECT a FROM users u WHERE status = (CASE WHEN u.id = 1 THEN u.status_1 ELSE u.status_2 END)';
182182
$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)));
183+
184+
$sql = 'SELECT 42 as fooalias FROM bar HAVING fooalias = 24';
185+
$this->assertEquals('SELECT 42 AS fooalias FROM bar HAVING fooalias = 24', self::simplifySql($magicQuery->build($sql)));
183186
}
184187

185188
/**

0 commit comments

Comments
 (0)