grammar: Fix keywords as table name and keywords as column name

SQLite allows some keywords to be used for table names and some other
keywords to be used for column names without using any quotes. Our
grammar parser needs to know which keywords are allowed and which are
not. In the two lists (one for table names and one for column names)
there were a few errors and omissions. This commit should fix them.

This was pointed out in #1716.
This commit is contained in:
Martin Kleusberg
2019-02-27 12:24:44 +01:00
parent fcdcfbdc79
commit e52f2054f2
3 changed files with 856 additions and 765 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -135,8 +135,6 @@ private:
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_22;
static const unsigned long _tokenSet_23_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_23;
static const unsigned long _tokenSet_24_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_24;
};
#endif /*INC_Sqlite3Parser_hpp_*/

View File

@@ -252,8 +252,11 @@ keywordastablename
| CURRENT_TIMESTAMP
| DEFERRED
| DESC
| ELSE_T
| END
| FAIL
| FILTER
| FOLLOWING
| GLOB
| KEY
| LIKE
@@ -262,13 +265,22 @@ keywordastablename
| IMMEDIATE
| MATCH
| NO
| OVER
| PARTITION
| PRECEDING
| RAISE
| RANGE
| REGEXP
| REPLACE
| RESTRICT
| ROLLBACK
| ROWID
| ROWS
| TEMPORARY
| TEMP
| UNBOUNDED
| VIRTUAL
| WITHOUT
)
{#keywordastablename = #([KEYWORDASTABLENAME, "KEYWORDASTABLENAME"], #keywordastablename);}
;
@@ -297,56 +309,44 @@ keywordascolumnname
:
( ABORT
| ACTION
| AUTOINCREMENT
| AS
| ASC
| AND
| OR
| CASCADE
| CASE_T
| CAST
| CREATE
| COLLATE
| CONFLICT
| CURRENT_TIME
| CURRENT_DATE
| CURRENT_TIMESTAMP
| DEFAULT
| DEFERRABLE
| DEFERRED
| DELETE
| DESC
| ELSE_T
| END
| ESCAPE
| FAIL
| FILTER
| FOLLOWING
| GLOB
| KEY
| LIKE
| TABLE
| IF_T
| IGNORE
| INITIALLY
| IMMEDIATE
| IS
| NULL_T
| MATCH
| EXISTS
| NO
| ON
| OVER
| PARTITION
| PRECEDING
| RAISE
| REFERENCES
| RANGE
| REGEXP
| REPLACE
| RESTRICT
| ROLLBACK
| ROWID
| SET
| ROWS
| TEMPORARY
| TEMP
| THEN
| UPDATE
| WHEN
| UNBOUNDED
| VIRTUAL
| WITHOUT
)
{#keywordascolumnname = #([KEYWORDASCOLUMNNAME, "KEYWORDASCOLUMNNAME"], #keywordascolumnname);}
;