diff options
author | Deven Bansod <devenbansod.bits@gmail.com> | 2016-09-07 20:13:15 +0530 |
---|---|---|
committer | Deven Bansod <devenbansod.bits@gmail.com> | 2016-09-07 20:13:15 +0530 |
commit | fb3f137ae29425b5efc018d5435be59933b977fb (patch) | |
tree | d892f7b9a44394cb7a2c927be1daef7a023b576b /src/Components | |
parent | 8159f2ad5eaf354749c3d94458b31bf565a03878 (diff) | |
download | sql-parser-fb3f137ae29425b5efc018d5435be59933b977fb.zip sql-parser-fb3f137ae29425b5efc018d5435be59933b977fb.tar.gz sql-parser-fb3f137ae29425b5efc018d5435be59933b977fb.tar.bz2 |
Fix #59: Non-reserved keywords should be allowed as a field name
While trying to parse a fieldname, disallow only if it is a reserved keywords.
Reserved keywords are still allowed if backquotes are used.
Added testcases to cover both with and w/o backquotes scenarios.
Signed-off-by: Deven Bansod <devenbansod.bits@gmail.com>
Diffstat (limited to 'src/Components')
-rw-r--r-- | src/Components/CreateDefinition.php | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/Components/CreateDefinition.php b/src/Components/CreateDefinition.php index c6f0bb0..6e302d0 100644 --- a/src/Components/CreateDefinition.php +++ b/src/Components/CreateDefinition.php @@ -220,6 +220,23 @@ class CreateDefinition extends Component if (!$expr->isConstraint) { $state = 2; } + } else if ($token->type === Token::TYPE_KEYWORD) { + if ($token->flags & Token::FLAG_KEYWORD_RESERVED) { + // Reserved keywords can't be used + // as field names without backquotes + $parser->error( + __('A symbol name was expected! ' + . 'A reserved keyword can not be used ' + . 'as a field name without backquotes.' + ), + $token + ); + return $ret; + } else { + // Non-reserved keywords are allowed without backquotes + $expr->name = $token->value; + $state = 2; + } } else { $parser->error( __('A symbol name was expected!'), |