Amazon Athena 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 Amazon Athena parser includes a lexer lookahead mechanism that allows 60 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 529 keywords recognized by the GSP Amazon Athena parser:
| Classification | Count | Description |
|---|---|---|
| Allowed | 466 | Can be used as an unquoted column name in both canonical contexts |
| Context-specific | 62 | 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 (62)¶
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 |
|---|---|
ALL |
SELECT qualifier |
ARRAY |
Type keyword |
AUTHORIZATION |
Grammar keyword |
BIT |
Grammar keyword |
BOOLEAN |
Type keyword |
CASE |
Expression keyword |
CAST |
Expression keyword |
CHAR |
Type keyword |
COALESCE |
Expression keyword |
CONCURRENTLY |
Grammar keyword |
CROSS |
JOIN keyword |
DEC |
Type keyword |
DECIMAL |
Type keyword |
DISTINCT |
SELECT qualifier |
DOUBLE |
Type keyword |
EXISTS |
Operator keyword |
FLOAT |
Type keyword |
FREEZE |
Grammar keyword |
FULL |
JOIN keyword |
GREATEST |
Expression keyword |
ILIKE |
Operator keyword |
INNER |
JOIN keyword |
INT |
Type keyword |
INTEGER |
Type keyword |
INTERVAL |
Type keyword |
INTO |
Clause keyword |
IS |
Operator keyword |
JOIN |
JOIN keyword |
LEAST |
Expression keyword |
LEFT |
JOIN keyword |
LIKE |
Operator keyword |
MAP |
Grammar keyword |
NATURAL |
JOIN keyword |
NOT |
Operator keyword |
NULLIF |
Expression keyword |
NUMERIC |
Type keyword |
OUTER |
JOIN keyword |
OVERLAPS |
Operator keyword |
OVERLAY |
Expression keyword |
PERCENTILE_CONT |
Grammar keyword |
PERCENTILE_DISC |
Grammar keyword |
REAL |
Type keyword |
RIGHT |
JOIN keyword |
ROW |
Grammar keyword |
SIMILAR |
Operator keyword |
SMALLINT |
Type keyword |
SUBSTRING |
Expression keyword |
TIME |
Grammar keyword |
TINYINT |
Type keyword |
TREAT |
Expression keyword |
TRY_CAST |
Grammar keyword |
VARBINARY |
Type keyword |
VARCHAR |
Type keyword |
VERBOSE |
Grammar keyword |
XMLCONCAT |
Grammar keyword |
XMLELEMENT |
Grammar keyword |
XMLEXISTS |
Grammar keyword |
XMLFOREST |
Grammar keyword |
XMLPARSE |
Grammar keyword |
XMLPI |
Grammar keyword |
XMLROOT |
Grammar keyword |
XMLSERIALIZE |
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 Amazon Athena
Methodology¶
- Static extraction: A Python script parses the lexer (
.cod) and grammar (.y) source files to identify all 529 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/athena_keyword_compatibility.json.