diff --git a/docs/sql-reserved-and-non-reserved-keywords.md b/docs/sql-keywords.md similarity index 95% rename from docs/sql-reserved-and-non-reserved-keywords.md rename to docs/sql-keywords.md index b1561fb593f35..5ba3ad8bd8ccb 100644 --- a/docs/sql-reserved-and-non-reserved-keywords.md +++ b/docs/sql-keywords.md @@ -1,16 +1,20 @@ --- layout: global -title: SQL Reserved/Non-Reserved Keywords -displayTitle: SQL Reserved/Non-Reserved Keywords +title: Spark SQL Keywords +displayTitle: Spark SQL Keywords --- -In Spark SQL, there are 2 kinds of keywords: non-reserved and reserved. Non-reserved keywords have a -special meaning only in particular contexts and can be used as identifiers (e.g., table names, view names, -column names, column aliases, table aliases) in other contexts. Reserved keywords can't be used as -table alias, but can be used as other identifiers. +When `spark.sql.parser.ansi.enabled` is true, 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 WEEK` is an interval literal, but WEEK can be used as identifiers in other places. -The list of reserved and non-reserved keywords can change according to the config -`spark.sql.parser.ansi.enabled`, which is false by default. +When `spark.sql.parser.ansi.enabled` is false, Spark SQL has two kinds of keywords: +* Non-reserved keywords: Same definition as the one when `spark.sql.parser.ansi.enabled=true`. +* Strict-non-reserved keywords: A strict version of non-reserved keywords, which can not be used as table alias. + +By default `spark.sql.parser.ansi.enabled` is false. + +Below is a list of all the keywords in Spark SQL.
| Keyword | Spark SQL | SQL-2011 | |
|---|---|---|---|
| ALTER | non-reserved | non-reserved | reserved |
| ANALYZE | non-reserved | non-reserved | non-reserved |
| AND | reserved | non-reserved | reserved |
| ANTI | reserved | reserved | non-reserved |
| ANTI | reserved | strict-non-reserved | non-reserved |
| ANY | reserved | non-reserved | reserved |
| ARE | non-reserved | non-reserved | reserved |
| ARCHIVE | non-reserved | non-reserved | non-reserved |
| COVAR_POP | non-reserved | non-reserved | reserved |
| COVAR_SAMP | non-reserved | non-reserved | reserved |
| CREATE | reserved | non-reserved | reserved |
| CROSS | reserved | reserved | reserved |
| CROSS | reserved | strict-non-reserved | reserved |
| CUBE | non-reserved | non-reserved | reserved |
| CUME_DIST | non-reserved | non-reserved | reserved |
| CURRENT | non-reserved | non-reserved | reserved |
| ESCAPE | non-reserved | non-reserved | reserved |
| ESCAPED | non-reserved | non-reserved | non-reserved |
| EVERY | non-reserved | non-reserved | reserved |
| EXCEPT | reserved | reserved | reserved |
| EXCEPT | reserved | strict-non-reserved | reserved |
| EXCEPTION | non-reserved | non-reserved | non-reserved |
| EXCHANGE | non-reserved | non-reserved | non-reserved |
| EXEC | non-reserved | non-reserved | reserved |
| FRAME_ROW | non-reserved | non-reserved | reserved |
| FREE | non-reserved | non-reserved | reserved |
| FROM | reserved | non-reserved | reserved |
| FULL | reserved | reserved | reserved |
| FULL | reserved | strict-non-reserved | reserved |
| FUNCTION | non-reserved | non-reserved | reserved |
| FUNCTIONS | non-reserved | non-reserved | non-reserved |
| FUSION | non-reserved | non-reserved | non-reserved |
| INDEXES | non-reserved | non-reserved | non-reserved |
| INITIAL | non-reserved | non-reserved | non-reserved |
| INITIALLY | non-reserved | non-reserved | non-reserved |
| INNER | reserved | reserved | reserved |
| INNER | reserved | strict-non-reserved | reserved |
| INOUT | non-reserved | non-reserved | reserved |
| INPATH | non-reserved | non-reserved | non-reserved |
| INPUT | non-reserved | non-reserved | non-reserved |
| INSERT | non-reserved | non-reserved | reserved |
| INT | non-reserved | non-reserved | reserved |
| INTEGER | non-reserved | non-reserved | reserved |
| INTERSECT | reserved | reserved | reserved |
| INTERSECT | reserved | strict-non-reserved | reserved |
| INTERSECTION | non-reserved | non-reserved | reserved |
| INTERVAL | non-reserved | non-reserved | reserved |
| INTO | reserved | non-reserved | reserved |
| ISOLATION | non-reserved | non-reserved | non-reserved |
| ITEMS | non-reserved | non-reserved | non-reserved |
| ITERATE | non-reserved | non-reserved | reserved |
| JOIN | reserved | reserved | reserved |
| JOIN | reserved | strict-non-reserved | reserved |
| JSON_ARRAY | non-reserved | non-reserved | non-reserved |
| JSON_ARRAYAGG | non-reserved | non-reserved | non-reserved |
| JSON_EXISTS | non-reserved | non-reserved | non-reserved |
| LEAD | non-reserved | non-reserved | reserved |
| LEADING | reserved | non-reserved | reserved |
| LEAVE | non-reserved | non-reserved | reserved |
| LEFT | reserved | reserved | reserved |
| LEFT | reserved | strict-non-reserved | reserved |
| LEVEL | non-reserved | non-reserved | non-reserved |
| LIKE | non-reserved | non-reserved | reserved |
| LIKE_REGEX | non-reserved | non-reserved | reserved |
| MULTISET | non-reserved | non-reserved | reserved |
| NAMES | non-reserved | non-reserved | non-reserved |
| NATIONAL | non-reserved | non-reserved | reserved |
| NATURAL | reserved | reserved | reserved |
| NATURAL | reserved | strict-non-reserved | reserved |
| NCHAR | non-reserved | non-reserved | reserved |
| NCLOB | non-reserved | non-reserved | reserved |
| NEW | non-reserved | non-reserved | reserved |
| OFFSET | non-reserved | non-reserved | reserved |
| OLD | non-reserved | non-reserved | reserved |
| OMIT | non-reserved | non-reserved | non-reserved |
| ON | reserved | reserved | reserved |
| ON | reserved | strict-non-reserved | reserved |
| ONE | non-reserved | non-reserved | non-reserved |
| ONLY | reserved | non-reserved | reserved |
| OPEN | non-reserved | non-reserved | reserved |
| RETURN | non-reserved | non-reserved | reserved |
| RETURNS | non-reserved | non-reserved | reserved |
| REVOKE | non-reserved | non-reserved | reserved |
| RIGHT | reserved | 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 |
| SECTION | non-reserved | non-reserved | non-reserved |
| SEEK | non-reserved | non-reserved | non-reserved |
| SELECT | reserved | non-reserved | reserved |
| SEMI | reserved | reserved | non-reserved |
| SEMI | reserved | strict-non-reserved | non-reserved |
| SENSITIVE | non-reserved | non-reserved | reserved |
| SEPARATED | non-reserved | non-reserved | non-reserved |
| SERDE | non-reserved | non-reserved | non-reserved |
| UNCACHE | non-reserved | non-reserved | non-reserved |
| UNDER | non-reserved | non-reserved | non-reserved |
| UNDO | non-reserved | non-reserved | reserved |
| UNION | reserved | reserved | reserved |
| UNION | reserved | strict-non-reserved | reserved |
| UNIQUE | reserved | non-reserved | reserved |
| UNKNOWN | non-reserved | non-reserved | reserved |
| UNLOCK | non-reserved | non-reserved | non-reserved |
| USAGE | non-reserved | non-reserved | non-reserved |
| USE | non-reserved | non-reserved | non-reserved |
| USER | reserved | non-reserved | reserved |
| USING | reserved | reserved | reserved |
| USING | reserved | strict-non-reserved | reserved |
| VALUE | non-reserved | non-reserved | reserved |
| VALUES | non-reserved | non-reserved | reserved |
| VALUE_OF | non-reserved | non-reserved | reserved |