summaryrefslogtreecommitdiffstats
path: root/src/Components
diff options
context:
space:
mode:
authorDeven Bansod <devenbansod.bits@gmail.com>2016-09-07 20:13:15 +0530
committerDeven Bansod <devenbansod.bits@gmail.com>2016-09-07 20:13:15 +0530
commitfb3f137ae29425b5efc018d5435be59933b977fb (patch)
treed892f7b9a44394cb7a2c927be1daef7a023b576b /src/Components
parent8159f2ad5eaf354749c3d94458b31bf565a03878 (diff)
downloadsql-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.php17
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!'),