4a486d6716
## What changes were proposed in this pull request? Currently we can use `df.printSchema` to discover the schema information for a query. We should have a way to describe the output schema of a query using SQL interface. Example: DESCRIBE SELECT * FROM desc_table DESCRIBE QUERY SELECT * FROM desc_table ```SQL spark-sql> create table desc_table (c1 int comment 'c1-comment', c2 decimal comment 'c2-comment', c3 string); spark-sql> desc select * from desc_table; c1 int c1-comment c2 decimal(10,0) c2-comment c3 string NULL ``` ## How was this patch tested? Added a new test under SQLQueryTestSuite and SparkSqlParserSuite Closes #23883 from dilipbiswal/dkb_describe_query. Authored-by: Dilip Biswal <dbiswal@us.ibm.com> Signed-off-by: Wenchen Fan <wenchen@databricks.com>
49 KiB
49 KiB
layout | title | displayTitle |
---|---|---|
global | SQL Reserved/Non-Reserved Keywords | SQL Reserved/Non-Reserved 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.
The list of reserved and non-reserved keywords can change according to the config
spark.sql.parser.ansi.enabled
, which is false by default.
Keyword | Spark SQL | SQL-2011 | |
---|---|---|---|
ANSI mode | default mode | ||
ABS | non-reserved | non-reserved | reserved |
ABSOLUTE | non-reserved | non-reserved | non-reserved |
ACOS | non-reserved | non-reserved | non-reserved |
ACTION | non-reserved | non-reserved | non-reserved |
ADD | non-reserved | non-reserved | non-reserved |
AFTER | non-reserved | non-reserved | non-reserved |
ALL | reserved | non-reserved | reserved |
ALLOCATE | non-reserved | non-reserved | reserved |
ALTER | non-reserved | non-reserved | reserved |
ANALYZE | non-reserved | non-reserved | non-reserved |
AND | reserved | non-reserved | reserved |
ANTI | reserved | reserved | non-reserved |
ANY | reserved | non-reserved | reserved |
ARE | non-reserved | non-reserved | reserved |
ARCHIVE | non-reserved | non-reserved | non-reserved |
ARRAY | non-reserved | non-reserved | reserved |
ARRAY_AGG | non-reserved | non-reserved | reserved |
ARRAY_MAX_CARDINALITY | non-reserved | non-reserved | reserved |
AS | reserved | non-reserved | reserved |
ASC | non-reserved | non-reserved | non-reserved |
ASENSITIVE | non-reserved | non-reserved | reserved |
ASIN | non-reserved | non-reserved | reserved |
ASSERTION | non-reserved | non-reserved | non-reserved |
ASYMMETRIC | non-reserved | non-reserved | reserved |
AT | non-reserved | non-reserved | reserved |
ATAN | non-reserved | non-reserved | non-reserved |
ATOMIC | non-reserved | non-reserved | reserved |
AUTHORIZATION | reserved | non-reserved | reserved |
AVG | non-reserved | non-reserved | reserved |
BEFORE | non-reserved | non-reserved | non-reserved |
BEGIN | non-reserved | non-reserved | reserved |
BEGIN_FRAME | non-reserved | non-reserved | reserved |
BEGIN_PARTITION | non-reserved | non-reserved | reserved |
BETWEEN | non-reserved | non-reserved | reserved |
BIGINT | non-reserved | non-reserved | reserved |
BINARY | non-reserved | non-reserved | reserved |
BIT | non-reserved | non-reserved | non-reserved |
BIT_LENGTH | non-reserved | non-reserved | non-reserved |
BLOB | non-reserved | non-reserved | reserved |
BOOLEAN | non-reserved | non-reserved | reserved |
BOTH | reserved | non-reserved | reserved |
BREADTH | non-reserved | non-reserved | non-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 |
CALL | non-reserved | non-reserved | reserved |
CALLED | non-reserved | non-reserved | reserved |
CARDINALITY | non-reserved | non-reserved | reserved |
CASCADE | non-reserved | non-reserved | reserved |
CASCADED | non-reserved | non-reserved | reserved |
CASE | reserved | non-reserved | reserved |
CAST | reserved | non-reserved | reserved |
CATALOG | non-reserved | non-reserved | non-reserved |
CEIL | non-reserved | non-reserved | reserved |
CEILING | non-reserved | non-reserved | reserved |
CHANGE | non-reserved | non-reserved | non-reserved |
CHAR | non-reserved | non-reserved | reserved |
CHAR_LENGTH | non-reserved | non-reserved | reserved |
CHARACTER | non-reserved | non-reserved | reserved |
CHARACTER_LENGTH | non-reserved | non-reserved | reserved |
CHECK | reserved | non-reserved | reserved |
CLASSIFIER | non-reserved | non-reserved | non-reserved |
CLEAR | non-reserved | non-reserved | non-reserved |
CLOB | non-reserved | non-reserved | reserved |
CLOSE | non-reserved | non-reserved | reserved |
CLUSTER | non-reserved | non-reserved | non-reserved |
CLUSTERED | non-reserved | non-reserved | non-reserved |
COALESCE | non-reserved | non-reserved | reserved |
CODEGEN | non-reserved | non-reserved | non-reserved |
COLLATE | reserved | non-reserved | reserved |
COLLATION | non-reserved | non-reserved | non-reserved |
COLLECT | non-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 |
CONDITION | non-reserved | non-reserved | reserved |
CONNECT | non-reserved | non-reserved | non-reserved |
CONNECTION | non-reserved | non-reserved | non-reserved |
CONSTRAINT | reserved | non-reserved | reserved |
CONSTRAINTS | non-reserved | non-reserved | non-reserved |
CONSTRUCTOR | non-reserved | non-reserved | non-reserved |
CONTAINS | non-reserved | non-reserved | non-reserved |
CONTINUE | non-reserved | non-reserved | non-reserved |
CONVERT | non-reserved | non-reserved | reserved |
COPY | non-reserved | non-reserved | non-reserved |
CORR | non-reserved | non-reserved | reserved |
CORRESPONDING | non-reserved | non-reserved | reserved |
COS | non-reserved | non-reserved | non-reserved |
COSH | non-reserved | non-reserved | non-reserved |
COST | non-reserved | non-reserved | non-reserved |
COUNT | non-reserved | non-reserved | reserved |
COVAR_POP | non-reserved | non-reserved | reserved |
COVAR_SAMP | non-reserved | non-reserved | reserved |
CREATE | reserved | non-reserved | reserved |
CROSS | reserved | reserved | reserved |
CUBE | non-reserved | non-reserved | reserved |
CUME_DIST | non-reserved | non-reserved | reserved |
CURRENT | non-reserved | non-reserved | reserved |
CURRENT_CATALOG | non-reserved | non-reserved | reserved |
CURRENT_DATE | reserved | non-reserved | reserved |
CURRENT_DEFAULT_TRANSFORM_GROUP | non-reserved | non-reserved | reserved |
CURRENT_PATH | non-reserved | non-reserved | reserved |
CURRENT_ROLE | non-reserved | non-reserved | reserved |
CURRENT_ROW | non-reserved | non-reserved | reserved |
CURRENT_SCHEMA | non-reserved | non-reserved | reserved |
CURRENT_TIME | reserved | non-reserved | reserved |
CURRENT_TIMESTAMP | reserved | non-reserved | reserved |
CURRENT_TRANSFORM_GROUP_FOR_TYPE | non-reserved | non-reserved | reserved |
CURRENT_USER | reserved | non-reserved | reserved |
CURSOR | non-reserved | non-reserved | reserved |
CYCLE | non-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 |
DATE | non-reserved | non-reserved | reserved |
DAY | non-reserved | non-reserved | reserved |
DBPROPERTIES | non-reserved | non-reserved | non-reserved |
DEALLOCATE | non-reserved | non-reserved | reserved |
DEC | non-reserved | non-reserved | reserved |
DECFLOAT | non-reserved | non-reserved | non-reserved |
DECIMAL | non-reserved | non-reserved | reserved |
DECLARE | non-reserved | non-reserved | reserved |
DEFAULT | non-reserved | non-reserved | reserved |
DEFERRABLE | non-reserved | non-reserved | non-reserved |
DEFERRED | non-reserved | non-reserved | non-reserved |
DEFINE | 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 |
DENSE_RANK | non-reserved | non-reserved | reserved |
DEPTH | non-reserved | non-reserved | non-reserved |
DEREF | non-reserved | non-reserved | reserved |
DESC | non-reserved | non-reserved | non-reserved |
DESCRIBE | non-reserved | non-reserved | reserved |
QUERY | non-reserved | non-reserved | non-reserved |
DESCRIPTOR | non-reserved | non-reserved | non-reserved |
DETERMINISTIC | non-reserved | non-reserved | reserved |
DFS | non-reserved | non-reserved | non-reserved |
DIAGNOSTICS | non-reserved | non-reserved | non-reserved |
DIRECTORIES | non-reserved | non-reserved | non-reserved |
DIRECTORY | non-reserved | non-reserved | non-reserved |
DISCONNECT | non-reserved | non-reserved | reserved |
DISTINCT | reserved | non-reserved | reserved |
DISTRIBUTE | non-reserved | non-reserved | non-reserved |
DIV | non-reserved | non-reserved | non-reserved |
DO | non-reserved | non-reserved | reserved |
DOMAIN | non-reserved | non-reserved | non-reserved |
DOUBLE | non-reserved | non-reserved | reserved |
DROP | non-reserved | non-reserved | reserved |
DYNAMIC | non-reserved | non-reserved | reserved |
EACH | non-reserved | non-reserved | reserved |
ELEMENT | non-reserved | non-reserved | reserved |
ELSE | reserved | non-reserved | reserved |
ELSEIF | non-reserved | non-reserved | reserved |
EMPTY | non-reserved | non-reserved | non-reserved |
END | reserved | non-reserved | reserved |
END_FRAME | non-reserved | non-reserved | reserved |
END_PARTITION | non-reserved | non-reserved | reserved |
EQUALS | non-reserved | non-reserved | non-reserved |
ESCAPE | non-reserved | non-reserved | reserved |
ESCAPED | non-reserved | non-reserved | non-reserved |
EVERY | non-reserved | non-reserved | reserved |
EXCEPT | reserved | reserved | reserved |
EXCEPTION | non-reserved | non-reserved | non-reserved |
EXCHANGE | non-reserved | non-reserved | non-reserved |
EXEC | non-reserved | non-reserved | reserved |
EXECUTE | non-reserved | non-reserved | reserved |
EXISTS | non-reserved | non-reserved | reserved |
EXIT | non-reserved | non-reserved | non-reserved |
EXP | non-reserved | non-reserved | non-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 |
FILTER | non-reserved | non-reserved | reserved |
FIRST | non-reserved | non-reserved | non-reserved |
FIRST_VALUE | non-reserved | non-reserved | reserved |
FLOAT | non-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 |
FOUND | non-reserved | non-reserved | non-reserved |
FRAME_ROW | non-reserved | non-reserved | reserved |
FREE | non-reserved | non-reserved | reserved |
FROM | reserved | non-reserved | reserved |
FULL | reserved | reserved | reserved |
FUNCTION | non-reserved | non-reserved | reserved |
FUNCTIONS | non-reserved | non-reserved | non-reserved |
FUSION | non-reserved | non-reserved | non-reserved |
GENERAL | non-reserved | non-reserved | non-reserved |
GET | non-reserved | non-reserved | reserved |
GLOBAL | non-reserved | non-reserved | reserved |
GO | non-reserved | non-reserved | non-reserved |
GOTO | non-reserved | non-reserved | non-reserved |
GRANT | reserved | non-reserved | reserved |
GROUP | reserved | non-reserved | reserved |
GROUPING | non-reserved | non-reserved | reserved |
GROUPS | non-reserved | non-reserved | reserved |
HANDLER | non-reserved | non-reserved | reserved |
HAVING | reserved | non-reserved | reserved |
HOLD | non-reserved | non-reserved | reserved |
HOUR | non-reserved | non-reserved | reserved |
IDENTITY | non-reserved | non-reserved | reserved |
IF | non-reserved | non-reserved | reserved |
IGNORE | non-reserved | non-reserved | non-reserved |
IMMEDIATE | non-reserved | non-reserved | non-reserved |
IMPORT | non-reserved | non-reserved | non-reserved |
IN | reserved | non-reserved | reserved |
INDICATOR | non-reserved | non-reserved | reserved |
INDEX | 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 |
INOUT | non-reserved | non-reserved | reserved |
INPATH | non-reserved | non-reserved | non-reserved |
INPUT | non-reserved | non-reserved | non-reserved |
INPUTFORMAT | non-reserved | non-reserved | non-reserved |
INSENSITIVE | non-reserved | non-reserved | reserved |
INSERT | non-reserved | non-reserved | reserved |
INT | non-reserved | non-reserved | reserved |
INTEGER | non-reserved | non-reserved | reserved |
INTERSECT | reserved | reserved | reserved |
INTERSECTION | non-reserved | non-reserved | reserved |
INTERVAL | non-reserved | non-reserved | reserved |
INTO | reserved | non-reserved | reserved |
IS | 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 |
JSON_ARRAY | non-reserved | non-reserved | non-reserved |
JSON_ARRAYAGG | non-reserved | non-reserved | non-reserved |
JSON_EXISTS | non-reserved | non-reserved | non-reserved |
JSON_OBJECT | non-reserved | non-reserved | non-reserved |
JSON_OBJECTAGG | non-reserved | non-reserved | non-reserved |
JSON_QUERY | non-reserved | non-reserved | non-reserved |
JSON_TABLE | non-reserved | non-reserved | non-reserved |
JSON_TABLE_PRIMITIVE | non-reserved | non-reserved | non-reserved |
JSON_VALUE | non-reserved | non-reserved | non-reserved |
KEY | non-reserved | non-reserved | non-reserved |
KEYS | non-reserved | non-reserved | non-reserved |
LAG | non-reserved | non-reserved | non-reserved |
LANGUAGE | non-reserved | non-reserved | reserved |
LARGE | non-reserved | non-reserved | reserved |
LAST | non-reserved | non-reserved | non-reserved |
LAST_VALUE | non-reserved | non-reserved | reserved |
LATERAL | non-reserved | non-reserved | reserved |
LAZY | 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 |
LEVEL | non-reserved | non-reserved | non-reserved |
LIKE | non-reserved | non-reserved | reserved |
LIKE_REGEX | 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 |
LISTAGG | non-reserved | non-reserved | non-reserved |
LN | non-reserved | non-reserved | reserved |
LOAD | non-reserved | non-reserved | non-reserved |
LOCAL | non-reserved | non-reserved | reserved |
LOCALTIME | non-reserved | non-reserved | reserved |
LOCALTIMESTAMP | non-reserved | non-reserved | reserved |
LOCATION | non-reserved | non-reserved | non-reserved |
LOCATOR | non-reserved | non-reserved | non-reserved |
LOCK | non-reserved | non-reserved | non-reserved |
LOCKS | non-reserved | non-reserved | non-reserved |
LOG | non-reserved | non-reserved | non-reserved |
LOG10 | non-reserved | non-reserved | non-reserved |
LOGICAL | non-reserved | non-reserved | non-reserved |
LOOP | non-reserved | non-reserved | reserved |
LOWER | non-reserved | non-reserved | reserved |
MACRO | non-reserved | non-reserved | non-reserved |
MAP | non-reserved | non-reserved | non-reserved |
MATCH | non-reserved | non-reserved | reserved |
MATCH_NUMBER | non-reserved | non-reserved | non-reserved |
MATCH_RECOGNIZE | non-reserved | non-reserved | non-reserved |
MATCHES | non-reserved | non-reserved | non-reserved |
MAX | non-reserved | non-reserved | reserved |
MEMBER | non-reserved | non-reserved | reserved |
MERGE | non-reserved | non-reserved | reserved |
METHOD | non-reserved | non-reserved | reserved |
MIN | non-reserved | non-reserved | reserved |
MINUS | reserved | reserved | non-reserved |
MINUTE | non-reserved | non-reserved | reserved |
MOD | non-reserved | non-reserved | reserved |
MODIFIES | non-reserved | non-reserved | reserved |
MODULE | non-reserved | non-reserved | reserved |
MONTH | non-reserved | non-reserved | reserved |
MSCK | non-reserved | non-reserved | non-reserved |
MULTISET | non-reserved | non-reserved | reserved |
NAMES | non-reserved | non-reserved | non-reserved |
NATIONAL | non-reserved | non-reserved | reserved |
NATURAL | reserved | reserved | reserved |
NCHAR | non-reserved | non-reserved | reserved |
NCLOB | non-reserved | non-reserved | reserved |
NEW | non-reserved | non-reserved | reserved |
NEXT | non-reserved | non-reserved | non-reserved |
NO | non-reserved | non-reserved | reserved |
NONE | non-reserved | non-reserved | reserved |
NORMALIZE | non-reserved | non-reserved | reserved |
NOT | reserved | non-reserved | reserved |
NTH_VALUE | non-reserved | non-reserved | reserved |
NTILE | non-reserved | non-reserved | reserved |
NULL | reserved | non-reserved | reserved |
NULLS | non-reserved | non-reserved | non-reserved |
NULLIF | non-reserved | non-reserved | reserved |
NUMERIC | non-reserved | non-reserved | reserved |
OBJECT | non-reserved | non-reserved | non-reserved |
OCCURRENCES_REGEX | non-reserved | non-reserved | non-reserved |
OCTET_LENGTH | non-reserved | non-reserved | reserved |
OF | 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 |
ONE | non-reserved | non-reserved | non-reserved |
ONLY | reserved | non-reserved | reserved |
OPEN | non-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 |
ORDINALITY | non-reserved | non-reserved | non-reserved |
OUT | non-reserved | non-reserved | reserved |
OUTER | reserved | non-reserved | reserved |
OUTPUT | non-reserved | non-reserved | non-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 | reserved |
OVERWRITE | non-reserved | non-reserved | non-reserved |
PAD | non-reserved | non-reserved | non-reserved |
PARAMETER | non-reserved | non-reserved | reserved |
PARTIAL | 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 |
PATH | non-reserved | non-reserved | non-reserved |
PATTERN | non-reserved | non-reserved | non-reserved |
PER | non-reserved | non-reserved | non-reserved |
PERCENT | non-reserved | non-reserved | reserved |
PERCENT_RANK | non-reserved | non-reserved | reserved |
PERCENTILE_CONT | non-reserved | non-reserved | reserved |
PERCENTILE_DISC | non-reserved | non-reserved | reserved |
PERCENTLIT | non-reserved | non-reserved | non-reserved |
PERIOD | non-reserved | non-reserved | reserved |
PIVOT | non-reserved | non-reserved | non-reserved |
PORTION | non-reserved | non-reserved | reserved |
POSITION | non-reserved | non-reserved | reserved |
POSITION_REGEX | non-reserved | non-reserved | reserved |
POWER | non-reserved | non-reserved | reserved |
PRECEDES | non-reserved | non-reserved | reserved |
PRECEDING | non-reserved | non-reserved | non-reserved |
PRECISION | non-reserved | non-reserved | reserved |
PREPARE | non-reserved | non-reserved | reserved |
PRESERVE | non-reserved | non-reserved | non-reserved |
PRIMARY | reserved | non-reserved | reserved |
PRINCIPALS | non-reserved | non-reserved | non-reserved |
PRIOR | non-reserved | non-reserved | non-reserved |
PRIVILEGES | non-reserved | non-reserved | non-reserved |
PROCEDURE | non-reserved | non-reserved | reserved |
PTF | non-reserved | non-reserved | non-reserved |
PUBLIC | non-reserved | non-reserved | non-reserved |
PURGE | non-reserved | non-reserved | non-reserved |
RANGE | non-reserved | non-reserved | reserved |
RANK | non-reserved | non-reserved | reserved |
READ | non-reserved | non-reserved | non-reserved |
READS | non-reserved | non-reserved | reserved |
REAL | non-reserved | non-reserved | reserved |
RECORDREADER | non-reserved | non-reserved | non-reserved |
RECORDWRITER | non-reserved | non-reserved | non-reserved |
RECURSIVE | non-reserved | non-reserved | reserved |
RECOVER | non-reserved | non-reserved | non-reserved |
REDUCE | non-reserved | non-reserved | non-reserved |
REF | non-reserved | non-reserved | reserved |
REFERENCES | reserved | non-reserved | reserved |
REFERENCING | non-reserved | non-reserved | reserved |
REFRESH | non-reserved | non-reserved | non-reserved |
REGR_AVGX | non-reserved | non-reserved | reserved |
REGR_AVGY | non-reserved | non-reserved | reserved |
REGR_COUNT | non-reserved | non-reserved | reserved |
REGR_INTERCEPT | non-reserved | non-reserved | reserved |
REGR_R2 | non-reserved | non-reserved | reserved |
REGR_SLOPE | non-reserved | non-reserved | reserved |
REGR_SXX | non-reserved | non-reserved | reserved |
REGR_SXY | non-reserved | non-reserved | reserved |
REGR_SYY | non-reserved | non-reserved | reserved |
RELATIVE | non-reserved | non-reserved | non-reserved |
RELEASE | non-reserved | non-reserved | reserved |
RENAME | non-reserved | non-reserved | non-reserved |
REPAIR | non-reserved | non-reserved | non-reserved |
REPEAT | non-reserved | non-reserved | reserved |
REPLACE | non-reserved | non-reserved | non-reserved |
RESET | non-reserved | non-reserved | non-reserved |
RESIGNAL | non-reserved | non-reserved | reserved |
RESTRICT | non-reserved | non-reserved | non-reserved |
RESULT | 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 |
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 |
ROUTINE | non-reserved | non-reserved | non-reserved |
ROW | non-reserved | non-reserved | reserved |
ROW_NUMBER | non-reserved | non-reserved | reserved |
ROWS | non-reserved | non-reserved | reserved |
RUNNING | non-reserved | non-reserved | non-reserved |
SAVEPOINT | non-reserved | non-reserved | reserved |
SCHEMA | non-reserved | non-reserved | non-reserved |
SCOPE | non-reserved | non-reserved | reserved |
SCROLL | non-reserved | non-reserved | reserved |
SEARCH | non-reserved | non-reserved | reserved |
SECOND | non-reserved | non-reserved | 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 |
SENSITIVE | non-reserved | non-reserved | reserved |
SEPARATED | non-reserved | non-reserved | non-reserved |
SERDE | non-reserved | non-reserved | non-reserved |
SERDEPROPERTIES | non-reserved | non-reserved | non-reserved |
SESSION | 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 |
SIGNAL | non-reserved | non-reserved | reserved |
SIMILAR | non-reserved | non-reserved | reserved |
SIN | non-reserved | non-reserved | non-reserved |
SINH | non-reserved | non-reserved | non-reserved |
SIZE | non-reserved | non-reserved | non-reserved |
SKIP | non-reserved | non-reserved | non-reserved |
SKEWED | non-reserved | non-reserved | non-reserved |
SMALLINT | non-reserved | non-reserved | reserved |
SOME | reserved | non-reserved | reserved |
SORT | non-reserved | non-reserved | non-reserved |
SORTED | non-reserved | non-reserved | non-reserved |
SPACE | non-reserved | non-reserved | non-reserved |
SPECIFIC | non-reserved | non-reserved | reserved |
SPECIFICTYPE | non-reserved | non-reserved | reserved |
SQL | non-reserved | non-reserved | reserved |
SQLCODE | non-reserved | non-reserved | non-reserved |
SQLERROR | non-reserved | non-reserved | non-reserved |
SQLEXCEPTION | non-reserved | non-reserved | reserved |
SQLSTATE | non-reserved | non-reserved | reserved |
SQLWARNING | non-reserved | non-reserved | reserved |
SQRT | non-reserved | non-reserved | reserved |
START | non-reserved | non-reserved | reserved |
STATE | non-reserved | non-reserved | non-reserved |
STATIC | non-reserved | non-reserved | reserved |
STATISTICS | non-reserved | non-reserved | non-reserved |
STDDEV_POP | non-reserved | non-reserved | reserved |
STDDEV_SAMP | non-reserved | non-reserved | reserved |
STORED | non-reserved | non-reserved | non-reserved |
STRATIFY | non-reserved | non-reserved | non-reserved |
STRUCT | non-reserved | non-reserved | non-reserved |
SUBMULTISET | non-reserved | non-reserved | reserved |
SUBSET | non-reserved | non-reserved | non-reserved |
SUBSTRING | non-reserved | non-reserved | reserved |
SUBSTRING_REGEX | non-reserved | non-reserved | reserved |
SUCCEEDS | non-reserved | non-reserved | reserved |
SUM | non-reserved | non-reserved | reserved |
SYMMETRIC | non-reserved | non-reserved | reserved |
SYSTEM | non-reserved | non-reserved | reserved |
SYSTEM_TIME | non-reserved | non-reserved | reserved |
SYSTEM_USER | non-reserved | non-reserved | reserved |
TABLE | reserved | non-reserved | reserved |
TABLES | non-reserved | non-reserved | non-reserved |
TABLESAMPLE | non-reserved | non-reserved | reserved |
TAN | non-reserved | non-reserved | non-reserved |
TANH | non-reserved | non-reserved | non-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 |
TIME | non-reserved | non-reserved | reserved |
TIMESTAMP | non-reserved | non-reserved | reserved |
TIMEZONE_HOUR | non-reserved | non-reserved | reserved |
TIMEZONE_MINUTE | non-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 |
TRANSLATE | non-reserved | non-reserved | reserved |
TRANSLATE_REGEX | non-reserved | non-reserved | reserved |
TRANSLATION | non-reserved | non-reserved | reserved |
TREAT | non-reserved | non-reserved | reserved |
TRIGGER | non-reserved | non-reserved | reserved |
TRIM | non-reserved | non-reserved | reserved |
TRIM_ARRAY | non-reserved | non-reserved | reserved |
TRUE | non-reserved | non-reserved | reserved |
TRUNCATE | non-reserved | non-reserved | reserved |
UESCAPE | 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 |
UNDER | non-reserved | non-reserved | non-reserved |
UNDO | non-reserved | non-reserved | reserved |
UNION | reserved | reserved | reserved |
UNIQUE | reserved | non-reserved | reserved |
UNKNOWN | non-reserved | non-reserved | reserved |
UNLOCK | non-reserved | non-reserved | non-reserved |
UNNEST | non-reserved | non-reserved | reserved |
UNSET | non-reserved | non-reserved | non-reserved |
UNTIL | non-reserved | non-reserved | reserved |
UPDATE | non-reserved | non-reserved | reserved |
UPPER | non-reserved | non-reserved | reserved |
USAGE | non-reserved | non-reserved | non-reserved |
USE | non-reserved | non-reserved | non-reserved |
USER | reserved | non-reserved | reserved |
USING | reserved | reserved | reserved |
VALUE | non-reserved | non-reserved | reserved |
VALUES | non-reserved | non-reserved | reserved |
VALUE_OF | non-reserved | non-reserved | reserved |
VAR_POP | non-reserved | non-reserved | reserved |
VAR_SAMP | non-reserved | non-reserved | reserved |
VARBINARY | non-reserved | non-reserved | reserved |
VARCHAR | non-reserved | non-reserved | reserved |
VARYING | non-reserved | non-reserved | reserved |
VERSIONING | non-reserved | non-reserved | reserved |
VIEW | non-reserved | non-reserved | non-reserved |
WHEN | reserved | non-reserved | reserved |
WHENEVER | non-reserved | non-reserved | reserved |
WHERE | reserved | non-reserved | reserved |
WHILE | non-reserved | non-reserved | reserved |
WIDTH_BUCKET | non-reserved | non-reserved | reserved |
WINDOW | non-reserved | non-reserved | reserved |
WITH | reserved | non-reserved | reserved |
WITHIN | non-reserved | non-reserved | reserved |
WITHOUT | non-reserved | non-reserved | reserved |
WORK | non-reserved | non-reserved | non-reserved |
WRITE | non-reserved | non-reserved | non-reserved |
YEAR | non-reserved | non-reserved | reserved |
ZONE | non-reserved | non-reserved | non-reserved |