@@ -7,7 +7,7 @@ public function testSimpleParse()
77 {
88 $ query = 'SELECT `foo` FROM `bar` WHERE `id` = 1 ' ;
99
10- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ query );
10+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ query );
1111
1212 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
1313 }
@@ -16,7 +16,7 @@ public function testCast()
1616 {
1717 $ query = 'SELECT CAST(1 + 2 AS UNSIGNED) as `a` ' ;
1818
19- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ query );
19+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ query );
2020
2121 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
2222
@@ -32,7 +32,7 @@ public function testAddFunctionResults()
3232 {
3333 $ query = 'SELECT IFNULL(`a`.`b`, 0) + ISNULL(`a`.`c`) ' ;
3434
35- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ query );
35+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ query );
3636
3737 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
3838
@@ -52,7 +52,7 @@ public function testSubqueryCalculation()
5252 {
5353 $ query = 'SELECT (SELECT 2) + (SELECT 3) as `a` ' ;
5454
55- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ query );
55+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ query );
5656
5757 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
5858
@@ -68,7 +68,7 @@ public function testFunctionOperatorPrecedence()
6868 {
6969 $ sql = 'SELECT SUM(`a`.`foo` - IFNULL(`b`.`bar`, 0) - `c`.`baz`) as `a` ' ;
7070
71- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
71+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
7272
7373 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
7474
@@ -95,7 +95,7 @@ public function testFunctionOperatorPrecedence()
9595 public function testWrappedSubquery ()
9696 {
9797 $ sql = 'SELECT * FROM (((SELECT 5))) AS all_parts ' ;
98- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
98+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
9999
100100 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
101101 }
@@ -104,7 +104,7 @@ public function testCaseWhenNotExists()
104104 {
105105 $ sql = "SELECT CASE WHEN NOT EXISTS (SELECT * FROM `bar`) THEN 'BAZ' ELSE NULL END FROM `bam` " ;
106106
107- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
107+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
108108
109109 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
110110 }
@@ -113,7 +113,7 @@ public function testInterval()
113113 {
114114 $ sql = 'SELECT DATE_ADD( \'2008-01-02 \', INTERVAL 31 DAY) ' ;
115115
116- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
116+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
117117
118118 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
119119 }
@@ -123,7 +123,7 @@ public function testUnionInSubquery()
123123 $ sql = "SELECT *
124124 FROM ((SELECT * FROM `c`) UNION ALL (SELECT * FROM `d`)) AS `bar` " ;
125125
126- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
126+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
127127
128128 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
129129 }
@@ -135,7 +135,7 @@ public function testAndNotExists()
135135 WHERE `a` > 0
136136 AND NOT EXISTS (SELECT * FROM `bar`) " ;
137137
138- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
138+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
139139
140140 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
141141 }
@@ -145,7 +145,7 @@ public function testSumCaseMultiplied()
145145 $ sql = "SELECT SUM((CASE WHEN `a`.`b` THEN 1 ELSE 0 END) * (CASE WHEN `a`.`c` THEN 1 ELSE 0 END))
146146 FROM `foo` " ;
147147
148- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
148+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
149149
150150 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
151151 }
@@ -154,8 +154,21 @@ public function testBadAs()
154154 {
155155 $ sql = "SELECT (@refund_date := `ordered_transactions`.`refund_date`) as refund_date FROM `foo` " ;
156156
157- $ select_query = \Vimeo \MysqlEngine \Parser \SqlParser ::parse ($ sql );
157+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser ::parse ($ sql );
158158
159159 $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
160160 }
161+
162+ public function testParseComplexJoin ()
163+ {
164+ $ sql = "SELECT * FROM (SELECT * FROM `foo` UNION ALL SELECT * FROM `bar`) AS `baz` " ;
165+
166+ $ select_query = \Vimeo \MysqlEngine \Parser \SQLParser::parse ($ sql );
167+
168+ $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \SelectQuery::class, $ select_query );
169+ $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \FromClause::class, $ select_query ->fromClause );
170+ $ this ->assertCount (1 , $ select_query ->fromClause ->tables );
171+ $ this ->assertInstanceOf (\Vimeo \MysqlEngine \Query \Expression \SubqueryExpression::class, $ select_query ->fromClause ->tables [0 ]['subquery ' ]);
172+ $ this ->assertNotEmpty ($ select_query ->fromClause ->tables [0 ]['subquery ' ]->query ->multiQueries );
173+ }
161174}
0 commit comments