diff options
author | Brad Mostert <mostertb@users.noreply.github.com> | 2018-10-13 15:44:29 +0200 |
---|---|---|
committer | Brad Mostert <mostertb@users.noreply.github.com> | 2018-10-13 15:44:29 +0200 |
commit | f72a44cfd6266e9448e43bf7c1dcf759ea693a72 (patch) | |
tree | 0060c8220c3b3d1210d482f1ec96acb1103be258 | |
parent | f2127a175835f25e4936bb08698a812841a3915d (diff) | |
download | sql-parser-f72a44cfd6266e9448e43bf7c1dcf759ea693a72.zip sql-parser-f72a44cfd6266e9448e43bf7c1dcf759ea693a72.tar.gz sql-parser-f72a44cfd6266e9448e43bf7c1dcf759ea693a72.tar.bz2 |
Explicitly handle case where keyword encountered before alias value found
-rw-r--r-- | src/Components/CaseExpression.php | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/Components/CaseExpression.php b/src/Components/CaseExpression.php index 364b7d7..7f6af8c 100644 --- a/src/Components/CaseExpression.php +++ b/src/Components/CaseExpression.php @@ -227,10 +227,7 @@ class CaseExpression extends Component && $token->keyword === 'AS'){ if ($asFound || !empty($ret->alias)) { - $parser->error( - 'Potential duplicate alias of CASE expression.', - $token - ); + $parser->error('Potential duplicate alias of CASE expression.', $token); break; } $asFound = true; @@ -238,6 +235,14 @@ class CaseExpression extends Component } if ($asFound + && $token->type === Token::TYPE_KEYWORD + && ($token->flags & Token::FLAG_KEYWORD_RESERVED || $token->flags & Token::FLAG_KEYWORD_FUNCTION)){ + $parser->error('An alias expected after AS but got '.$token->value, $token); + $asFound = false; + break; + } + + if ($asFound || $token->type === Token::TYPE_STRING || ($token->type === Token::TYPE_SYMBOL && !$token->flags & Token::FLAG_SYMBOL_VARIABLE) || $token->type === Token::TYPE_NONE @@ -257,10 +262,7 @@ class CaseExpression extends Component break; } if ($asFound) { - $parser->error( - 'An alias was expected after AS.', - $list->tokens[$list->idx - 1] - ); + $parser->error('An alias was expected after AS.', $list->tokens[$list->idx - 1]); } |