diff options
author | Deven Bansod <devenbansod.bits@gmail.com> | 2016-09-25 22:51:51 +0530 |
---|---|---|
committer | Deven Bansod <devenbansod.bits@gmail.com> | 2016-09-25 22:51:51 +0530 |
commit | 7f4702adeab4a852ffc724971a601e28668fa6fe (patch) | |
tree | b606f8eb4af49f84f8aa9069f9aafad0aa90c82a /src/Components/ExpressionArray.php | |
parent | 5988855152a5c8adcc874e9868e97adcbfcd7d69 (diff) | |
download | sql-parser-7f4702adeab4a852ffc724971a601e28668fa6fe.zip sql-parser-7f4702adeab4a852ffc724971a601e28668fa6fe.tar.gz sql-parser-7f4702adeab4a852ffc724971a601e28668fa6fe.tar.bz2 |
Add parsing of CASE Expressions
Fix phpmyadmin/phpmyadmin#12100
Signed-off-by: Deven Bansod <devenbansod.bits@gmail.com>
Diffstat (limited to 'src/Components/ExpressionArray.php')
-rw-r--r-- | src/Components/ExpressionArray.php | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/Components/ExpressionArray.php b/src/Components/ExpressionArray.php index f108ad8..a64f64a 100644 --- a/src/Components/ExpressionArray.php +++ b/src/Components/ExpressionArray.php @@ -1,7 +1,7 @@ <?php /** - * Parses a a list of expressions delimited by a comma. + * Parses a list of expressions delimited by a comma. * * @package SqlParser * @subpackage Components @@ -14,7 +14,7 @@ use SqlParser\Token; use SqlParser\TokensList; /** - * Parses a a list of expressions delimited by a comma. + * Parses a list of expressions delimited by a comma. * * @category Keywords * @package SqlParser @@ -73,13 +73,21 @@ class ExpressionArray extends Component && ((~$token->flags & Token::FLAG_KEYWORD_FUNCTION)) && ($token->value !== 'DUAL') && ($token->value !== 'NULL') + && ($token->value !== 'CASE') ) { // No keyword is expected. break; } if ($state === 0) { - $expr = Expression::parse($parser, $list, $options); + if ($token->type === Token::TYPE_KEYWORD + && $token->value === 'CASE' + ) { + $expr = CaseExpression::parse($parser, $list, $options); + } else { + $expr = Expression::parse($parser, $list, $options); + } + if ($expr === null) { break; } |