MySQL Keyword Compatibility Reference¶
Generated for GSP Java version 4.1.0.8 on 2026-03-15
This page was generated using hybrid static extraction from parser source files combined with runtime validation against the actual GSP parser. Re-run the extraction script after parser updates to keep this page current.
Keyword-as-Column-Name Support¶
As of version 4.1.0.8, the GSP MySQL parser includes a lexer lookahead mechanism that allows 186 vendor-unreserved keywords to be used as unquoted column names in SELECT statements.
The lookahead pre-scans the token list before parsing and converts context-specific keywords to identifiers when they appear in column-name position:
- After:
SELECT,,,DISTINCT, orALL - Before:
FROM,AS,WHERE,GROUP,ORDER,HAVING,LIMIT,UNION,INTERSECT,EXCEPT,INTO,,,), or;
1 2 3 4 5 6 7 8 9 10 | |
Full Classification Overview¶
Out of 538 keywords recognized by the GSP MySQL parser:
| Classification | Count | Description |
|---|---|---|
| Allowed | 348 | Can be used as an unquoted column name in both canonical contexts |
| Context-specific | 189 | Fails as SELECT keyword FROM t but works as SELECT t.keyword FROM t |
| Blocked | 1 | Cannot be used as an unquoted column name in either context |
Context-Specific Keywords (189)¶
These keywords fail when used as bare column names (SELECT keyword FROM t) but succeed when table-qualified (SELECT t.keyword FROM t).
| Keyword | Reason |
|---|---|
ADD |
Grammar keyword |
ALL |
SELECT qualifier |
ALTER |
Grammar keyword |
ANALYZE |
Grammar keyword |
AND |
Operator keyword |
AS |
Grammar keyword |
ASC |
Grammar keyword |
BEFORE |
Grammar keyword |
BETWEEN |
Operator keyword |
BIGINT |
Type keyword |
BINARY |
Type keyword |
BLOB |
Type keyword |
BOTH |
Grammar keyword |
BY |
Grammar keyword |
CALL |
Grammar keyword |
CASCADE |
Grammar keyword |
CASE |
Expression keyword |
CHANGE |
Grammar keyword |
CHARACTER |
Type keyword |
CHECK |
Grammar keyword |
COLLATE |
Grammar keyword |
COLUMN |
Grammar keyword |
CONDITION |
Grammar keyword |
CONSTRAINT |
Grammar keyword |
CONTINUE |
Grammar keyword |
CREATE |
Grammar keyword |
CROSS |
JOIN keyword |
CURSOR |
Grammar keyword |
DATABASES |
Grammar keyword |
DAY_HOUR |
Grammar keyword |
DAY_MICROSECOND |
Grammar keyword |
DAY_MINUTE |
Grammar keyword |
DAY_SECOND |
Grammar keyword |
DEC |
Type keyword |
DECIMAL |
Type keyword |
DECLARE |
Grammar keyword |
DELAYED |
Grammar keyword |
DELETE |
Grammar keyword |
DESC |
Grammar keyword |
DESCRIBE |
Grammar keyword |
DETERMINISTIC |
Grammar keyword |
DISTINCT |
SELECT qualifier |
DISTINCTROW |
SELECT qualifier |
DOUBLE |
Type keyword |
DROP |
Grammar keyword |
EACH |
Grammar keyword |
ELSE |
Grammar keyword |
ELSEIF |
Grammar keyword |
ENCLOSED |
Grammar keyword |
ESCAPED |
Grammar keyword |
EXISTS |
Operator keyword |
EXIT |
Grammar keyword |
EXPLAIN |
Grammar keyword |
FETCH |
Clause keyword |
FLOAT |
Type keyword |
FLOAT4 |
Type keyword |
FLOAT8 |
Type keyword |
FOR |
Grammar keyword |
FORCE |
Grammar keyword |
FOREIGN |
Grammar keyword |
FULLTEXT |
Grammar keyword |
GET_FORMAT |
Grammar keyword |
GRANT |
Grammar keyword |
GROUP |
Clause keyword |
HAVING |
Clause keyword |
HIGH_PRIORITY |
Grammar keyword |
HOUR_MICROSECOND |
Grammar keyword |
HOUR_MINUTE |
Grammar keyword |
HOUR_SECOND |
Grammar keyword |
IF |
Expression keyword |
IGNORE |
Grammar keyword |
INDEX |
Grammar keyword |
INFILE |
Grammar keyword |
INNER |
JOIN keyword |
INOUT |
Grammar keyword |
INSERT |
Grammar keyword |
INT |
Type keyword |
INT1 |
Type keyword |
INT2 |
Type keyword |
INT3 |
Type keyword |
INT4 |
Type keyword |
INT8 |
Type keyword |
INTEGER |
Type keyword |
INTERVAL |
Type keyword |
INTO |
Clause keyword |
IS |
Operator keyword |
ITERATE |
Grammar keyword |
JOIN |
JOIN keyword |
JSON_VALUE |
Grammar keyword |
KEY |
Grammar keyword |
KEYS |
Grammar keyword |
KILL |
Grammar keyword |
LEADING |
Grammar keyword |
LEAVE |
Grammar keyword |
LIKE |
Operator keyword |
LIMIT |
Clause keyword |
LINEAR |
Grammar keyword |
LINES |
Grammar keyword |
LOAD |
Grammar keyword |
LOCK |
Grammar keyword |
LONG |
Type keyword |
LONGBLOB |
Type keyword |
LONGTEXT |
Type keyword |
LOOP |
Grammar keyword |
LOW_PRIORITY |
Grammar keyword |
MATCH |
Grammar keyword |
MEDIUMBLOB |
Type keyword |
MEDIUMINT |
Type keyword |
MEDIUMTEXT |
Type keyword |
MIDDLEINT |
Type keyword |
MINUTE_MICROSECOND |
Grammar keyword |
MINUTE_SECOND |
Grammar keyword |
MODIFIES |
Grammar keyword |
NATURAL |
JOIN keyword |
NOT |
Operator keyword |
NO_WRITE_TO_BINLOG |
Grammar keyword |
NUMERIC |
Type keyword |
OPTIMIZE |
Grammar keyword |
OPTION |
Grammar keyword |
OPTIONALLY |
Grammar keyword |
OR |
Operator keyword |
ORDER |
Clause keyword |
OUT |
Grammar keyword |
OUTER |
JOIN keyword |
OUTFILE |
Grammar keyword |
PRECISION |
Grammar keyword |
PRIMARY |
Grammar keyword |
PURGE |
Grammar keyword |
RANGE |
Grammar keyword |
READ |
Grammar keyword |
READS |
Grammar keyword |
REAL |
Type keyword |
REFERENCES |
Grammar keyword |
RENAME |
Grammar keyword |
REQUIRE |
Grammar keyword |
RESIGNAL |
Grammar keyword |
RESTRICT |
Grammar keyword |
RETURN |
Grammar keyword |
REVOKE |
Grammar keyword |
RIGHT |
JOIN keyword |
SECOND_MICROSECOND |
Grammar keyword |
SELECT |
Grammar keyword |
SEPARATOR |
Grammar keyword |
SET |
Grammar keyword |
SHOW |
Grammar keyword |
SIGNAL |
Grammar keyword |
SMALLINT |
Type keyword |
SPATIAL |
Grammar keyword |
SQL |
Grammar keyword |
SQLEXCEPTION |
Grammar keyword |
SQLSTATE |
Grammar keyword |
SQLWARNING |
Grammar keyword |
SQL_BIG_RESULT |
Grammar keyword |
SQL_BUFFER_RESULT |
Grammar keyword |
SQL_CACHE |
Grammar keyword |
SQL_CALC_FOUND_ROWS |
Grammar keyword |
SQL_NO_CACHE |
Grammar keyword |
SQL_SMALL_RESULT |
Grammar keyword |
SSL |
Grammar keyword |
STARTING |
Grammar keyword |
STRAIGHT_JOIN |
Grammar keyword |
TABLE |
Grammar keyword |
TERMINATED |
Grammar keyword |
THEN |
Grammar keyword |
TINYBLOB |
Type keyword |
TINYINT |
Type keyword |
TINYTEXT |
Type keyword |
TO |
Grammar keyword |
TRAILING |
Grammar keyword |
TRIGGER |
Grammar keyword |
UNION |
Clause keyword |
UNIQUE |
Grammar keyword |
UNLOCK |
Grammar keyword |
UNSIGNED |
Type keyword |
UPDATE |
Grammar keyword |
USE |
Grammar keyword |
USING |
Grammar keyword |
VARBINARY |
Type keyword |
VARCHAR |
Type keyword |
VARCHARACTER |
Grammar keyword |
VARYING |
Grammar keyword |
WEIGHT_STRING |
Grammar keyword |
WHEN |
Grammar keyword |
WHERE |
Clause keyword |
WHILE |
Grammar keyword |
WITH |
Clause keyword |
WRITE |
Grammar keyword |
YEAR_MONTH |
Grammar keyword |
ZEROFILL |
Grammar keyword |
Blocked Keywords (1)¶
These keywords cannot be used as unquoted column names in either context.
| Keyword | Workaround |
|---|---|
FROM |
SELECT "from" FROM t |
Workaround: Double-Quoted Identifiers¶
For any keyword that fails as an unquoted column name, you can use double-quoted identifiers:
1 2 3 4 5 | |
Scope and Limitations¶
- Tested contexts:
SELECT keyword FROM tandSELECT t.keyword FROM t. Other contexts (DDL column definitions, INSERT column lists, aliases) may behave differently. - Version-specific: This report reflects GSP Java version 4.1.0.8.
- Case sensitivity: Keywords are case-insensitive.
select,SELECT, andSelectare all treated the same.
How to Report Discrepancies¶
If you encounter a keyword that behaves differently from what this page describes, please report it through your support channel. Include:
- The exact SQL statement
- The GSP parser version
- Whether the same SQL works in MySQL
Methodology¶
- Static extraction: A Python script parses the lexer (
.cod) and grammar (.y) source files to identify all 538 keywords and their grammar classifications. - Runtime validation: A Java test harness validates every classification against actual
TGSqlParserruntime behavior. - JSON dataset: The authoritative data is stored in
docs/generated/mysql_keyword_compatibility.json.