summaryrefslogtreecommitdiffstats
path: root/src/Components/ExpressionArray.php
diff options
context:
space:
mode:
authorDeven Bansod <devenbansod.bits@gmail.com>2016-09-25 22:51:51 +0530
committerDeven Bansod <devenbansod.bits@gmail.com>2016-09-25 22:51:51 +0530
commit7f4702adeab4a852ffc724971a601e28668fa6fe (patch)
treeb606f8eb4af49f84f8aa9069f9aafad0aa90c82a /src/Components/ExpressionArray.php
parent5988855152a5c8adcc874e9868e97adcbfcd7d69 (diff)
downloadsql-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.php14
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;
}