From beb8e5d2b6bebf17c48cb6b21138beb41ca12844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 22 Jul 2020 10:36:43 +0200 Subject: [PATCH 1/2] Adding failing test --- tests/Mouf/Database/MagicQueryTest.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/Mouf/Database/MagicQueryTest.php b/tests/Mouf/Database/MagicQueryTest.php index 852ef4e..4d06da7 100644 --- a/tests/Mouf/Database/MagicQueryTest.php +++ b/tests/Mouf/Database/MagicQueryTest.php @@ -146,7 +146,7 @@ public function testStandardSelect() $sql = "SELECT Substring_index(ee.`data`, ':', -1) as foo FROM users"; $this->assertEquals("SELECT Substring_index(ee.data, ':', -1) AS foo FROM users", self::simplifySql($magicQuery->build($sql))); - + $sql = 'SELECT * FROM users GROUP BY id, login'; $this->assertEquals('SELECT * FROM users GROUP BY id, login', self::simplifySql($magicQuery->build($sql))); @@ -202,6 +202,9 @@ public function testStandardSelect() $sql = 'SELECT (id + 2) AS foo FROM bar'; $this->assertEquals($sql, self::simplifySql($magicQuery->build($sql))); + + $sql = 'SELECT COUNT(*) FROM (SELECT DISTINCT `states`.`country_id`, `states`.`code` FROM states)'; + $this->assertEquals($sql, self::simplifySql($magicQuery->build($sql))); } /** @@ -380,9 +383,9 @@ public function testMatchAgainst() ORDER BY MATCH(column) AGAINST(:searchTerm IN BOOLEAN MODE) DESC "; $expectedSql = "SELECT MATCH(column) AGAINST('searchString' IN BOOLEAN MODE) AS rang FROM table WHERE MATCH(column) AGAINST('searchString' IN BOOLEAN MODE) ORDER BY MATCH(column) AGAINST('searchString' IN BOOLEAN MODE) DESC"; - + $params["searchTerm"] = "searchString"; - + $this->assertEquals($expectedSql, self::simplifySql($magicQuery->build($sql, $params))); } From 306f4f4c3bfa5a2b00c7d230a6e91c1055a549c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 22 Jul 2020 10:41:21 +0200 Subject: [PATCH 2/2] Fixing testing of aliases --- src/SQLParser/Node/NodeFactory.php | 8 ++++---- tests/Mouf/Database/MagicQueryTest.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/SQLParser/Node/NodeFactory.php b/src/SQLParser/Node/NodeFactory.php index 2ec707b..8384326 100644 --- a/src/SQLParser/Node/NodeFactory.php +++ b/src/SQLParser/Node/NodeFactory.php @@ -42,7 +42,7 @@ public static function toObject(array $desc) // If the constant has an alias, it is declared in the columns section. // If this is the case, let's wrap it in an "expression" - if (isset($desc['alias'])) { + if (isset($desc['alias']['name'])) { $expression = new Expression(); $expression->setBaseExpression($desc['base_expr']); $expression->setSubTree($const); @@ -108,7 +108,7 @@ public static function toObject(array $desc) $instance->setDatabase($baseName); } - if (!empty($desc['alias'])) { + if (!empty($desc['alias']['name'])) { $instance->setAlias($desc['alias']['name']); } @@ -225,7 +225,7 @@ public static function toObject(array $desc) $expr->setJoinType($desc['join_type']); } - if (isset($desc['alias'])) { + if (isset($desc['alias']['name'])) { $expr->setAlias($desc['alias']['name']); } @@ -285,7 +285,7 @@ public static function toObject(array $desc) $expr->setSubTree(self::buildFromSubtree($desc['sub_tree'])); } - if (isset($desc['alias'])) { + if (isset($desc['alias']['name'])) { $expr->setAlias($desc['alias']['name']); } if (isset($desc['direction'])) { diff --git a/tests/Mouf/Database/MagicQueryTest.php b/tests/Mouf/Database/MagicQueryTest.php index 4d06da7..f3aa8a7 100644 --- a/tests/Mouf/Database/MagicQueryTest.php +++ b/tests/Mouf/Database/MagicQueryTest.php @@ -203,7 +203,7 @@ public function testStandardSelect() $sql = 'SELECT (id + 2) AS foo FROM bar'; $this->assertEquals($sql, self::simplifySql($magicQuery->build($sql))); - $sql = 'SELECT COUNT(*) FROM (SELECT DISTINCT `states`.`country_id`, `states`.`code` FROM states)'; + $sql = 'SELECT COUNT(*) FROM (SELECT DISTINCT states.country_id, states.code FROM states)'; $this->assertEquals($sql, self::simplifySql($magicQuery->build($sql))); }