diff options
author | Deven Bansod <devenbansod.bits@gmail.com> | 2016-10-25 19:29:15 +0530 |
---|---|---|
committer | Deven Bansod <devenbansod.bits@gmail.com> | 2016-10-25 19:29:15 +0530 |
commit | 94e550e4a9b359332bab257a5f4aa6dfb8e48ea7 (patch) | |
tree | 333f35e531cd1f18011e95bc6f1c974adae7b096 /src/Components | |
parent | c70914ac7e54904bb7e0ed0e3a9511481f69168d (diff) | |
parent | dccefe437ad94182a22376807950b7bf5e0b9a47 (diff) | |
download | sql-parser-94e550e4a9b359332bab257a5f4aa6dfb8e48ea7.zip sql-parser-94e550e4a9b359332bab257a5f4aa6dfb8e48ea7.tar.gz sql-parser-94e550e4a9b359332bab257a5f4aa6dfb8e48ea7.tar.bz2 |
Merge branch 'master' of https://github.com/phpmyadmin/sql-parser
Diffstat (limited to 'src/Components')
-rw-r--r-- | src/Components/JoinKeyword.php | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/Components/JoinKeyword.php b/src/Components/JoinKeyword.php index 7062783..548a64e 100644 --- a/src/Components/JoinKeyword.php +++ b/src/Components/JoinKeyword.php @@ -30,6 +30,7 @@ class JoinKeyword extends Component * @var array */ public static $JOINS = array( + 'CROSS JOIN' => 'CROSS', 'FULL JOIN' => 'FULL', 'FULL OUTER JOIN' => 'FULL', 'INNER JOIN' => 'INNER', @@ -38,6 +39,12 @@ class JoinKeyword extends Component 'LEFT OUTER JOIN' => 'LEFT', 'RIGHT JOIN' => 'RIGHT', 'RIGHT OUTER JOIN' => 'RIGHT', + 'NATURAL JOIN' => 'NATURAL', + 'NATURAL LEFT JOIN' => 'NATURAL LEFT', + 'NATURAL LEFT JOIN' => 'NATURAL LEFT', + 'NATURAL RIGHT JOIN' => 'NATURAL RIGHT', + 'NATURAL LEFT OUTER JOIN' => 'NATURAL LEFT OUTER', + 'NATURAL RIGHT OUTER JOIN' => 'NATURAL RIGHT OUTER', 'STRAIGHT_JOIN' => 'STRAIGHT', ); @@ -147,8 +154,17 @@ class JoinKeyword extends Component } elseif ($token->value === 'USING') { $state = 4; } else { - /* Next clause is starting */ - break; + if (($token->type === Token::TYPE_KEYWORD) + && (!empty(static::$JOINS[$token->value])) + ) { + $ret[] = $expr; + $expr = new JoinKeyword(); + $expr->type = static::$JOINS[$token->value]; + $state = 1; + } else { + /* Next clause is starting */ + break; + } } } } elseif ($state === 3) { |