Spark SQL Keywords
When spark.sql.ansi.enabled is true, Spark SQL will use the ANSI mode parser.
In this mode, Spark SQL has two kinds of keywords:
- Reserved keywords: Keywords that are reserved and can’t be used as identifiers for table, view, column, function, alias, etc.
- Non-reserved keywords: Keywords that have a special meaning only in particular contexts and can be used as identifiers in other contexts. For example,
SELECT 1 WEEKis an interval literal, but WEEK can be used as identifiers in other places.
When the ANSI mode is disabled, Spark SQL has two kinds of keywords:
- Non-reserved keywords: Same definition as the one when the ANSI mode enabled.
- Strict-non-reserved keywords: A strict version of non-reserved keywords, which can not be used as table alias.
By default spark.sql.ansi.enabled is false.
Below is a list of all the keywords in Spark SQL.
| Keyword | Spark SQL | SQL-2011 | |
|---|---|---|---|
| ANSI mode | default mode | ||
| ADD | non-reserved | non-reserved | non-reserved |
| AFTER | non-reserved | non-reserved | non-reserved |
| ALL | reserved | non-reserved | reserved |
| ALTER | non-reserved | non-reserved | reserved |
| ANALYZE | non-reserved | non-reserved | non-reserved |
| AND | reserved | non-reserved | reserved |
| ANTI | reserved | strict-non-reserved | non-reserved |
| ANY | reserved | non-reserved | reserved |
| ARCHIVE | non-reserved | non-reserved | non-reserved |
| ARRAY | non-reserved | non-reserved | reserved |
| AS | reserved | non-reserved | reserved |
| ASC | non-reserved | non-reserved | non-reserved |
| AT | non-reserved | non-reserved | reserved |
| AUTHORIZATION | reserved | non-reserved | reserved |
| BETWEEN | non-reserved | non-reserved | reserved |
| BOTH | reserved | non-reserved | reserved |
| BUCKET | non-reserved | non-reserved | non-reserved |
| BUCKETS | non-reserved | non-reserved | non-reserved |
| BY | non-reserved | non-reserved | reserved |
| CACHE | non-reserved | non-reserved | non-reserved |
| CASCADE | non-reserved | non-reserved | reserved |
| CASE | reserved | non-reserved | reserved |
| CAST | reserved | non-reserved | reserved |
| CHANGE | non-reserved | non-reserved | non-reserved |
| CHECK | reserved | non-reserved | reserved |
| CLEAR | non-reserved | non-reserved | non-reserved |
| CLUSTER | non-reserved | non-reserved | non-reserved |
| CLUSTERED | non-reserved | non-reserved | non-reserved |
| CODEGEN | non-reserved | non-reserved | non-reserved |
| COLLATE | reserved | non-reserved | reserved |
| COLLECTION | non-reserved | non-reserved | non-reserved |
| COLUMN | reserved | non-reserved | reserved |
| COLUMNS | non-reserved | non-reserved | non-reserved |
| COMMENT | non-reserved | non-reserved | non-reserved |
| COMMIT | non-reserved | non-reserved | reserved |
| COMPACT | non-reserved | non-reserved | non-reserved |
| COMPACTIONS | non-reserved | non-reserved | non-reserved |
| COMPUTE | non-reserved | non-reserved | non-reserved |
| CONCATENATE | non-reserved | non-reserved | non-reserved |
| CONSTRAINT | reserved | non-reserved | reserved |
| COST | non-reserved | non-reserved | non-reserved |
| CREATE | reserved | non-reserved | reserved |
| CROSS | reserved | strict-non-reserved | reserved |
| CUBE | non-reserved | non-reserved | reserved |
| CURRENT | non-reserved | non-reserved | reserved |
| CURRENT_DATE | reserved | non-reserved | reserved |
| CURRENT_TIME | reserved | non-reserved | reserved |
| CURRENT_TIMESTAMP | reserved | non-reserved | reserved |
| CURRENT_USER | reserved | non-reserved | reserved |
| DATA | non-reserved | non-reserved | non-reserved |
| DATABASE | non-reserved | non-reserved | non-reserved |
| DATABASES | non-reserved | non-reserved | non-reserved |
| DAY | reserved | non-reserved | reserved |
| DAYS | non-reserved | non-reserved | non-reserved |
| DBPROPERTIES | non-reserved | non-reserved | non-reserved |
| DEFINED | non-reserved | non-reserved | non-reserved |
| DELETE | non-reserved | non-reserved | reserved |
| DELIMITED | non-reserved | non-reserved | non-reserved |
| DESC | non-reserved | non-reserved | non-reserved |
| DESCRIBE | non-reserved | non-reserved | reserved |
| DFS | non-reserved | non-reserved | non-reserved |
| DIRECTORIES | non-reserved | non-reserved | non-reserved |
| DIRECTORY | non-reserved | non-reserved | non-reserved |
| DISTINCT | reserved | non-reserved | reserved |
| DISTRIBUTE | non-reserved | non-reserved | non-reserved |
| DIV | non-reserved | non-reserved | non-reserved |
| DROP | non-reserved | non-reserved | reserved |
| ELSE | reserved | non-reserved | reserved |
| END | reserved | non-reserved | reserved |
| ESCAPE | reserved | non-reserved | reserved |
| ESCAPED | non-reserved | non-reserved | non-reserved |
| EXCEPT | reserved | strict-non-reserved | reserved |
| EXCHANGE | non-reserved | non-reserved | non-reserved |
| EXISTS | non-reserved | non-reserved | reserved |
| EXPLAIN | non-reserved | non-reserved | non-reserved |
| EXPORT | non-reserved | non-reserved | non-reserved |
| EXTENDED | non-reserved | non-reserved | non-reserved |
| EXTERNAL | non-reserved | non-reserved | reserved |
| EXTRACT | non-reserved | non-reserved | reserved |
| FALSE | reserved | non-reserved | reserved |
| FETCH | reserved | non-reserved | reserved |
| FIELDS | non-reserved | non-reserved | non-reserved |
| FILEFORMAT | non-reserved | non-reserved | non-reserved |
| FIRST | non-reserved | non-reserved | non-reserved |
| FIRST_VALUE | reserved | non-reserved | reserved |
| FOLLOWING | non-reserved | non-reserved | non-reserved |
| FOR | reserved | non-reserved | reserved |
| FOREIGN | reserved | non-reserved | reserved |
| FORMAT | non-reserved | non-reserved | non-reserved |
| FORMATTED | non-reserved | non-reserved | non-reserved |
| FROM | reserved | non-reserved | reserved |
| FULL | reserved | strict-non-reserved | reserved |
| FUNCTION | non-reserved | non-reserved | reserved |
| FUNCTIONS | non-reserved | non-reserved | non-reserved |
| GLOBAL | non-reserved | non-reserved | reserved |
| GRANT | reserved | non-reserved | reserved |
| GROUP | reserved | non-reserved | reserved |
| GROUPING | non-reserved | non-reserved | reserved |
| HAVING | reserved | non-reserved | reserved |
| HOUR | reserved | non-reserved | reserved |
| HOURS | non-reserved | non-reserved | non-reserved |
| IF | non-reserved | non-reserved | reserved |
| IGNORE | non-reserved | non-reserved | non-reserved |
| IMPORT | non-reserved | non-reserved | non-reserved |
| IN | reserved | non-reserved | reserved |
| INDEX | non-reserved | non-reserved | non-reserved |
| INDEXES | non-reserved | non-reserved | non-reserved |
| INNER | reserved | strict-non-reserved | reserved |
| INPATH | non-reserved | non-reserved | non-reserved |
| INPUTFORMAT | non-reserved | non-reserved | non-reserved |
| INSERT | non-reserved | non-reserved | reserved |
| INTERSECT | reserved | strict-non-reserved | reserved |
| INTERVAL | non-reserved | non-reserved | reserved |
| INTO | reserved | non-reserved | reserved |
| IS | reserved | non-reserved | reserved |
| ITEMS | non-reserved | non-reserved | non-reserved |
| JOIN | reserved | strict-non-reserved | reserved |
| KEYS | non-reserved | non-reserved | non-reserved |
| LAST | non-reserved | non-reserved | non-reserved |
| LAST_VALUE | reserved | non-reserved | reserved |
| LATERAL | non-reserved | non-reserved | reserved |
| LAZY | non-reserved | non-reserved | non-reserved |
| LEADING | reserved | non-reserved | reserved |
| LEFT | reserved | strict-non-reserved | reserved |
| LIKE | non-reserved | non-reserved | reserved |
| LIMIT | non-reserved | non-reserved | non-reserved |
| LINES | non-reserved | non-reserved | non-reserved |
| LIST | non-reserved | non-reserved | non-reserved |
| LOAD | non-reserved | non-reserved | non-reserved |
| LOCAL | non-reserved | non-reserved | reserved |
| LOCATION | non-reserved | non-reserved | non-reserved |
| LOCK | non-reserved | non-reserved | non-reserved |
| LOCKS | non-reserved | non-reserved | non-reserved |
| LOGICAL | non-reserved | non-reserved | non-reserved |
| MACRO | non-reserved | non-reserved | non-reserved |
| MAP | non-reserved | non-reserved | non-reserved |
| MATCHED | non-reserved | non-reserved | non-reserved |
| MERGE | non-reserved | non-reserved | non-reserved |
| MICROSECOND | non-reserved | non-reserved | non-reserved |
| MICROSECONDS | non-reserved | non-reserved | non-reserved |
| MILLISECOND | non-reserved | non-reserved | non-reserved |
| MILLISECONDS | non-reserved | non-reserved | non-reserved |
| MINUS | reserved | strict-non-reserved | non-reserved |
| MINUTE | reserved | non-reserved | reserved |
| MINUTES | non-reserved | non-reserved | non-reserved |
| MONTH | reserved | non-reserved | reserved |
| MONTHS | non-reserved | non-reserved | non-reserved |
| MSCK | non-reserved | non-reserved | non-reserved |
| NAMESPACE | non-reserved | non-reserved | non-reserved |
| NAMESPACES | non-reserved | non-reserved | non-reserved |
| NATURAL | reserved | strict-non-reserved | reserved |
| NO | non-reserved | non-reserved | reserved |
| NOT | reserved | non-reserved | reserved |
| NULL | reserved | non-reserved | reserved |
| NULLS | non-reserved | non-reserved | non-reserved |
| OF | non-reserved | non-reserved | reserved |
| ON | reserved | strict-non-reserved | reserved |
| ONLY | reserved | non-reserved | reserved |
| OPTION | non-reserved | non-reserved | non-reserved |
| OPTIONS | non-reserved | non-reserved | non-reserved |
| OR | reserved | non-reserved | reserved |
| ORDER | reserved | non-reserved | reserved |
| OUT | non-reserved | non-reserved | reserved |
| OUTER | reserved | non-reserved | reserved |
| OUTPUTFORMAT | non-reserved | non-reserved | non-reserved |
| OVER | non-reserved | non-reserved | non-reserved |
| OVERLAPS | reserved | non-reserved | reserved |
| OVERLAY | non-reserved | non-reserved | non-reserved |
| OVERWRITE | non-reserved | non-reserved | non-reserved |
| PARTITION | non-reserved | non-reserved | reserved |
| PARTITIONED | non-reserved | non-reserved | non-reserved |
| PARTITIONS | non-reserved | non-reserved | non-reserved |
| PERCENT | non-reserved | non-reserved | non-reserved |
| PIVOT | non-reserved | non-reserved | non-reserved |
| PLACING | non-reserved | non-reserved | non-reserved |
| POSITION | non-reserved | non-reserved | reserved |
| PRECEDING | non-reserved | non-reserved | non-reserved |
| PRIMARY | reserved | non-reserved | reserved |
| PRINCIPALS | non-reserved | non-reserved | non-reserved |
| PROPERTIES | non-reserved | non-reserved | non-reserved |
| PURGE | non-reserved | non-reserved | non-reserved |
| QUERY | non-reserved | non-reserved | non-reserved |
| RANGE | non-reserved | non-reserved | reserved |
| RECORDREADER | non-reserved | non-reserved | non-reserved |
| RECORDWRITER | non-reserved | non-reserved | non-reserved |
| RECOVER | non-reserved | non-reserved | non-reserved |
| REDUCE | non-reserved | non-reserved | non-reserved |
| REFERENCES | reserved | non-reserved | reserved |
| REFRESH | non-reserved | non-reserved | non-reserved |
| RENAME | non-reserved | non-reserved | non-reserved |
| REPAIR | non-reserved | non-reserved | non-reserved |
| REPLACE | non-reserved | non-reserved | non-reserved |
| RESET | non-reserved | non-reserved | non-reserved |
| RESPECT | non-reserved | non-reserved | non-reserved |
| RESTRICT | non-reserved | non-reserved | non-reserved |
| REVOKE | non-reserved | non-reserved | reserved |
| RIGHT | reserved | strict-non-reserved | reserved |
| RLIKE | non-reserved | non-reserved | non-reserved |
| ROLE | non-reserved | non-reserved | non-reserved |
| ROLES | non-reserved | non-reserved | non-reserved |
| ROLLBACK | non-reserved | non-reserved | reserved |
| ROLLUP | non-reserved | non-reserved | reserved |
| ROW | non-reserved | non-reserved | reserved |
| ROWS | non-reserved | non-reserved | reserved |
| SCHEMA | non-reserved | non-reserved | non-reserved |
| SECOND | reserved | non-reserved | reserved |
| SECONDS | non-reserved | non-reserved | non-reserved |
| SELECT | reserved | non-reserved | reserved |
| SEMI | reserved | strict-non-reserved | non-reserved |
| SEPARATED | non-reserved | non-reserved | non-reserved |
| SERDE | non-reserved | non-reserved | non-reserved |
| SERDEPROPERTIES | non-reserved | non-reserved | non-reserved |
| SESSION_USER | reserved | non-reserved | reserved |
| SET | non-reserved | non-reserved | reserved |
| SETS | non-reserved | non-reserved | non-reserved |
| SHOW | non-reserved | non-reserved | non-reserved |
| SKEWED | non-reserved | non-reserved | non-reserved |
| SOME | reserved | non-reserved | reserved |
| SORT | non-reserved | non-reserved | non-reserved |
| SORTED | non-reserved | non-reserved | non-reserved |
| START | non-reserved | non-reserved | reserved |
| STATISTICS | non-reserved | non-reserved | non-reserved |
| STORED | non-reserved | non-reserved | non-reserved |
| STRATIFY | non-reserved | non-reserved | non-reserved |
| STRUCT | non-reserved | non-reserved | non-reserved |
| SUBSTR | non-reserved | non-reserved | non-reserved |
| SUBSTRING | non-reserved | non-reserved | non-reserved |
| TABLE | reserved | non-reserved | reserved |
| TABLES | non-reserved | non-reserved | non-reserved |
| TABLESAMPLE | non-reserved | non-reserved | reserved |
| TBLPROPERTIES | non-reserved | non-reserved | non-reserved |
| TEMPORARY | non-reserved | non-reserved | non-reserved |
| TERMINATED | non-reserved | non-reserved | non-reserved |
| THEN | reserved | non-reserved | reserved |
| TO | reserved | non-reserved | reserved |
| TOUCH | non-reserved | non-reserved | non-reserved |
| TRAILING | reserved | non-reserved | reserved |
| TRANSACTION | non-reserved | non-reserved | non-reserved |
| TRANSACTIONS | non-reserved | non-reserved | non-reserved |
| TRANSFORM | non-reserved | non-reserved | non-reserved |
| TRIM | non-reserved | non-reserved | non-reserved |
| TRUE | non-reserved | non-reserved | reserved |
| TRUNCATE | non-reserved | non-reserved | reserved |
| UNARCHIVE | non-reserved | non-reserved | non-reserved |
| UNBOUNDED | non-reserved | non-reserved | non-reserved |
| UNCACHE | non-reserved | non-reserved | non-reserved |
| UNION | reserved | strict-non-reserved | reserved |
| UNIQUE | reserved | non-reserved | reserved |
| UNKNOWN | reserved | non-reserved | reserved |
| UNLOCK | non-reserved | non-reserved | non-reserved |
| UNSET | non-reserved | non-reserved | non-reserved |
| UPDATE | non-reserved | non-reserved | reserved |
| USE | non-reserved | non-reserved | non-reserved |
| USER | reserved | non-reserved | reserved |
| USING | reserved | strict-non-reserved | reserved |
| VALUES | non-reserved | non-reserved | reserved |
| VIEW | non-reserved | non-reserved | non-reserved |
| WEEK | non-reserved | non-reserved | non-reserved |
| WEEKS | non-reserved | non-reserved | non-reserved |
| WHEN | reserved | non-reserved | reserved |
| WHERE | reserved | non-reserved | reserved |
| WINDOW | non-reserved | non-reserved | reserved |
| WITH | reserved | non-reserved | reserved |
| YEAR | reserved | non-reserved | reserved |
| YEARS | non-reserved | non-reserved | non-reserved |
