Snowflake Keyword Compatibility Reference¶
Generated for GSP Java version 4.1.9 on 2026-07-29
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 Snowflake parser handles keyword-as-column-name through its grammar rules — a large unreserved_keyword production allows most keywords to be parsed as identifiers in column-name position.
Full Classification Overview¶
Out of 730 keywords recognized by the GSP Snowflake parser:
| Classification | Count | Description |
|---|---|---|
| Allowed | 689 | Can be used as an unquoted column name in both canonical contexts |
| Context-specific | 39 | Fails as SELECT keyword FROM t but works as SELECT t.keyword FROM t |
| Blocked | 2 | Cannot be used as an unquoted column name in either context |
Context-Specific Keywords (39)¶
These keywords parse in one canonical context but not the other (measured against the release stamped above).
| Keyword | SELECT kw FROM t |
SELECT t.kw FROM t |
|---|---|---|
ALL |
no | yes |
ARRAY |
no | yes |
BINARY |
no | yes |
BIT |
no | yes |
BOOLEAN |
no | yes |
BYTEINT |
no | yes |
CASE |
no | yes |
CHAR |
no | yes |
CHARACTER |
no | yes |
CONCURRENTLY |
no | yes |
CONNECT_BY_ROOT |
no | yes |
CROSS |
no | yes |
DECIMAL |
no | yes |
DISTINCT |
no | yes |
DOUBLE |
no | yes |
FLOAT |
no | yes |
FLOAT4 |
no | yes |
FLOAT8 |
no | yes |
FULL |
no | yes |
ILIKE |
no | yes |
IS |
no | yes |
JOIN |
no | yes |
LIKE |
no | yes |
NATURAL |
no | yes |
NOT |
no | yes |
NUMERIC |
no | yes |
OUTER |
no | yes |
OVERLAPS |
no | yes |
PRIOR |
no | yes |
REAL |
no | yes |
REGEXP |
no | yes |
SIMILAR |
no | yes |
SMALLINT |
no | yes |
STRING |
no | yes |
TINYINT |
no | yes |
TOP |
no | yes |
VARBINARY |
no | yes |
VARCHAR |
no | yes |
VERBOSE |
no | yes |
Blocked Keywords (2)¶
These keywords fail as unquoted identifiers in both canonical contexts. Workaround: quote the identifier (e.g. "KEYWORD").
| Keyword |
|---|
FROM |
SET |
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 Snowflake
Methodology¶
- Static extraction: A Python script parses the lexer (
.cod) and grammar (.y) source files to identify all 730 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/snowflake_keyword_compatibility.json.