Skip to main content

sqlparser/
keywords.rs

1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements.  See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership.  The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License.  You may obtain a copy of the License at
8//
9//   http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied.  See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18//! This module defines:
19//! 1) a list of constants for every keyword
20//! 2) an `ALL_KEYWORDS` array with every keyword in it
21//!    This is not a list of *reserved* keywords: some of these can be
22//!    parsed as identifiers if the parser decides so. This means that
23//!    new keywords can be added here without affecting the parse result.
24//!
25//!    As a matter of fact, most of these keywords are not used at all
26//!    and could be removed.
27//! 3) a `RESERVED_FOR_TABLE_ALIAS` array with keywords reserved in a
28//!    "table alias" context.
29
30#[cfg(feature = "serde")]
31use serde::{Deserialize, Serialize};
32
33#[cfg(feature = "visitor")]
34use sqlparser_derive::{Visit, VisitMut};
35
36/// Defines a string constant for a single keyword: `kw_def!(SELECT);`
37/// expands to `pub const SELECT = "SELECT";`
38macro_rules! kw_def {
39    ($ident:ident = $string_keyword:expr) => {
40        #[doc = concat!("The `", $string_keyword, "` SQL keyword.")]
41        pub const $ident: &'static str = $string_keyword;
42    };
43    ($ident:ident) => {
44        kw_def!($ident = stringify!($ident));
45    };
46}
47
48/// Expands to a list of `kw_def!()` invocations for each keyword
49/// and defines an ALL_KEYWORDS array of the defined constants.
50macro_rules! define_keywords {
51    ($(
52        $ident:ident $(= $string_keyword:expr)?
53    ),*) => {
54        #[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Hash)]
55        #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
56        #[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
57        #[allow(non_camel_case_types)]
58        /// An enumeration of SQL keywords recognized by the parser.
59        pub enum Keyword {
60            /// Represents no keyword.
61            NoKeyword,
62            $(
63                #[doc = concat!("The `", stringify!($ident), "` SQL keyword.")]
64                $ident
65            ),*
66        }
67
68        /// Array of all `Keyword` enum values in declaration order.
69        pub const ALL_KEYWORDS_INDEX: &[Keyword] = &[
70            $(Keyword::$ident),*
71        ];
72
73        $(kw_def!($ident $(= $string_keyword)?);)*
74        /// Array of all SQL keywords as string constants.
75        pub const ALL_KEYWORDS: &[&str] = &[
76            $($ident),*
77        ];
78
79        impl core::fmt::Display for Keyword {
80            fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
81                match self {
82                    Keyword::NoKeyword => write!(f, "NoKeyword"),
83                    $(Keyword::$ident => write!(f, "{}", $ident),)*
84                }
85            }
86        }
87    };
88}
89
90// The following keywords should be sorted to be able to match using binary search
91#[doc = "The `ZSTD` SQL keyword."]
pub const ZSTD: &'static str = "ZSTD";
/// Array of all SQL keywords as string constants.
pub const ALL_KEYWORDS: &[&str] =
    &[ABORT, ABS, ABSENT, ABSOLUTE, ACCEPTANYDATE, ACCEPTINVCHARS, ACCESS,
                ACCOUNT, ACTION, ADD, ADDQUOTES, ADMIN, AFTER, AGAINST,
                AGGREGATE, AGGREGATION, ALERT, ALGORITHM, ALIAS, ALIGNMENT,
                ALL, ALLOCATE, ALLOWOVERWRITE, ALTER, ALWAYS, ANALYZE, AND,
                ANTI, ANY, APPLICATION, APPLY, APPLYBUDGET, ARCHIVE, ARE,
                ARRAY, ARRAY_MAX_CARDINALITY, AS, ASC, ASENSITIVE, ASOF,
                ASSERT, ASYMMETRIC, AT, ATOMIC, ATTACH, AUDIT, AUTHENTICATION,
                AUTHORIZATION, AUTHORIZATIONS, AUTO, AUTOEXTEND_SIZE,
                AUTOINCREMENT, AUTO_INCREMENT, AVG, AVG_ROW_LENGTH, AVRO,
                BACKWARD, BASE64, BASE_LOCATION, BEFORE, BEGIN, BEGIN_FRAME,
                BEGIN_PARTITION, BERNOULLI, BETWEEN, BIGDECIMAL, BIGINT,
                BIGNUMERIC, BINARY, BIND, BINDING, BIT, BLANKSASNULL, BLOB,
                BLOCK, BLOOM, BLOOMFILTER, BOOL, BOOLEAN, BOOST, BOTH, BOX,
                BRIN, BROWSE, BTREE, BUCKET, BUCKETS, BY, BYPASSRLS, BYTEA,
                BYTES, BZIP2, CACHE, CALL, CALLED, CANONICAL, CARDINALITY,
                CASCADE, CASCADED, CASE, CASES, CAST, CATALOG, CATALOG_SYNC,
                CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER,
                CATALOG_SYNC_NAMESPACE_MODE, CATCH, CATEGORY, CEIL, CEILING,
                CENTURY, CHAIN, CHANGE, CHANGE_TRACKING, CHANNEL, CHAR,
                CHARACTER, CHARACTERISTICS, CHARACTERS, CHARACTER_LENGTH,
                CHARSET, CHAR_LENGTH, CHECK, CHECKSUM, CIRCLE, CLASS,
                CLEANPATH, CLEAR, CLOB, CLONE, CLOSE, CLUSTER, CLUSTERED,
                CLUSTERING, COALESCE, COLLATABLE, COLLATE, COLLATION, COLLECT,
                COLLECTION, COLUMN, COLUMNS, COLUMNSTORE, COMMENT, COMMIT,
                COMMITTED, COMMUTATOR, COMPATIBLE, COMPRESS, COMPRESSION,
                COMPUPDATE, COMPUTE, CONCURRENTLY, CONDITION, CONFLICT,
                CONNECT, CONNECTION, CONNECTOR, CONNECT_BY_ROOT, CONSTRAINT,
                CONTACT, CONTAINS, CONTINUE, CONVERT, COPY, COPY_OPTIONS,
                CORR, CORRESPONDING, COUNT, COVAR_POP, COVAR_SAMP, CREATE,
                CREATEDB, CREATEROLE, CREDENTIALS, CROSS, CSV, CUBE,
                CUME_DIST, CURRENT, CURRENT_CATALOG, CURRENT_DATE,
                CURRENT_DEFAULT_TRANSFORM_GROUP, CURRENT_PATH, CURRENT_ROLE,
                CURRENT_ROW, CURRENT_SCHEMA, CURRENT_TIME, CURRENT_TIMESTAMP,
                CURRENT_TRANSFORM_GROUP_FOR_TYPE, CURRENT_USER, CURSOR, CYCLE,
                DATA, DATABASE, DATABASES, DATA_RETENTION_TIME_IN_DAYS, DATE,
                DATE32, DATEFORMAT, DATETIME, DATETIME64, DAY, DAYOFWEEK,
                DAYOFYEAR, DAYS, DCPROPERTIES, DEALLOCATE, DEC, DECADE,
                DECIMAL, DECLARE, DEDUPLICATE, DEFAULT, DEFAULTS,
                DEFAULT_DDL_COLLATION, DEFAULT_MFA_METHOD,
                DEFAULT_SECONDARY_ROLES, DEFERRABLE, DEFERRED, DEFINE,
                DEFINED, DEFINER, DELAYED, DELAY_KEY_WRITE, DELEGATED, DELETE,
                DELIMITED, DELIMITER, DELTA, DENSE_RANK, DENY, DEREF, DESC,
                DESCRIBE, DETACH, DETAIL, DETERMINISTIC, DIMENSIONS,
                DIRECTORY, DISABLE, DISCARD, DISCONNECT, DISTINCT,
                DISTINCTROW, DISTRIBUTE, DIV, DO, DOMAIN, DOUBLE, DOW,
                DOWNSTREAM, DOY, DROP, DRY, DUO, DUPLICATE, DYNAMIC, EACH,
                ELEMENT, ELEMENTS, ELSE, ELSEIF, EMPTY, EMPTYASNULL, ENABLE,
                ENABLE_SCHEMA_EVOLUTION, ENCODING, ENCRYPTED, ENCRYPTION, END,
                END_EXEC, ENDPOINT, END_FRAME, END_PARTITION, ENFORCED,
                ENGINE, ENGINE_ATTRIBUTE, ENROLL, ENUM, ENUM16, ENUM8,
                EPHEMERAL, EPOCH, EQUALS, ERROR, ESCAPE, ESCAPED, ESTIMATE,
                EVENT, EVERY, EVOLVE, EXCEPT, EXCEPTION, EXCHANGE, EXCLUDE,
                EXCLUDING, EXCLUSIVE, EXEC, EXECUTE, EXECUTION, EXISTS, EXP,
                EXPANSION, EXPLAIN, EXPLICIT, EXPORT, EXTEND, EXTENDED,
                EXTENSION, EXTERNAL, EXTERNAL_VOLUME, EXTRACT, FACTS, FAIL,
                FAILOVER, FALSE, FAMILY, FETCH, FIELDS, FILE, FILES,
                FILE_FORMAT, FILL, FILTER, FINAL, FIRST, FIRST_VALUE,
                FIXEDSTRING, FIXEDWIDTH, FLATTEN, FLOAT, FLOAT32, FLOAT4,
                FLOAT64, FLOAT8, FLOOR, FLUSH, FN, FOLLOWING, FOR, FORCE,
                FORCE_NOT_NULL, FORCE_NULL, FORCE_QUOTE, FOREIGN, FORMAT,
                FORMATTED, FORWARD, FRAME_ROW, FREE, FREEZE, FROM, FSCK,
                FULFILLMENT, FULL, FULLTEXT, FUNCTION, FUNCTIONS, FUSION,
                FUTURE, GB, GENERAL, GENERATE, GENERATED, GEOGRAPHY, GET, GIN,
                GIST, GLOBAL, GRANT, GRANTED, GRANTS, GRAPHVIZ, GROUP,
                GROUPING, GROUPS, GZIP, HASH, HASHES, HAVING, HEADER, HEAP,
                HIGH_PRIORITY, HISTORY, HIVEVAR, HOLD, HOSTS, HOUR, HOURS,
                HUGEINT, IAM_ROLE, ICEBERG, ID, IDENTIFIED, IDENTITY,
                IDENTITY_INSERT, IF, IGNORE, IGNOREHEADER, ILIKE, IMMEDIATE,
                IMMUTABLE, IMPORT, IMPORTED, IN, INCLUDE, INCLUDE_NULL_VALUES,
                INCLUDING, INCREMENT, INCREMENTAL, INDEX, INDICATOR, INHERIT,
                INHERITS, INITIALIZE, INITIALLY, INNER, INOUT, INPATH,
                INPLACE, INPUT, INPUTFORMAT, INSENSITIVE, INSERT,
                INSERT_METHOD, INSTALL, INSTANT, INSTEAD, INT, INT128, INT16,
                INT2, INT256, INT32, INT4, INT64, INT8, INTEGER, INTEGRATION,
                INTERNALLENGTH, INTERPOLATE, INTERSECT, INTERSECTION,
                INTERVAL, INTO, INVISIBLE, INVOKER, IO, IS, ISODOW, ISOLATION,
                ISOWEEK, ISOYEAR, ITEMS, JAR, JOIN, JSON, JSONB, JSONFILE,
                JSON_TABLE, JULIAN, KEY, KEYS, KEY_BLOCK_SIZE, KILL, LAG,
                LAMBDA, LANGUAGE, LARGE, LAST, LAST_VALUE, LATERAL, LEAD,
                LEADING, LEAKPROOF, LEAST, LEFT, LEFTARG, LEVEL, LIKE,
                LIKE_REGEX, LIMIT, LINE, LINES, LIST, LISTEN, LISTING, LN,
                LOAD, LOCAL, LOCALTIME, LOCALTIMESTAMP, LOCATION, LOCK,
                LOCKED, LOG, LOGIN, LOGS, LONG, LONGBLOB, LONGTEXT,
                LOWCARDINALITY, LOWER, LOW_PRIORITY, LS, LSEG, MACRO, MAIN,
                MANAGE, MANAGED, MANAGEDLOCATION, MANIFEST, MAP, MASKING,
                MATCH, MATCHED, MATCHES, MATCH_CONDITION, MATCH_RECOGNIZE,
                MATERIALIZE, MATERIALIZED, MAX, MAXFILESIZE, MAXVALUE,
                MAX_DATA_EXTENSION_TIME_IN_DAYS, MAX_ROWS, MB, MEASURES,
                MEDIUMBLOB, MEDIUMINT, MEDIUMTEXT, MEMBER, MERGE, MERGES,
                MESSAGE, METADATA, METHOD, METRIC, METRICS, MFA, MICROSECOND,
                MICROSECONDS, MILLENIUM, MILLENNIUM, MILLISECOND,
                MILLISECONDS, MIN, MINUS, MINUTE, MINUTES, MINVALUE, MIN_ROWS,
                MOD, MODE, MODIFIES, MODIFY, MODULE, MODULUS, MONITOR, MONTH,
                MONTHS, MSCK, MULTIRANGE_TYPE_NAME, MULTISET, MUTATION, NAME,
                NAMES, NANOSECOND, NANOSECONDS, NATIONAL, NATURAL, NCHAR,
                NCLOB, NEGATOR, NEST, NESTED, NETWORK, NEW, NEXT, NFC, NFD,
                NFKC, NFKD, NO, NOBYPASSRLS, NOCOMPRESS, NOCREATEDB,
                NOCREATEROLE, NOCYCLE, NOINHERIT, NOLOGIN, NONE, NOORDER,
                NOREPLICATION, NORMALIZE, NORMALIZED, NOSCAN, NOSUPERUSER,
                NOT, NOTHING, NOTIFY, NOTNULL, NOWAIT, NO_WRITE_TO_BINLOG,
                NTH_VALUE, NTILE, NULL, NULLABLE, NULLIF, NULLS, NUMBER,
                NUMERIC, NVARCHAR, OBJECT, OBJECTS, OCCURRENCES_REGEX, OCTETS,
                OCTET_LENGTH, OF, OFF, OFFSET, OFFSETS, OLD, OMIT, ON, ONE,
                ONLY, ON_CREATE, ON_SCHEDULE, OPEN, OPENJSON, OPERATE,
                OPERATOR, OPTIMIZATION, OPTIMIZE, OPTIMIZED, OPTIMIZER_COSTS,
                OPTION, OPTIONS, OR, ORC, ORDER, ORDINALITY, ORGANIZATION,
                OTHER, OTP, OUT, OUTER, OUTPUT, OUTPUTFORMAT, OVER, OVERFLOW,
                OVERLAPS, OVERLAY, OVERRIDE, OVERWRITE, OWNED, OWNER,
                OWNERSHIP, PACKAGE, PACKAGES, PACK_KEYS, PARALLEL, PARAMETER,
                PARQUET, PART, PARTIAL, PARTITION, PARTITIONED, PARTITIONS,
                PASSEDBYVALUE, PASSING, PASSKEY, PASSWORD, PAST, PATH,
                PATTERN, PCTFREE, PER, PERCENT, PERCENTILE_CONT,
                PERCENTILE_DISC, PERCENT_RANK, PERIOD, PERMISSIVE, PERSISTENT,
                PIVOT, PLACING, PLAIN, PLAN, PLANS, POINT, POLICY, POLYGON,
                POOL, PORTION, POSITION, POSITION_REGEX, POWER, PRAGMA,
                PRECEDES, PRECEDING, PRECISION, PREFERRED, PREPARE, PRESERVE,
                PRESET, PREWHERE, PRIMARY, PRINT, PRIOR, PRIVILEGES,
                PROCEDURE, PROFILE, PROGRAM, PROJECTION, PUBLIC, PURCHASE,
                PURGE, QUALIFY, QUARTER, QUERIES, QUERY, QUOTE, RAISE,
                RAISERROR, RANGE, RANK, RAW, RCFILE, READ, READS, READ_ONLY,
                REAL, RECEIVE, RECLUSTER, RECURSIVE, REF, REFERENCES,
                REFERENCING, REFRESH, REFRESH_MODE, REGCLASS, REGEXP, REGION,
                REGR_AVGX, REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2,
                REGR_SLOPE, REGR_SXX, REGR_SXY, REGR_SYY, REINDEX, RELATIVE,
                RELAY, RELEASE, RELEASES, REMAINDER, REMOTE, REMOVE,
                REMOVEQUOTES, RENAME, REORG, REPAIR, REPEATABLE, REPLACE,
                REPLACE_INVALID_CHARACTERS, REPLICA, REPLICATE, REPLICATION,
                REQUIRE, RESET, RESOLVE, RESOURCE, RESPECT, RESTART, RESTRICT,
                RESTRICTED, RESTRICTIONS, RESTRICTIVE, RESULT, RESULTSET,
                RESUME, RETAIN, RETURN, RETURNING, RETURNS, REVOKE, RIGHT,
                RIGHTARG, RLIKE, RM, ROLE, ROLES, ROLLBACK, ROLLUP, ROOT, ROW,
                ROWGROUPSIZE, ROWID, ROWS, ROW_FORMAT, ROW_NUMBER, RULE, RUN,
                SAFE, SAFE_CAST, SAMPLE, SAVEPOINT, SCHEMA, SCHEMAS, SCOPE,
                SCROLL, SEARCH, SECOND, SECONDARY, SECONDARY_ENGINE_ATTRIBUTE,
                SECONDS, SECRET, SECURE, SECURITY, SEED, SELECT,
                SEMANTIC_VIEW, SEMI, SEND, SENSITIVE, SEPARATOR, SEQUENCE,
                SEQUENCEFILE, SEQUENCES, SERDE, SERDEPROPERTIES, SERIALIZABLE,
                SERVER, SERVICE, SESSION, SESSION_USER, SET, SETERROR, SETS,
                SETTINGS, SHARE, SHARED, SHARING, SHOW, SIGNED, SIMILAR,
                SIMPLE, SIZE, SKIP, SLOW, SMALLINT, SNAPSHOT, SOME, SORT,
                SORTED, SOURCE, SPATIAL, SPECIFIC, SPECIFICTYPE, SPGIST, SQL,
                SQLEXCEPTION, SQLSTATE, SQLWARNING, SQL_BIG_RESULT,
                SQL_BUFFER_RESULT, SQL_CALC_FOUND_ROWS, SQL_NO_CACHE,
                SQL_SMALL_RESULT, SQRT, SRID, STABLE, STAGE, START, STARTS,
                STATEMENT, STATIC, STATISTICS, STATS_AUTO_RECALC,
                STATS_PERSISTENT, STATS_SAMPLE_PAGES, STATUPDATE, STATUS,
                STDDEV_POP, STDDEV_SAMP, STDIN, STDOUT, STEP, STORAGE,
                STORAGE_INTEGRATION, STORAGE_SERIALIZATION_POLICY, STORED,
                STRAIGHT_JOIN, STREAM, STRICT, STRING, STRUCT, SUBMULTISET,
                SUBSCRIPT, SUBSTR, SUBSTRING, SUBSTRING_REGEX, SUBTYPE,
                SUBTYPE_DIFF, SUBTYPE_OPCLASS, SUCCEEDS, SUM, SUPER,
                SUPERUSER, SUPPORT, SUSPEND, SWAP, SYMMETRIC, SYNC, SYNONYM,
                SYSTEM, SYSTEM_TIME, SYSTEM_USER, TABLE, TABLES, TABLESAMPLE,
                TABLESPACE, TAG, TARGET, TARGET_LAG, TASK, TBLPROPERTIES,
                TEMP, TEMPORARY, TEMPTABLE, TERMINATED, TERSE, TEXT, TEXTFILE,
                THEN, TIES, TIME, TIMEFORMAT, TIMESTAMP, TIMESTAMPTZ,
                TIMESTAMP_NTZ, TIMETZ, TIMEZONE, TIMEZONE_ABBR, TIMEZONE_HOUR,
                TIMEZONE_MINUTE, TIMEZONE_REGION, TINYBLOB, TINYINT, TINYTEXT,
                TO, TOP, TOTALS, TOTP, TRACE, TRAILING, TRANSACTION,
                TRANSIENT, TRANSLATE, TRANSLATE_REGEX, TRANSLATION, TREAT,
                TREE, TRIGGER, TRIM, TRIM_ARRAY, TRUE, TRUNCATE,
                TRUNCATECOLUMNS, TRY, TRY_CAST, TRY_CONVERT, TSQUERY,
                TSVECTOR, TUPLE, TYPE, TYPMOD_IN, TYPMOD_OUT, UBIGINT,
                UESCAPE, UHUGEINT, UINT128, UINT16, UINT256, UINT32, UINT64,
                UINT8, UNBOUNDED, UNCACHE, UNCOMMITTED, UNDEFINED, UNFREEZE,
                UNION, UNIQUE, UNKNOWN, UNLISTEN, UNLOAD, UNLOCK, UNLOGGED,
                UNMATCHED, UNNEST, UNPIVOT, UNSAFE, UNSET, UNSIGNED, UNTIL,
                UPDATE, UPPER, URL, USAGE, USE, USER, USER_RESOURCES, USING,
                USMALLINT, UTINYINT, UUID, VACUUM, VALID, VALIDATE,
                VALIDATION_MODE, VALUE, VALUES, VALUE_OF, VARBINARY, VARBIT,
                VARCHAR, VARCHAR2, VARIABLE, VARIABLES, VARYING, VAR_POP,
                VAR_SAMP, VERBOSE, VERSION, VERSIONING, VERSIONS, VIEW, VIEWS,
                VIRTUAL, VOLATILE, VOLUME, WAREHOUSE, WAREHOUSES, WEEK, WEEKS,
                WHEN, WHENEVER, WHERE, WHILE, WIDTH_BUCKET, WINDOW, WITH,
                WITHIN, WITHOUT, WITHOUT_ARRAY_WRAPPER, WORK,
                WORKLOAD_IDENTITY, WRAPPER, WRITE, XML, XMLNAMESPACES,
                XMLTABLE, XOR, YEAR, YEARS, ZONE, ZORDER, ZSTD];
impl core::fmt::Display for Keyword {
    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
        match self {
            Keyword::NoKeyword => f.write_fmt(format_args!("NoKeyword")),
            Keyword::ABORT => f.write_fmt(format_args!("{0}", ABORT)),
            Keyword::ABS => f.write_fmt(format_args!("{0}", ABS)),
            Keyword::ABSENT => f.write_fmt(format_args!("{0}", ABSENT)),
            Keyword::ABSOLUTE => f.write_fmt(format_args!("{0}", ABSOLUTE)),
            Keyword::ACCEPTANYDATE =>
                f.write_fmt(format_args!("{0}", ACCEPTANYDATE)),
            Keyword::ACCEPTINVCHARS =>
                f.write_fmt(format_args!("{0}", ACCEPTINVCHARS)),
            Keyword::ACCESS => f.write_fmt(format_args!("{0}", ACCESS)),
            Keyword::ACCOUNT => f.write_fmt(format_args!("{0}", ACCOUNT)),
            Keyword::ACTION => f.write_fmt(format_args!("{0}", ACTION)),
            Keyword::ADD => f.write_fmt(format_args!("{0}", ADD)),
            Keyword::ADDQUOTES => f.write_fmt(format_args!("{0}", ADDQUOTES)),
            Keyword::ADMIN => f.write_fmt(format_args!("{0}", ADMIN)),
            Keyword::AFTER => f.write_fmt(format_args!("{0}", AFTER)),
            Keyword::AGAINST => f.write_fmt(format_args!("{0}", AGAINST)),
            Keyword::AGGREGATE => f.write_fmt(format_args!("{0}", AGGREGATE)),
            Keyword::AGGREGATION =>
                f.write_fmt(format_args!("{0}", AGGREGATION)),
            Keyword::ALERT => f.write_fmt(format_args!("{0}", ALERT)),
            Keyword::ALGORITHM => f.write_fmt(format_args!("{0}", ALGORITHM)),
            Keyword::ALIAS => f.write_fmt(format_args!("{0}", ALIAS)),
            Keyword::ALIGNMENT => f.write_fmt(format_args!("{0}", ALIGNMENT)),
            Keyword::ALL => f.write_fmt(format_args!("{0}", ALL)),
            Keyword::ALLOCATE => f.write_fmt(format_args!("{0}", ALLOCATE)),
            Keyword::ALLOWOVERWRITE =>
                f.write_fmt(format_args!("{0}", ALLOWOVERWRITE)),
            Keyword::ALTER => f.write_fmt(format_args!("{0}", ALTER)),
            Keyword::ALWAYS => f.write_fmt(format_args!("{0}", ALWAYS)),
            Keyword::ANALYZE => f.write_fmt(format_args!("{0}", ANALYZE)),
            Keyword::AND => f.write_fmt(format_args!("{0}", AND)),
            Keyword::ANTI => f.write_fmt(format_args!("{0}", ANTI)),
            Keyword::ANY => f.write_fmt(format_args!("{0}", ANY)),
            Keyword::APPLICATION =>
                f.write_fmt(format_args!("{0}", APPLICATION)),
            Keyword::APPLY => f.write_fmt(format_args!("{0}", APPLY)),
            Keyword::APPLYBUDGET =>
                f.write_fmt(format_args!("{0}", APPLYBUDGET)),
            Keyword::ARCHIVE => f.write_fmt(format_args!("{0}", ARCHIVE)),
            Keyword::ARE => f.write_fmt(format_args!("{0}", ARE)),
            Keyword::ARRAY => f.write_fmt(format_args!("{0}", ARRAY)),
            Keyword::ARRAY_MAX_CARDINALITY =>
                f.write_fmt(format_args!("{0}", ARRAY_MAX_CARDINALITY)),
            Keyword::AS => f.write_fmt(format_args!("{0}", AS)),
            Keyword::ASC => f.write_fmt(format_args!("{0}", ASC)),
            Keyword::ASENSITIVE =>
                f.write_fmt(format_args!("{0}", ASENSITIVE)),
            Keyword::ASOF => f.write_fmt(format_args!("{0}", ASOF)),
            Keyword::ASSERT => f.write_fmt(format_args!("{0}", ASSERT)),
            Keyword::ASYMMETRIC =>
                f.write_fmt(format_args!("{0}", ASYMMETRIC)),
            Keyword::AT => f.write_fmt(format_args!("{0}", AT)),
            Keyword::ATOMIC => f.write_fmt(format_args!("{0}", ATOMIC)),
            Keyword::ATTACH => f.write_fmt(format_args!("{0}", ATTACH)),
            Keyword::AUDIT => f.write_fmt(format_args!("{0}", AUDIT)),
            Keyword::AUTHENTICATION =>
                f.write_fmt(format_args!("{0}", AUTHENTICATION)),
            Keyword::AUTHORIZATION =>
                f.write_fmt(format_args!("{0}", AUTHORIZATION)),
            Keyword::AUTHORIZATIONS =>
                f.write_fmt(format_args!("{0}", AUTHORIZATIONS)),
            Keyword::AUTO => f.write_fmt(format_args!("{0}", AUTO)),
            Keyword::AUTOEXTEND_SIZE =>
                f.write_fmt(format_args!("{0}", AUTOEXTEND_SIZE)),
            Keyword::AUTOINCREMENT =>
                f.write_fmt(format_args!("{0}", AUTOINCREMENT)),
            Keyword::AUTO_INCREMENT =>
                f.write_fmt(format_args!("{0}", AUTO_INCREMENT)),
            Keyword::AVG => f.write_fmt(format_args!("{0}", AVG)),
            Keyword::AVG_ROW_LENGTH =>
                f.write_fmt(format_args!("{0}", AVG_ROW_LENGTH)),
            Keyword::AVRO => f.write_fmt(format_args!("{0}", AVRO)),
            Keyword::BACKWARD => f.write_fmt(format_args!("{0}", BACKWARD)),
            Keyword::BASE64 => f.write_fmt(format_args!("{0}", BASE64)),
            Keyword::BASE_LOCATION =>
                f.write_fmt(format_args!("{0}", BASE_LOCATION)),
            Keyword::BEFORE => f.write_fmt(format_args!("{0}", BEFORE)),
            Keyword::BEGIN => f.write_fmt(format_args!("{0}", BEGIN)),
            Keyword::BEGIN_FRAME =>
                f.write_fmt(format_args!("{0}", BEGIN_FRAME)),
            Keyword::BEGIN_PARTITION =>
                f.write_fmt(format_args!("{0}", BEGIN_PARTITION)),
            Keyword::BERNOULLI => f.write_fmt(format_args!("{0}", BERNOULLI)),
            Keyword::BETWEEN => f.write_fmt(format_args!("{0}", BETWEEN)),
            Keyword::BIGDECIMAL =>
                f.write_fmt(format_args!("{0}", BIGDECIMAL)),
            Keyword::BIGINT => f.write_fmt(format_args!("{0}", BIGINT)),
            Keyword::BIGNUMERIC =>
                f.write_fmt(format_args!("{0}", BIGNUMERIC)),
            Keyword::BINARY => f.write_fmt(format_args!("{0}", BINARY)),
            Keyword::BIND => f.write_fmt(format_args!("{0}", BIND)),
            Keyword::BINDING => f.write_fmt(format_args!("{0}", BINDING)),
            Keyword::BIT => f.write_fmt(format_args!("{0}", BIT)),
            Keyword::BLANKSASNULL =>
                f.write_fmt(format_args!("{0}", BLANKSASNULL)),
            Keyword::BLOB => f.write_fmt(format_args!("{0}", BLOB)),
            Keyword::BLOCK => f.write_fmt(format_args!("{0}", BLOCK)),
            Keyword::BLOOM => f.write_fmt(format_args!("{0}", BLOOM)),
            Keyword::BLOOMFILTER =>
                f.write_fmt(format_args!("{0}", BLOOMFILTER)),
            Keyword::BOOL => f.write_fmt(format_args!("{0}", BOOL)),
            Keyword::BOOLEAN => f.write_fmt(format_args!("{0}", BOOLEAN)),
            Keyword::BOOST => f.write_fmt(format_args!("{0}", BOOST)),
            Keyword::BOTH => f.write_fmt(format_args!("{0}", BOTH)),
            Keyword::BOX => f.write_fmt(format_args!("{0}", BOX)),
            Keyword::BRIN => f.write_fmt(format_args!("{0}", BRIN)),
            Keyword::BROWSE => f.write_fmt(format_args!("{0}", BROWSE)),
            Keyword::BTREE => f.write_fmt(format_args!("{0}", BTREE)),
            Keyword::BUCKET => f.write_fmt(format_args!("{0}", BUCKET)),
            Keyword::BUCKETS => f.write_fmt(format_args!("{0}", BUCKETS)),
            Keyword::BY => f.write_fmt(format_args!("{0}", BY)),
            Keyword::BYPASSRLS => f.write_fmt(format_args!("{0}", BYPASSRLS)),
            Keyword::BYTEA => f.write_fmt(format_args!("{0}", BYTEA)),
            Keyword::BYTES => f.write_fmt(format_args!("{0}", BYTES)),
            Keyword::BZIP2 => f.write_fmt(format_args!("{0}", BZIP2)),
            Keyword::CACHE => f.write_fmt(format_args!("{0}", CACHE)),
            Keyword::CALL => f.write_fmt(format_args!("{0}", CALL)),
            Keyword::CALLED => f.write_fmt(format_args!("{0}", CALLED)),
            Keyword::CANONICAL => f.write_fmt(format_args!("{0}", CANONICAL)),
            Keyword::CARDINALITY =>
                f.write_fmt(format_args!("{0}", CARDINALITY)),
            Keyword::CASCADE => f.write_fmt(format_args!("{0}", CASCADE)),
            Keyword::CASCADED => f.write_fmt(format_args!("{0}", CASCADED)),
            Keyword::CASE => f.write_fmt(format_args!("{0}", CASE)),
            Keyword::CASES => f.write_fmt(format_args!("{0}", CASES)),
            Keyword::CAST => f.write_fmt(format_args!("{0}", CAST)),
            Keyword::CATALOG => f.write_fmt(format_args!("{0}", CATALOG)),
            Keyword::CATALOG_SYNC =>
                f.write_fmt(format_args!("{0}", CATALOG_SYNC)),
            Keyword::CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER =>
                f.write_fmt(format_args!("{0}",
                        CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER)),
            Keyword::CATALOG_SYNC_NAMESPACE_MODE =>
                f.write_fmt(format_args!("{0}", CATALOG_SYNC_NAMESPACE_MODE)),
            Keyword::CATCH => f.write_fmt(format_args!("{0}", CATCH)),
            Keyword::CATEGORY => f.write_fmt(format_args!("{0}", CATEGORY)),
            Keyword::CEIL => f.write_fmt(format_args!("{0}", CEIL)),
            Keyword::CEILING => f.write_fmt(format_args!("{0}", CEILING)),
            Keyword::CENTURY => f.write_fmt(format_args!("{0}", CENTURY)),
            Keyword::CHAIN => f.write_fmt(format_args!("{0}", CHAIN)),
            Keyword::CHANGE => f.write_fmt(format_args!("{0}", CHANGE)),
            Keyword::CHANGE_TRACKING =>
                f.write_fmt(format_args!("{0}", CHANGE_TRACKING)),
            Keyword::CHANNEL => f.write_fmt(format_args!("{0}", CHANNEL)),
            Keyword::CHAR => f.write_fmt(format_args!("{0}", CHAR)),
            Keyword::CHARACTER => f.write_fmt(format_args!("{0}", CHARACTER)),
            Keyword::CHARACTERISTICS =>
                f.write_fmt(format_args!("{0}", CHARACTERISTICS)),
            Keyword::CHARACTERS =>
                f.write_fmt(format_args!("{0}", CHARACTERS)),
            Keyword::CHARACTER_LENGTH =>
                f.write_fmt(format_args!("{0}", CHARACTER_LENGTH)),
            Keyword::CHARSET => f.write_fmt(format_args!("{0}", CHARSET)),
            Keyword::CHAR_LENGTH =>
                f.write_fmt(format_args!("{0}", CHAR_LENGTH)),
            Keyword::CHECK => f.write_fmt(format_args!("{0}", CHECK)),
            Keyword::CHECKSUM => f.write_fmt(format_args!("{0}", CHECKSUM)),
            Keyword::CIRCLE => f.write_fmt(format_args!("{0}", CIRCLE)),
            Keyword::CLASS => f.write_fmt(format_args!("{0}", CLASS)),
            Keyword::CLEANPATH => f.write_fmt(format_args!("{0}", CLEANPATH)),
            Keyword::CLEAR => f.write_fmt(format_args!("{0}", CLEAR)),
            Keyword::CLOB => f.write_fmt(format_args!("{0}", CLOB)),
            Keyword::CLONE => f.write_fmt(format_args!("{0}", CLONE)),
            Keyword::CLOSE => f.write_fmt(format_args!("{0}", CLOSE)),
            Keyword::CLUSTER => f.write_fmt(format_args!("{0}", CLUSTER)),
            Keyword::CLUSTERED => f.write_fmt(format_args!("{0}", CLUSTERED)),
            Keyword::CLUSTERING =>
                f.write_fmt(format_args!("{0}", CLUSTERING)),
            Keyword::COALESCE => f.write_fmt(format_args!("{0}", COALESCE)),
            Keyword::COLLATABLE =>
                f.write_fmt(format_args!("{0}", COLLATABLE)),
            Keyword::COLLATE => f.write_fmt(format_args!("{0}", COLLATE)),
            Keyword::COLLATION => f.write_fmt(format_args!("{0}", COLLATION)),
            Keyword::COLLECT => f.write_fmt(format_args!("{0}", COLLECT)),
            Keyword::COLLECTION =>
                f.write_fmt(format_args!("{0}", COLLECTION)),
            Keyword::COLUMN => f.write_fmt(format_args!("{0}", COLUMN)),
            Keyword::COLUMNS => f.write_fmt(format_args!("{0}", COLUMNS)),
            Keyword::COLUMNSTORE =>
                f.write_fmt(format_args!("{0}", COLUMNSTORE)),
            Keyword::COMMENT => f.write_fmt(format_args!("{0}", COMMENT)),
            Keyword::COMMIT => f.write_fmt(format_args!("{0}", COMMIT)),
            Keyword::COMMITTED => f.write_fmt(format_args!("{0}", COMMITTED)),
            Keyword::COMMUTATOR =>
                f.write_fmt(format_args!("{0}", COMMUTATOR)),
            Keyword::COMPATIBLE =>
                f.write_fmt(format_args!("{0}", COMPATIBLE)),
            Keyword::COMPRESS => f.write_fmt(format_args!("{0}", COMPRESS)),
            Keyword::COMPRESSION =>
                f.write_fmt(format_args!("{0}", COMPRESSION)),
            Keyword::COMPUPDATE =>
                f.write_fmt(format_args!("{0}", COMPUPDATE)),
            Keyword::COMPUTE => f.write_fmt(format_args!("{0}", COMPUTE)),
            Keyword::CONCURRENTLY =>
                f.write_fmt(format_args!("{0}", CONCURRENTLY)),
            Keyword::CONDITION => f.write_fmt(format_args!("{0}", CONDITION)),
            Keyword::CONFLICT => f.write_fmt(format_args!("{0}", CONFLICT)),
            Keyword::CONNECT => f.write_fmt(format_args!("{0}", CONNECT)),
            Keyword::CONNECTION =>
                f.write_fmt(format_args!("{0}", CONNECTION)),
            Keyword::CONNECTOR => f.write_fmt(format_args!("{0}", CONNECTOR)),
            Keyword::CONNECT_BY_ROOT =>
                f.write_fmt(format_args!("{0}", CONNECT_BY_ROOT)),
            Keyword::CONSTRAINT =>
                f.write_fmt(format_args!("{0}", CONSTRAINT)),
            Keyword::CONTACT => f.write_fmt(format_args!("{0}", CONTACT)),
            Keyword::CONTAINS => f.write_fmt(format_args!("{0}", CONTAINS)),
            Keyword::CONTINUE => f.write_fmt(format_args!("{0}", CONTINUE)),
            Keyword::CONVERT => f.write_fmt(format_args!("{0}", CONVERT)),
            Keyword::COPY => f.write_fmt(format_args!("{0}", COPY)),
            Keyword::COPY_OPTIONS =>
                f.write_fmt(format_args!("{0}", COPY_OPTIONS)),
            Keyword::CORR => f.write_fmt(format_args!("{0}", CORR)),
            Keyword::CORRESPONDING =>
                f.write_fmt(format_args!("{0}", CORRESPONDING)),
            Keyword::COUNT => f.write_fmt(format_args!("{0}", COUNT)),
            Keyword::COVAR_POP => f.write_fmt(format_args!("{0}", COVAR_POP)),
            Keyword::COVAR_SAMP =>
                f.write_fmt(format_args!("{0}", COVAR_SAMP)),
            Keyword::CREATE => f.write_fmt(format_args!("{0}", CREATE)),
            Keyword::CREATEDB => f.write_fmt(format_args!("{0}", CREATEDB)),
            Keyword::CREATEROLE =>
                f.write_fmt(format_args!("{0}", CREATEROLE)),
            Keyword::CREDENTIALS =>
                f.write_fmt(format_args!("{0}", CREDENTIALS)),
            Keyword::CROSS => f.write_fmt(format_args!("{0}", CROSS)),
            Keyword::CSV => f.write_fmt(format_args!("{0}", CSV)),
            Keyword::CUBE => f.write_fmt(format_args!("{0}", CUBE)),
            Keyword::CUME_DIST => f.write_fmt(format_args!("{0}", CUME_DIST)),
            Keyword::CURRENT => f.write_fmt(format_args!("{0}", CURRENT)),
            Keyword::CURRENT_CATALOG =>
                f.write_fmt(format_args!("{0}", CURRENT_CATALOG)),
            Keyword::CURRENT_DATE =>
                f.write_fmt(format_args!("{0}", CURRENT_DATE)),
            Keyword::CURRENT_DEFAULT_TRANSFORM_GROUP =>
                f.write_fmt(format_args!("{0}",
                        CURRENT_DEFAULT_TRANSFORM_GROUP)),
            Keyword::CURRENT_PATH =>
                f.write_fmt(format_args!("{0}", CURRENT_PATH)),
            Keyword::CURRENT_ROLE =>
                f.write_fmt(format_args!("{0}", CURRENT_ROLE)),
            Keyword::CURRENT_ROW =>
                f.write_fmt(format_args!("{0}", CURRENT_ROW)),
            Keyword::CURRENT_SCHEMA =>
                f.write_fmt(format_args!("{0}", CURRENT_SCHEMA)),
            Keyword::CURRENT_TIME =>
                f.write_fmt(format_args!("{0}", CURRENT_TIME)),
            Keyword::CURRENT_TIMESTAMP =>
                f.write_fmt(format_args!("{0}", CURRENT_TIMESTAMP)),
            Keyword::CURRENT_TRANSFORM_GROUP_FOR_TYPE =>
                f.write_fmt(format_args!("{0}",
                        CURRENT_TRANSFORM_GROUP_FOR_TYPE)),
            Keyword::CURRENT_USER =>
                f.write_fmt(format_args!("{0}", CURRENT_USER)),
            Keyword::CURSOR => f.write_fmt(format_args!("{0}", CURSOR)),
            Keyword::CYCLE => f.write_fmt(format_args!("{0}", CYCLE)),
            Keyword::DATA => f.write_fmt(format_args!("{0}", DATA)),
            Keyword::DATABASE => f.write_fmt(format_args!("{0}", DATABASE)),
            Keyword::DATABASES => f.write_fmt(format_args!("{0}", DATABASES)),
            Keyword::DATA_RETENTION_TIME_IN_DAYS =>
                f.write_fmt(format_args!("{0}", DATA_RETENTION_TIME_IN_DAYS)),
            Keyword::DATE => f.write_fmt(format_args!("{0}", DATE)),
            Keyword::DATE32 => f.write_fmt(format_args!("{0}", DATE32)),
            Keyword::DATEFORMAT =>
                f.write_fmt(format_args!("{0}", DATEFORMAT)),
            Keyword::DATETIME => f.write_fmt(format_args!("{0}", DATETIME)),
            Keyword::DATETIME64 =>
                f.write_fmt(format_args!("{0}", DATETIME64)),
            Keyword::DAY => f.write_fmt(format_args!("{0}", DAY)),
            Keyword::DAYOFWEEK => f.write_fmt(format_args!("{0}", DAYOFWEEK)),
            Keyword::DAYOFYEAR => f.write_fmt(format_args!("{0}", DAYOFYEAR)),
            Keyword::DAYS => f.write_fmt(format_args!("{0}", DAYS)),
            Keyword::DCPROPERTIES =>
                f.write_fmt(format_args!("{0}", DCPROPERTIES)),
            Keyword::DEALLOCATE =>
                f.write_fmt(format_args!("{0}", DEALLOCATE)),
            Keyword::DEC => f.write_fmt(format_args!("{0}", DEC)),
            Keyword::DECADE => f.write_fmt(format_args!("{0}", DECADE)),
            Keyword::DECIMAL => f.write_fmt(format_args!("{0}", DECIMAL)),
            Keyword::DECLARE => f.write_fmt(format_args!("{0}", DECLARE)),
            Keyword::DEDUPLICATE =>
                f.write_fmt(format_args!("{0}", DEDUPLICATE)),
            Keyword::DEFAULT => f.write_fmt(format_args!("{0}", DEFAULT)),
            Keyword::DEFAULTS => f.write_fmt(format_args!("{0}", DEFAULTS)),
            Keyword::DEFAULT_DDL_COLLATION =>
                f.write_fmt(format_args!("{0}", DEFAULT_DDL_COLLATION)),
            Keyword::DEFAULT_MFA_METHOD =>
                f.write_fmt(format_args!("{0}", DEFAULT_MFA_METHOD)),
            Keyword::DEFAULT_SECONDARY_ROLES =>
                f.write_fmt(format_args!("{0}", DEFAULT_SECONDARY_ROLES)),
            Keyword::DEFERRABLE =>
                f.write_fmt(format_args!("{0}", DEFERRABLE)),
            Keyword::DEFERRED => f.write_fmt(format_args!("{0}", DEFERRED)),
            Keyword::DEFINE => f.write_fmt(format_args!("{0}", DEFINE)),
            Keyword::DEFINED => f.write_fmt(format_args!("{0}", DEFINED)),
            Keyword::DEFINER => f.write_fmt(format_args!("{0}", DEFINER)),
            Keyword::DELAYED => f.write_fmt(format_args!("{0}", DELAYED)),
            Keyword::DELAY_KEY_WRITE =>
                f.write_fmt(format_args!("{0}", DELAY_KEY_WRITE)),
            Keyword::DELEGATED => f.write_fmt(format_args!("{0}", DELEGATED)),
            Keyword::DELETE => f.write_fmt(format_args!("{0}", DELETE)),
            Keyword::DELIMITED => f.write_fmt(format_args!("{0}", DELIMITED)),
            Keyword::DELIMITER => f.write_fmt(format_args!("{0}", DELIMITER)),
            Keyword::DELTA => f.write_fmt(format_args!("{0}", DELTA)),
            Keyword::DENSE_RANK =>
                f.write_fmt(format_args!("{0}", DENSE_RANK)),
            Keyword::DENY => f.write_fmt(format_args!("{0}", DENY)),
            Keyword::DEREF => f.write_fmt(format_args!("{0}", DEREF)),
            Keyword::DESC => f.write_fmt(format_args!("{0}", DESC)),
            Keyword::DESCRIBE => f.write_fmt(format_args!("{0}", DESCRIBE)),
            Keyword::DETACH => f.write_fmt(format_args!("{0}", DETACH)),
            Keyword::DETAIL => f.write_fmt(format_args!("{0}", DETAIL)),
            Keyword::DETERMINISTIC =>
                f.write_fmt(format_args!("{0}", DETERMINISTIC)),
            Keyword::DIMENSIONS =>
                f.write_fmt(format_args!("{0}", DIMENSIONS)),
            Keyword::DIRECTORY => f.write_fmt(format_args!("{0}", DIRECTORY)),
            Keyword::DISABLE => f.write_fmt(format_args!("{0}", DISABLE)),
            Keyword::DISCARD => f.write_fmt(format_args!("{0}", DISCARD)),
            Keyword::DISCONNECT =>
                f.write_fmt(format_args!("{0}", DISCONNECT)),
            Keyword::DISTINCT => f.write_fmt(format_args!("{0}", DISTINCT)),
            Keyword::DISTINCTROW =>
                f.write_fmt(format_args!("{0}", DISTINCTROW)),
            Keyword::DISTRIBUTE =>
                f.write_fmt(format_args!("{0}", DISTRIBUTE)),
            Keyword::DIV => f.write_fmt(format_args!("{0}", DIV)),
            Keyword::DO => f.write_fmt(format_args!("{0}", DO)),
            Keyword::DOMAIN => f.write_fmt(format_args!("{0}", DOMAIN)),
            Keyword::DOUBLE => f.write_fmt(format_args!("{0}", DOUBLE)),
            Keyword::DOW => f.write_fmt(format_args!("{0}", DOW)),
            Keyword::DOWNSTREAM =>
                f.write_fmt(format_args!("{0}", DOWNSTREAM)),
            Keyword::DOY => f.write_fmt(format_args!("{0}", DOY)),
            Keyword::DROP => f.write_fmt(format_args!("{0}", DROP)),
            Keyword::DRY => f.write_fmt(format_args!("{0}", DRY)),
            Keyword::DUO => f.write_fmt(format_args!("{0}", DUO)),
            Keyword::DUPLICATE => f.write_fmt(format_args!("{0}", DUPLICATE)),
            Keyword::DYNAMIC => f.write_fmt(format_args!("{0}", DYNAMIC)),
            Keyword::EACH => f.write_fmt(format_args!("{0}", EACH)),
            Keyword::ELEMENT => f.write_fmt(format_args!("{0}", ELEMENT)),
            Keyword::ELEMENTS => f.write_fmt(format_args!("{0}", ELEMENTS)),
            Keyword::ELSE => f.write_fmt(format_args!("{0}", ELSE)),
            Keyword::ELSEIF => f.write_fmt(format_args!("{0}", ELSEIF)),
            Keyword::EMPTY => f.write_fmt(format_args!("{0}", EMPTY)),
            Keyword::EMPTYASNULL =>
                f.write_fmt(format_args!("{0}", EMPTYASNULL)),
            Keyword::ENABLE => f.write_fmt(format_args!("{0}", ENABLE)),
            Keyword::ENABLE_SCHEMA_EVOLUTION =>
                f.write_fmt(format_args!("{0}", ENABLE_SCHEMA_EVOLUTION)),
            Keyword::ENCODING => f.write_fmt(format_args!("{0}", ENCODING)),
            Keyword::ENCRYPTED => f.write_fmt(format_args!("{0}", ENCRYPTED)),
            Keyword::ENCRYPTION =>
                f.write_fmt(format_args!("{0}", ENCRYPTION)),
            Keyword::END => f.write_fmt(format_args!("{0}", END)),
            Keyword::END_EXEC => f.write_fmt(format_args!("{0}", END_EXEC)),
            Keyword::ENDPOINT => f.write_fmt(format_args!("{0}", ENDPOINT)),
            Keyword::END_FRAME => f.write_fmt(format_args!("{0}", END_FRAME)),
            Keyword::END_PARTITION =>
                f.write_fmt(format_args!("{0}", END_PARTITION)),
            Keyword::ENFORCED => f.write_fmt(format_args!("{0}", ENFORCED)),
            Keyword::ENGINE => f.write_fmt(format_args!("{0}", ENGINE)),
            Keyword::ENGINE_ATTRIBUTE =>
                f.write_fmt(format_args!("{0}", ENGINE_ATTRIBUTE)),
            Keyword::ENROLL => f.write_fmt(format_args!("{0}", ENROLL)),
            Keyword::ENUM => f.write_fmt(format_args!("{0}", ENUM)),
            Keyword::ENUM16 => f.write_fmt(format_args!("{0}", ENUM16)),
            Keyword::ENUM8 => f.write_fmt(format_args!("{0}", ENUM8)),
            Keyword::EPHEMERAL => f.write_fmt(format_args!("{0}", EPHEMERAL)),
            Keyword::EPOCH => f.write_fmt(format_args!("{0}", EPOCH)),
            Keyword::EQUALS => f.write_fmt(format_args!("{0}", EQUALS)),
            Keyword::ERROR => f.write_fmt(format_args!("{0}", ERROR)),
            Keyword::ESCAPE => f.write_fmt(format_args!("{0}", ESCAPE)),
            Keyword::ESCAPED => f.write_fmt(format_args!("{0}", ESCAPED)),
            Keyword::ESTIMATE => f.write_fmt(format_args!("{0}", ESTIMATE)),
            Keyword::EVENT => f.write_fmt(format_args!("{0}", EVENT)),
            Keyword::EVERY => f.write_fmt(format_args!("{0}", EVERY)),
            Keyword::EVOLVE => f.write_fmt(format_args!("{0}", EVOLVE)),
            Keyword::EXCEPT => f.write_fmt(format_args!("{0}", EXCEPT)),
            Keyword::EXCEPTION => f.write_fmt(format_args!("{0}", EXCEPTION)),
            Keyword::EXCHANGE => f.write_fmt(format_args!("{0}", EXCHANGE)),
            Keyword::EXCLUDE => f.write_fmt(format_args!("{0}", EXCLUDE)),
            Keyword::EXCLUDING => f.write_fmt(format_args!("{0}", EXCLUDING)),
            Keyword::EXCLUSIVE => f.write_fmt(format_args!("{0}", EXCLUSIVE)),
            Keyword::EXEC => f.write_fmt(format_args!("{0}", EXEC)),
            Keyword::EXECUTE => f.write_fmt(format_args!("{0}", EXECUTE)),
            Keyword::EXECUTION => f.write_fmt(format_args!("{0}", EXECUTION)),
            Keyword::EXISTS => f.write_fmt(format_args!("{0}", EXISTS)),
            Keyword::EXP => f.write_fmt(format_args!("{0}", EXP)),
            Keyword::EXPANSION => f.write_fmt(format_args!("{0}", EXPANSION)),
            Keyword::EXPLAIN => f.write_fmt(format_args!("{0}", EXPLAIN)),
            Keyword::EXPLICIT => f.write_fmt(format_args!("{0}", EXPLICIT)),
            Keyword::EXPORT => f.write_fmt(format_args!("{0}", EXPORT)),
            Keyword::EXTEND => f.write_fmt(format_args!("{0}", EXTEND)),
            Keyword::EXTENDED => f.write_fmt(format_args!("{0}", EXTENDED)),
            Keyword::EXTENSION => f.write_fmt(format_args!("{0}", EXTENSION)),
            Keyword::EXTERNAL => f.write_fmt(format_args!("{0}", EXTERNAL)),
            Keyword::EXTERNAL_VOLUME =>
                f.write_fmt(format_args!("{0}", EXTERNAL_VOLUME)),
            Keyword::EXTRACT => f.write_fmt(format_args!("{0}", EXTRACT)),
            Keyword::FACTS => f.write_fmt(format_args!("{0}", FACTS)),
            Keyword::FAIL => f.write_fmt(format_args!("{0}", FAIL)),
            Keyword::FAILOVER => f.write_fmt(format_args!("{0}", FAILOVER)),
            Keyword::FALSE => f.write_fmt(format_args!("{0}", FALSE)),
            Keyword::FAMILY => f.write_fmt(format_args!("{0}", FAMILY)),
            Keyword::FETCH => f.write_fmt(format_args!("{0}", FETCH)),
            Keyword::FIELDS => f.write_fmt(format_args!("{0}", FIELDS)),
            Keyword::FILE => f.write_fmt(format_args!("{0}", FILE)),
            Keyword::FILES => f.write_fmt(format_args!("{0}", FILES)),
            Keyword::FILE_FORMAT =>
                f.write_fmt(format_args!("{0}", FILE_FORMAT)),
            Keyword::FILL => f.write_fmt(format_args!("{0}", FILL)),
            Keyword::FILTER => f.write_fmt(format_args!("{0}", FILTER)),
            Keyword::FINAL => f.write_fmt(format_args!("{0}", FINAL)),
            Keyword::FIRST => f.write_fmt(format_args!("{0}", FIRST)),
            Keyword::FIRST_VALUE =>
                f.write_fmt(format_args!("{0}", FIRST_VALUE)),
            Keyword::FIXEDSTRING =>
                f.write_fmt(format_args!("{0}", FIXEDSTRING)),
            Keyword::FIXEDWIDTH =>
                f.write_fmt(format_args!("{0}", FIXEDWIDTH)),
            Keyword::FLATTEN => f.write_fmt(format_args!("{0}", FLATTEN)),
            Keyword::FLOAT => f.write_fmt(format_args!("{0}", FLOAT)),
            Keyword::FLOAT32 => f.write_fmt(format_args!("{0}", FLOAT32)),
            Keyword::FLOAT4 => f.write_fmt(format_args!("{0}", FLOAT4)),
            Keyword::FLOAT64 => f.write_fmt(format_args!("{0}", FLOAT64)),
            Keyword::FLOAT8 => f.write_fmt(format_args!("{0}", FLOAT8)),
            Keyword::FLOOR => f.write_fmt(format_args!("{0}", FLOOR)),
            Keyword::FLUSH => f.write_fmt(format_args!("{0}", FLUSH)),
            Keyword::FN => f.write_fmt(format_args!("{0}", FN)),
            Keyword::FOLLOWING => f.write_fmt(format_args!("{0}", FOLLOWING)),
            Keyword::FOR => f.write_fmt(format_args!("{0}", FOR)),
            Keyword::FORCE => f.write_fmt(format_args!("{0}", FORCE)),
            Keyword::FORCE_NOT_NULL =>
                f.write_fmt(format_args!("{0}", FORCE_NOT_NULL)),
            Keyword::FORCE_NULL =>
                f.write_fmt(format_args!("{0}", FORCE_NULL)),
            Keyword::FORCE_QUOTE =>
                f.write_fmt(format_args!("{0}", FORCE_QUOTE)),
            Keyword::FOREIGN => f.write_fmt(format_args!("{0}", FOREIGN)),
            Keyword::FORMAT => f.write_fmt(format_args!("{0}", FORMAT)),
            Keyword::FORMATTED => f.write_fmt(format_args!("{0}", FORMATTED)),
            Keyword::FORWARD => f.write_fmt(format_args!("{0}", FORWARD)),
            Keyword::FRAME_ROW => f.write_fmt(format_args!("{0}", FRAME_ROW)),
            Keyword::FREE => f.write_fmt(format_args!("{0}", FREE)),
            Keyword::FREEZE => f.write_fmt(format_args!("{0}", FREEZE)),
            Keyword::FROM => f.write_fmt(format_args!("{0}", FROM)),
            Keyword::FSCK => f.write_fmt(format_args!("{0}", FSCK)),
            Keyword::FULFILLMENT =>
                f.write_fmt(format_args!("{0}", FULFILLMENT)),
            Keyword::FULL => f.write_fmt(format_args!("{0}", FULL)),
            Keyword::FULLTEXT => f.write_fmt(format_args!("{0}", FULLTEXT)),
            Keyword::FUNCTION => f.write_fmt(format_args!("{0}", FUNCTION)),
            Keyword::FUNCTIONS => f.write_fmt(format_args!("{0}", FUNCTIONS)),
            Keyword::FUSION => f.write_fmt(format_args!("{0}", FUSION)),
            Keyword::FUTURE => f.write_fmt(format_args!("{0}", FUTURE)),
            Keyword::GB => f.write_fmt(format_args!("{0}", GB)),
            Keyword::GENERAL => f.write_fmt(format_args!("{0}", GENERAL)),
            Keyword::GENERATE => f.write_fmt(format_args!("{0}", GENERATE)),
            Keyword::GENERATED => f.write_fmt(format_args!("{0}", GENERATED)),
            Keyword::GEOGRAPHY => f.write_fmt(format_args!("{0}", GEOGRAPHY)),
            Keyword::GET => f.write_fmt(format_args!("{0}", GET)),
            Keyword::GIN => f.write_fmt(format_args!("{0}", GIN)),
            Keyword::GIST => f.write_fmt(format_args!("{0}", GIST)),
            Keyword::GLOBAL => f.write_fmt(format_args!("{0}", GLOBAL)),
            Keyword::GRANT => f.write_fmt(format_args!("{0}", GRANT)),
            Keyword::GRANTED => f.write_fmt(format_args!("{0}", GRANTED)),
            Keyword::GRANTS => f.write_fmt(format_args!("{0}", GRANTS)),
            Keyword::GRAPHVIZ => f.write_fmt(format_args!("{0}", GRAPHVIZ)),
            Keyword::GROUP => f.write_fmt(format_args!("{0}", GROUP)),
            Keyword::GROUPING => f.write_fmt(format_args!("{0}", GROUPING)),
            Keyword::GROUPS => f.write_fmt(format_args!("{0}", GROUPS)),
            Keyword::GZIP => f.write_fmt(format_args!("{0}", GZIP)),
            Keyword::HASH => f.write_fmt(format_args!("{0}", HASH)),
            Keyword::HASHES => f.write_fmt(format_args!("{0}", HASHES)),
            Keyword::HAVING => f.write_fmt(format_args!("{0}", HAVING)),
            Keyword::HEADER => f.write_fmt(format_args!("{0}", HEADER)),
            Keyword::HEAP => f.write_fmt(format_args!("{0}", HEAP)),
            Keyword::HIGH_PRIORITY =>
                f.write_fmt(format_args!("{0}", HIGH_PRIORITY)),
            Keyword::HISTORY => f.write_fmt(format_args!("{0}", HISTORY)),
            Keyword::HIVEVAR => f.write_fmt(format_args!("{0}", HIVEVAR)),
            Keyword::HOLD => f.write_fmt(format_args!("{0}", HOLD)),
            Keyword::HOSTS => f.write_fmt(format_args!("{0}", HOSTS)),
            Keyword::HOUR => f.write_fmt(format_args!("{0}", HOUR)),
            Keyword::HOURS => f.write_fmt(format_args!("{0}", HOURS)),
            Keyword::HUGEINT => f.write_fmt(format_args!("{0}", HUGEINT)),
            Keyword::IAM_ROLE => f.write_fmt(format_args!("{0}", IAM_ROLE)),
            Keyword::ICEBERG => f.write_fmt(format_args!("{0}", ICEBERG)),
            Keyword::ID => f.write_fmt(format_args!("{0}", ID)),
            Keyword::IDENTIFIED =>
                f.write_fmt(format_args!("{0}", IDENTIFIED)),
            Keyword::IDENTITY => f.write_fmt(format_args!("{0}", IDENTITY)),
            Keyword::IDENTITY_INSERT =>
                f.write_fmt(format_args!("{0}", IDENTITY_INSERT)),
            Keyword::IF => f.write_fmt(format_args!("{0}", IF)),
            Keyword::IGNORE => f.write_fmt(format_args!("{0}", IGNORE)),
            Keyword::IGNOREHEADER =>
                f.write_fmt(format_args!("{0}", IGNOREHEADER)),
            Keyword::ILIKE => f.write_fmt(format_args!("{0}", ILIKE)),
            Keyword::IMMEDIATE => f.write_fmt(format_args!("{0}", IMMEDIATE)),
            Keyword::IMMUTABLE => f.write_fmt(format_args!("{0}", IMMUTABLE)),
            Keyword::IMPORT => f.write_fmt(format_args!("{0}", IMPORT)),
            Keyword::IMPORTED => f.write_fmt(format_args!("{0}", IMPORTED)),
            Keyword::IN => f.write_fmt(format_args!("{0}", IN)),
            Keyword::INCLUDE => f.write_fmt(format_args!("{0}", INCLUDE)),
            Keyword::INCLUDE_NULL_VALUES =>
                f.write_fmt(format_args!("{0}", INCLUDE_NULL_VALUES)),
            Keyword::INCLUDING => f.write_fmt(format_args!("{0}", INCLUDING)),
            Keyword::INCREMENT => f.write_fmt(format_args!("{0}", INCREMENT)),
            Keyword::INCREMENTAL =>
                f.write_fmt(format_args!("{0}", INCREMENTAL)),
            Keyword::INDEX => f.write_fmt(format_args!("{0}", INDEX)),
            Keyword::INDICATOR => f.write_fmt(format_args!("{0}", INDICATOR)),
            Keyword::INHERIT => f.write_fmt(format_args!("{0}", INHERIT)),
            Keyword::INHERITS => f.write_fmt(format_args!("{0}", INHERITS)),
            Keyword::INITIALIZE =>
                f.write_fmt(format_args!("{0}", INITIALIZE)),
            Keyword::INITIALLY => f.write_fmt(format_args!("{0}", INITIALLY)),
            Keyword::INNER => f.write_fmt(format_args!("{0}", INNER)),
            Keyword::INOUT => f.write_fmt(format_args!("{0}", INOUT)),
            Keyword::INPATH => f.write_fmt(format_args!("{0}", INPATH)),
            Keyword::INPLACE => f.write_fmt(format_args!("{0}", INPLACE)),
            Keyword::INPUT => f.write_fmt(format_args!("{0}", INPUT)),
            Keyword::INPUTFORMAT =>
                f.write_fmt(format_args!("{0}", INPUTFORMAT)),
            Keyword::INSENSITIVE =>
                f.write_fmt(format_args!("{0}", INSENSITIVE)),
            Keyword::INSERT => f.write_fmt(format_args!("{0}", INSERT)),
            Keyword::INSERT_METHOD =>
                f.write_fmt(format_args!("{0}", INSERT_METHOD)),
            Keyword::INSTALL => f.write_fmt(format_args!("{0}", INSTALL)),
            Keyword::INSTANT => f.write_fmt(format_args!("{0}", INSTANT)),
            Keyword::INSTEAD => f.write_fmt(format_args!("{0}", INSTEAD)),
            Keyword::INT => f.write_fmt(format_args!("{0}", INT)),
            Keyword::INT128 => f.write_fmt(format_args!("{0}", INT128)),
            Keyword::INT16 => f.write_fmt(format_args!("{0}", INT16)),
            Keyword::INT2 => f.write_fmt(format_args!("{0}", INT2)),
            Keyword::INT256 => f.write_fmt(format_args!("{0}", INT256)),
            Keyword::INT32 => f.write_fmt(format_args!("{0}", INT32)),
            Keyword::INT4 => f.write_fmt(format_args!("{0}", INT4)),
            Keyword::INT64 => f.write_fmt(format_args!("{0}", INT64)),
            Keyword::INT8 => f.write_fmt(format_args!("{0}", INT8)),
            Keyword::INTEGER => f.write_fmt(format_args!("{0}", INTEGER)),
            Keyword::INTEGRATION =>
                f.write_fmt(format_args!("{0}", INTEGRATION)),
            Keyword::INTERNALLENGTH =>
                f.write_fmt(format_args!("{0}", INTERNALLENGTH)),
            Keyword::INTERPOLATE =>
                f.write_fmt(format_args!("{0}", INTERPOLATE)),
            Keyword::INTERSECT => f.write_fmt(format_args!("{0}", INTERSECT)),
            Keyword::INTERSECTION =>
                f.write_fmt(format_args!("{0}", INTERSECTION)),
            Keyword::INTERVAL => f.write_fmt(format_args!("{0}", INTERVAL)),
            Keyword::INTO => f.write_fmt(format_args!("{0}", INTO)),
            Keyword::INVISIBLE => f.write_fmt(format_args!("{0}", INVISIBLE)),
            Keyword::INVOKER => f.write_fmt(format_args!("{0}", INVOKER)),
            Keyword::IO => f.write_fmt(format_args!("{0}", IO)),
            Keyword::IS => f.write_fmt(format_args!("{0}", IS)),
            Keyword::ISODOW => f.write_fmt(format_args!("{0}", ISODOW)),
            Keyword::ISOLATION => f.write_fmt(format_args!("{0}", ISOLATION)),
            Keyword::ISOWEEK => f.write_fmt(format_args!("{0}", ISOWEEK)),
            Keyword::ISOYEAR => f.write_fmt(format_args!("{0}", ISOYEAR)),
            Keyword::ITEMS => f.write_fmt(format_args!("{0}", ITEMS)),
            Keyword::JAR => f.write_fmt(format_args!("{0}", JAR)),
            Keyword::JOIN => f.write_fmt(format_args!("{0}", JOIN)),
            Keyword::JSON => f.write_fmt(format_args!("{0}", JSON)),
            Keyword::JSONB => f.write_fmt(format_args!("{0}", JSONB)),
            Keyword::JSONFILE => f.write_fmt(format_args!("{0}", JSONFILE)),
            Keyword::JSON_TABLE =>
                f.write_fmt(format_args!("{0}", JSON_TABLE)),
            Keyword::JULIAN => f.write_fmt(format_args!("{0}", JULIAN)),
            Keyword::KEY => f.write_fmt(format_args!("{0}", KEY)),
            Keyword::KEYS => f.write_fmt(format_args!("{0}", KEYS)),
            Keyword::KEY_BLOCK_SIZE =>
                f.write_fmt(format_args!("{0}", KEY_BLOCK_SIZE)),
            Keyword::KILL => f.write_fmt(format_args!("{0}", KILL)),
            Keyword::LAG => f.write_fmt(format_args!("{0}", LAG)),
            Keyword::LAMBDA => f.write_fmt(format_args!("{0}", LAMBDA)),
            Keyword::LANGUAGE => f.write_fmt(format_args!("{0}", LANGUAGE)),
            Keyword::LARGE => f.write_fmt(format_args!("{0}", LARGE)),
            Keyword::LAST => f.write_fmt(format_args!("{0}", LAST)),
            Keyword::LAST_VALUE =>
                f.write_fmt(format_args!("{0}", LAST_VALUE)),
            Keyword::LATERAL => f.write_fmt(format_args!("{0}", LATERAL)),
            Keyword::LEAD => f.write_fmt(format_args!("{0}", LEAD)),
            Keyword::LEADING => f.write_fmt(format_args!("{0}", LEADING)),
            Keyword::LEAKPROOF => f.write_fmt(format_args!("{0}", LEAKPROOF)),
            Keyword::LEAST => f.write_fmt(format_args!("{0}", LEAST)),
            Keyword::LEFT => f.write_fmt(format_args!("{0}", LEFT)),
            Keyword::LEFTARG => f.write_fmt(format_args!("{0}", LEFTARG)),
            Keyword::LEVEL => f.write_fmt(format_args!("{0}", LEVEL)),
            Keyword::LIKE => f.write_fmt(format_args!("{0}", LIKE)),
            Keyword::LIKE_REGEX =>
                f.write_fmt(format_args!("{0}", LIKE_REGEX)),
            Keyword::LIMIT => f.write_fmt(format_args!("{0}", LIMIT)),
            Keyword::LINE => f.write_fmt(format_args!("{0}", LINE)),
            Keyword::LINES => f.write_fmt(format_args!("{0}", LINES)),
            Keyword::LIST => f.write_fmt(format_args!("{0}", LIST)),
            Keyword::LISTEN => f.write_fmt(format_args!("{0}", LISTEN)),
            Keyword::LISTING => f.write_fmt(format_args!("{0}", LISTING)),
            Keyword::LN => f.write_fmt(format_args!("{0}", LN)),
            Keyword::LOAD => f.write_fmt(format_args!("{0}", LOAD)),
            Keyword::LOCAL => f.write_fmt(format_args!("{0}", LOCAL)),
            Keyword::LOCALTIME => f.write_fmt(format_args!("{0}", LOCALTIME)),
            Keyword::LOCALTIMESTAMP =>
                f.write_fmt(format_args!("{0}", LOCALTIMESTAMP)),
            Keyword::LOCATION => f.write_fmt(format_args!("{0}", LOCATION)),
            Keyword::LOCK => f.write_fmt(format_args!("{0}", LOCK)),
            Keyword::LOCKED => f.write_fmt(format_args!("{0}", LOCKED)),
            Keyword::LOG => f.write_fmt(format_args!("{0}", LOG)),
            Keyword::LOGIN => f.write_fmt(format_args!("{0}", LOGIN)),
            Keyword::LOGS => f.write_fmt(format_args!("{0}", LOGS)),
            Keyword::LONG => f.write_fmt(format_args!("{0}", LONG)),
            Keyword::LONGBLOB => f.write_fmt(format_args!("{0}", LONGBLOB)),
            Keyword::LONGTEXT => f.write_fmt(format_args!("{0}", LONGTEXT)),
            Keyword::LOWCARDINALITY =>
                f.write_fmt(format_args!("{0}", LOWCARDINALITY)),
            Keyword::LOWER => f.write_fmt(format_args!("{0}", LOWER)),
            Keyword::LOW_PRIORITY =>
                f.write_fmt(format_args!("{0}", LOW_PRIORITY)),
            Keyword::LS => f.write_fmt(format_args!("{0}", LS)),
            Keyword::LSEG => f.write_fmt(format_args!("{0}", LSEG)),
            Keyword::MACRO => f.write_fmt(format_args!("{0}", MACRO)),
            Keyword::MAIN => f.write_fmt(format_args!("{0}", MAIN)),
            Keyword::MANAGE => f.write_fmt(format_args!("{0}", MANAGE)),
            Keyword::MANAGED => f.write_fmt(format_args!("{0}", MANAGED)),
            Keyword::MANAGEDLOCATION =>
                f.write_fmt(format_args!("{0}", MANAGEDLOCATION)),
            Keyword::MANIFEST => f.write_fmt(format_args!("{0}", MANIFEST)),
            Keyword::MAP => f.write_fmt(format_args!("{0}", MAP)),
            Keyword::MASKING => f.write_fmt(format_args!("{0}", MASKING)),
            Keyword::MATCH => f.write_fmt(format_args!("{0}", MATCH)),
            Keyword::MATCHED => f.write_fmt(format_args!("{0}", MATCHED)),
            Keyword::MATCHES => f.write_fmt(format_args!("{0}", MATCHES)),
            Keyword::MATCH_CONDITION =>
                f.write_fmt(format_args!("{0}", MATCH_CONDITION)),
            Keyword::MATCH_RECOGNIZE =>
                f.write_fmt(format_args!("{0}", MATCH_RECOGNIZE)),
            Keyword::MATERIALIZE =>
                f.write_fmt(format_args!("{0}", MATERIALIZE)),
            Keyword::MATERIALIZED =>
                f.write_fmt(format_args!("{0}", MATERIALIZED)),
            Keyword::MAX => f.write_fmt(format_args!("{0}", MAX)),
            Keyword::MAXFILESIZE =>
                f.write_fmt(format_args!("{0}", MAXFILESIZE)),
            Keyword::MAXVALUE => f.write_fmt(format_args!("{0}", MAXVALUE)),
            Keyword::MAX_DATA_EXTENSION_TIME_IN_DAYS =>
                f.write_fmt(format_args!("{0}",
                        MAX_DATA_EXTENSION_TIME_IN_DAYS)),
            Keyword::MAX_ROWS => f.write_fmt(format_args!("{0}", MAX_ROWS)),
            Keyword::MB => f.write_fmt(format_args!("{0}", MB)),
            Keyword::MEASURES => f.write_fmt(format_args!("{0}", MEASURES)),
            Keyword::MEDIUMBLOB =>
                f.write_fmt(format_args!("{0}", MEDIUMBLOB)),
            Keyword::MEDIUMINT => f.write_fmt(format_args!("{0}", MEDIUMINT)),
            Keyword::MEDIUMTEXT =>
                f.write_fmt(format_args!("{0}", MEDIUMTEXT)),
            Keyword::MEMBER => f.write_fmt(format_args!("{0}", MEMBER)),
            Keyword::MERGE => f.write_fmt(format_args!("{0}", MERGE)),
            Keyword::MERGES => f.write_fmt(format_args!("{0}", MERGES)),
            Keyword::MESSAGE => f.write_fmt(format_args!("{0}", MESSAGE)),
            Keyword::METADATA => f.write_fmt(format_args!("{0}", METADATA)),
            Keyword::METHOD => f.write_fmt(format_args!("{0}", METHOD)),
            Keyword::METRIC => f.write_fmt(format_args!("{0}", METRIC)),
            Keyword::METRICS => f.write_fmt(format_args!("{0}", METRICS)),
            Keyword::MFA => f.write_fmt(format_args!("{0}", MFA)),
            Keyword::MICROSECOND =>
                f.write_fmt(format_args!("{0}", MICROSECOND)),
            Keyword::MICROSECONDS =>
                f.write_fmt(format_args!("{0}", MICROSECONDS)),
            Keyword::MILLENIUM => f.write_fmt(format_args!("{0}", MILLENIUM)),
            Keyword::MILLENNIUM =>
                f.write_fmt(format_args!("{0}", MILLENNIUM)),
            Keyword::MILLISECOND =>
                f.write_fmt(format_args!("{0}", MILLISECOND)),
            Keyword::MILLISECONDS =>
                f.write_fmt(format_args!("{0}", MILLISECONDS)),
            Keyword::MIN => f.write_fmt(format_args!("{0}", MIN)),
            Keyword::MINUS => f.write_fmt(format_args!("{0}", MINUS)),
            Keyword::MINUTE => f.write_fmt(format_args!("{0}", MINUTE)),
            Keyword::MINUTES => f.write_fmt(format_args!("{0}", MINUTES)),
            Keyword::MINVALUE => f.write_fmt(format_args!("{0}", MINVALUE)),
            Keyword::MIN_ROWS => f.write_fmt(format_args!("{0}", MIN_ROWS)),
            Keyword::MOD => f.write_fmt(format_args!("{0}", MOD)),
            Keyword::MODE => f.write_fmt(format_args!("{0}", MODE)),
            Keyword::MODIFIES => f.write_fmt(format_args!("{0}", MODIFIES)),
            Keyword::MODIFY => f.write_fmt(format_args!("{0}", MODIFY)),
            Keyword::MODULE => f.write_fmt(format_args!("{0}", MODULE)),
            Keyword::MODULUS => f.write_fmt(format_args!("{0}", MODULUS)),
            Keyword::MONITOR => f.write_fmt(format_args!("{0}", MONITOR)),
            Keyword::MONTH => f.write_fmt(format_args!("{0}", MONTH)),
            Keyword::MONTHS => f.write_fmt(format_args!("{0}", MONTHS)),
            Keyword::MSCK => f.write_fmt(format_args!("{0}", MSCK)),
            Keyword::MULTIRANGE_TYPE_NAME =>
                f.write_fmt(format_args!("{0}", MULTIRANGE_TYPE_NAME)),
            Keyword::MULTISET => f.write_fmt(format_args!("{0}", MULTISET)),
            Keyword::MUTATION => f.write_fmt(format_args!("{0}", MUTATION)),
            Keyword::NAME => f.write_fmt(format_args!("{0}", NAME)),
            Keyword::NAMES => f.write_fmt(format_args!("{0}", NAMES)),
            Keyword::NANOSECOND =>
                f.write_fmt(format_args!("{0}", NANOSECOND)),
            Keyword::NANOSECONDS =>
                f.write_fmt(format_args!("{0}", NANOSECONDS)),
            Keyword::NATIONAL => f.write_fmt(format_args!("{0}", NATIONAL)),
            Keyword::NATURAL => f.write_fmt(format_args!("{0}", NATURAL)),
            Keyword::NCHAR => f.write_fmt(format_args!("{0}", NCHAR)),
            Keyword::NCLOB => f.write_fmt(format_args!("{0}", NCLOB)),
            Keyword::NEGATOR => f.write_fmt(format_args!("{0}", NEGATOR)),
            Keyword::NEST => f.write_fmt(format_args!("{0}", NEST)),
            Keyword::NESTED => f.write_fmt(format_args!("{0}", NESTED)),
            Keyword::NETWORK => f.write_fmt(format_args!("{0}", NETWORK)),
            Keyword::NEW => f.write_fmt(format_args!("{0}", NEW)),
            Keyword::NEXT => f.write_fmt(format_args!("{0}", NEXT)),
            Keyword::NFC => f.write_fmt(format_args!("{0}", NFC)),
            Keyword::NFD => f.write_fmt(format_args!("{0}", NFD)),
            Keyword::NFKC => f.write_fmt(format_args!("{0}", NFKC)),
            Keyword::NFKD => f.write_fmt(format_args!("{0}", NFKD)),
            Keyword::NO => f.write_fmt(format_args!("{0}", NO)),
            Keyword::NOBYPASSRLS =>
                f.write_fmt(format_args!("{0}", NOBYPASSRLS)),
            Keyword::NOCOMPRESS =>
                f.write_fmt(format_args!("{0}", NOCOMPRESS)),
            Keyword::NOCREATEDB =>
                f.write_fmt(format_args!("{0}", NOCREATEDB)),
            Keyword::NOCREATEROLE =>
                f.write_fmt(format_args!("{0}", NOCREATEROLE)),
            Keyword::NOCYCLE => f.write_fmt(format_args!("{0}", NOCYCLE)),
            Keyword::NOINHERIT => f.write_fmt(format_args!("{0}", NOINHERIT)),
            Keyword::NOLOGIN => f.write_fmt(format_args!("{0}", NOLOGIN)),
            Keyword::NONE => f.write_fmt(format_args!("{0}", NONE)),
            Keyword::NOORDER => f.write_fmt(format_args!("{0}", NOORDER)),
            Keyword::NOREPLICATION =>
                f.write_fmt(format_args!("{0}", NOREPLICATION)),
            Keyword::NORMALIZE => f.write_fmt(format_args!("{0}", NORMALIZE)),
            Keyword::NORMALIZED =>
                f.write_fmt(format_args!("{0}", NORMALIZED)),
            Keyword::NOSCAN => f.write_fmt(format_args!("{0}", NOSCAN)),
            Keyword::NOSUPERUSER =>
                f.write_fmt(format_args!("{0}", NOSUPERUSER)),
            Keyword::NOT => f.write_fmt(format_args!("{0}", NOT)),
            Keyword::NOTHING => f.write_fmt(format_args!("{0}", NOTHING)),
            Keyword::NOTIFY => f.write_fmt(format_args!("{0}", NOTIFY)),
            Keyword::NOTNULL => f.write_fmt(format_args!("{0}", NOTNULL)),
            Keyword::NOWAIT => f.write_fmt(format_args!("{0}", NOWAIT)),
            Keyword::NO_WRITE_TO_BINLOG =>
                f.write_fmt(format_args!("{0}", NO_WRITE_TO_BINLOG)),
            Keyword::NTH_VALUE => f.write_fmt(format_args!("{0}", NTH_VALUE)),
            Keyword::NTILE => f.write_fmt(format_args!("{0}", NTILE)),
            Keyword::NULL => f.write_fmt(format_args!("{0}", NULL)),
            Keyword::NULLABLE => f.write_fmt(format_args!("{0}", NULLABLE)),
            Keyword::NULLIF => f.write_fmt(format_args!("{0}", NULLIF)),
            Keyword::NULLS => f.write_fmt(format_args!("{0}", NULLS)),
            Keyword::NUMBER => f.write_fmt(format_args!("{0}", NUMBER)),
            Keyword::NUMERIC => f.write_fmt(format_args!("{0}", NUMERIC)),
            Keyword::NVARCHAR => f.write_fmt(format_args!("{0}", NVARCHAR)),
            Keyword::OBJECT => f.write_fmt(format_args!("{0}", OBJECT)),
            Keyword::OBJECTS => f.write_fmt(format_args!("{0}", OBJECTS)),
            Keyword::OCCURRENCES_REGEX =>
                f.write_fmt(format_args!("{0}", OCCURRENCES_REGEX)),
            Keyword::OCTETS => f.write_fmt(format_args!("{0}", OCTETS)),
            Keyword::OCTET_LENGTH =>
                f.write_fmt(format_args!("{0}", OCTET_LENGTH)),
            Keyword::OF => f.write_fmt(format_args!("{0}", OF)),
            Keyword::OFF => f.write_fmt(format_args!("{0}", OFF)),
            Keyword::OFFSET => f.write_fmt(format_args!("{0}", OFFSET)),
            Keyword::OFFSETS => f.write_fmt(format_args!("{0}", OFFSETS)),
            Keyword::OLD => f.write_fmt(format_args!("{0}", OLD)),
            Keyword::OMIT => f.write_fmt(format_args!("{0}", OMIT)),
            Keyword::ON => f.write_fmt(format_args!("{0}", ON)),
            Keyword::ONE => f.write_fmt(format_args!("{0}", ONE)),
            Keyword::ONLY => f.write_fmt(format_args!("{0}", ONLY)),
            Keyword::ON_CREATE => f.write_fmt(format_args!("{0}", ON_CREATE)),
            Keyword::ON_SCHEDULE =>
                f.write_fmt(format_args!("{0}", ON_SCHEDULE)),
            Keyword::OPEN => f.write_fmt(format_args!("{0}", OPEN)),
            Keyword::OPENJSON => f.write_fmt(format_args!("{0}", OPENJSON)),
            Keyword::OPERATE => f.write_fmt(format_args!("{0}", OPERATE)),
            Keyword::OPERATOR => f.write_fmt(format_args!("{0}", OPERATOR)),
            Keyword::OPTIMIZATION =>
                f.write_fmt(format_args!("{0}", OPTIMIZATION)),
            Keyword::OPTIMIZE => f.write_fmt(format_args!("{0}", OPTIMIZE)),
            Keyword::OPTIMIZED => f.write_fmt(format_args!("{0}", OPTIMIZED)),
            Keyword::OPTIMIZER_COSTS =>
                f.write_fmt(format_args!("{0}", OPTIMIZER_COSTS)),
            Keyword::OPTION => f.write_fmt(format_args!("{0}", OPTION)),
            Keyword::OPTIONS => f.write_fmt(format_args!("{0}", OPTIONS)),
            Keyword::OR => f.write_fmt(format_args!("{0}", OR)),
            Keyword::ORC => f.write_fmt(format_args!("{0}", ORC)),
            Keyword::ORDER => f.write_fmt(format_args!("{0}", ORDER)),
            Keyword::ORDINALITY =>
                f.write_fmt(format_args!("{0}", ORDINALITY)),
            Keyword::ORGANIZATION =>
                f.write_fmt(format_args!("{0}", ORGANIZATION)),
            Keyword::OTHER => f.write_fmt(format_args!("{0}", OTHER)),
            Keyword::OTP => f.write_fmt(format_args!("{0}", OTP)),
            Keyword::OUT => f.write_fmt(format_args!("{0}", OUT)),
            Keyword::OUTER => f.write_fmt(format_args!("{0}", OUTER)),
            Keyword::OUTPUT => f.write_fmt(format_args!("{0}", OUTPUT)),
            Keyword::OUTPUTFORMAT =>
                f.write_fmt(format_args!("{0}", OUTPUTFORMAT)),
            Keyword::OVER => f.write_fmt(format_args!("{0}", OVER)),
            Keyword::OVERFLOW => f.write_fmt(format_args!("{0}", OVERFLOW)),
            Keyword::OVERLAPS => f.write_fmt(format_args!("{0}", OVERLAPS)),
            Keyword::OVERLAY => f.write_fmt(format_args!("{0}", OVERLAY)),
            Keyword::OVERRIDE => f.write_fmt(format_args!("{0}", OVERRIDE)),
            Keyword::OVERWRITE => f.write_fmt(format_args!("{0}", OVERWRITE)),
            Keyword::OWNED => f.write_fmt(format_args!("{0}", OWNED)),
            Keyword::OWNER => f.write_fmt(format_args!("{0}", OWNER)),
            Keyword::OWNERSHIP => f.write_fmt(format_args!("{0}", OWNERSHIP)),
            Keyword::PACKAGE => f.write_fmt(format_args!("{0}", PACKAGE)),
            Keyword::PACKAGES => f.write_fmt(format_args!("{0}", PACKAGES)),
            Keyword::PACK_KEYS => f.write_fmt(format_args!("{0}", PACK_KEYS)),
            Keyword::PARALLEL => f.write_fmt(format_args!("{0}", PARALLEL)),
            Keyword::PARAMETER => f.write_fmt(format_args!("{0}", PARAMETER)),
            Keyword::PARQUET => f.write_fmt(format_args!("{0}", PARQUET)),
            Keyword::PART => f.write_fmt(format_args!("{0}", PART)),
            Keyword::PARTIAL => f.write_fmt(format_args!("{0}", PARTIAL)),
            Keyword::PARTITION => f.write_fmt(format_args!("{0}", PARTITION)),
            Keyword::PARTITIONED =>
                f.write_fmt(format_args!("{0}", PARTITIONED)),
            Keyword::PARTITIONS =>
                f.write_fmt(format_args!("{0}", PARTITIONS)),
            Keyword::PASSEDBYVALUE =>
                f.write_fmt(format_args!("{0}", PASSEDBYVALUE)),
            Keyword::PASSING => f.write_fmt(format_args!("{0}", PASSING)),
            Keyword::PASSKEY => f.write_fmt(format_args!("{0}", PASSKEY)),
            Keyword::PASSWORD => f.write_fmt(format_args!("{0}", PASSWORD)),
            Keyword::PAST => f.write_fmt(format_args!("{0}", PAST)),
            Keyword::PATH => f.write_fmt(format_args!("{0}", PATH)),
            Keyword::PATTERN => f.write_fmt(format_args!("{0}", PATTERN)),
            Keyword::PCTFREE => f.write_fmt(format_args!("{0}", PCTFREE)),
            Keyword::PER => f.write_fmt(format_args!("{0}", PER)),
            Keyword::PERCENT => f.write_fmt(format_args!("{0}", PERCENT)),
            Keyword::PERCENTILE_CONT =>
                f.write_fmt(format_args!("{0}", PERCENTILE_CONT)),
            Keyword::PERCENTILE_DISC =>
                f.write_fmt(format_args!("{0}", PERCENTILE_DISC)),
            Keyword::PERCENT_RANK =>
                f.write_fmt(format_args!("{0}", PERCENT_RANK)),
            Keyword::PERIOD => f.write_fmt(format_args!("{0}", PERIOD)),
            Keyword::PERMISSIVE =>
                f.write_fmt(format_args!("{0}", PERMISSIVE)),
            Keyword::PERSISTENT =>
                f.write_fmt(format_args!("{0}", PERSISTENT)),
            Keyword::PIVOT => f.write_fmt(format_args!("{0}", PIVOT)),
            Keyword::PLACING => f.write_fmt(format_args!("{0}", PLACING)),
            Keyword::PLAIN => f.write_fmt(format_args!("{0}", PLAIN)),
            Keyword::PLAN => f.write_fmt(format_args!("{0}", PLAN)),
            Keyword::PLANS => f.write_fmt(format_args!("{0}", PLANS)),
            Keyword::POINT => f.write_fmt(format_args!("{0}", POINT)),
            Keyword::POLICY => f.write_fmt(format_args!("{0}", POLICY)),
            Keyword::POLYGON => f.write_fmt(format_args!("{0}", POLYGON)),
            Keyword::POOL => f.write_fmt(format_args!("{0}", POOL)),
            Keyword::PORTION => f.write_fmt(format_args!("{0}", PORTION)),
            Keyword::POSITION => f.write_fmt(format_args!("{0}", POSITION)),
            Keyword::POSITION_REGEX =>
                f.write_fmt(format_args!("{0}", POSITION_REGEX)),
            Keyword::POWER => f.write_fmt(format_args!("{0}", POWER)),
            Keyword::PRAGMA => f.write_fmt(format_args!("{0}", PRAGMA)),
            Keyword::PRECEDES => f.write_fmt(format_args!("{0}", PRECEDES)),
            Keyword::PRECEDING => f.write_fmt(format_args!("{0}", PRECEDING)),
            Keyword::PRECISION => f.write_fmt(format_args!("{0}", PRECISION)),
            Keyword::PREFERRED => f.write_fmt(format_args!("{0}", PREFERRED)),
            Keyword::PREPARE => f.write_fmt(format_args!("{0}", PREPARE)),
            Keyword::PRESERVE => f.write_fmt(format_args!("{0}", PRESERVE)),
            Keyword::PRESET => f.write_fmt(format_args!("{0}", PRESET)),
            Keyword::PREWHERE => f.write_fmt(format_args!("{0}", PREWHERE)),
            Keyword::PRIMARY => f.write_fmt(format_args!("{0}", PRIMARY)),
            Keyword::PRINT => f.write_fmt(format_args!("{0}", PRINT)),
            Keyword::PRIOR => f.write_fmt(format_args!("{0}", PRIOR)),
            Keyword::PRIVILEGES =>
                f.write_fmt(format_args!("{0}", PRIVILEGES)),
            Keyword::PROCEDURE => f.write_fmt(format_args!("{0}", PROCEDURE)),
            Keyword::PROFILE => f.write_fmt(format_args!("{0}", PROFILE)),
            Keyword::PROGRAM => f.write_fmt(format_args!("{0}", PROGRAM)),
            Keyword::PROJECTION =>
                f.write_fmt(format_args!("{0}", PROJECTION)),
            Keyword::PUBLIC => f.write_fmt(format_args!("{0}", PUBLIC)),
            Keyword::PURCHASE => f.write_fmt(format_args!("{0}", PURCHASE)),
            Keyword::PURGE => f.write_fmt(format_args!("{0}", PURGE)),
            Keyword::QUALIFY => f.write_fmt(format_args!("{0}", QUALIFY)),
            Keyword::QUARTER => f.write_fmt(format_args!("{0}", QUARTER)),
            Keyword::QUERIES => f.write_fmt(format_args!("{0}", QUERIES)),
            Keyword::QUERY => f.write_fmt(format_args!("{0}", QUERY)),
            Keyword::QUOTE => f.write_fmt(format_args!("{0}", QUOTE)),
            Keyword::RAISE => f.write_fmt(format_args!("{0}", RAISE)),
            Keyword::RAISERROR => f.write_fmt(format_args!("{0}", RAISERROR)),
            Keyword::RANGE => f.write_fmt(format_args!("{0}", RANGE)),
            Keyword::RANK => f.write_fmt(format_args!("{0}", RANK)),
            Keyword::RAW => f.write_fmt(format_args!("{0}", RAW)),
            Keyword::RCFILE => f.write_fmt(format_args!("{0}", RCFILE)),
            Keyword::READ => f.write_fmt(format_args!("{0}", READ)),
            Keyword::READS => f.write_fmt(format_args!("{0}", READS)),
            Keyword::READ_ONLY => f.write_fmt(format_args!("{0}", READ_ONLY)),
            Keyword::REAL => f.write_fmt(format_args!("{0}", REAL)),
            Keyword::RECEIVE => f.write_fmt(format_args!("{0}", RECEIVE)),
            Keyword::RECLUSTER => f.write_fmt(format_args!("{0}", RECLUSTER)),
            Keyword::RECURSIVE => f.write_fmt(format_args!("{0}", RECURSIVE)),
            Keyword::REF => f.write_fmt(format_args!("{0}", REF)),
            Keyword::REFERENCES =>
                f.write_fmt(format_args!("{0}", REFERENCES)),
            Keyword::REFERENCING =>
                f.write_fmt(format_args!("{0}", REFERENCING)),
            Keyword::REFRESH => f.write_fmt(format_args!("{0}", REFRESH)),
            Keyword::REFRESH_MODE =>
                f.write_fmt(format_args!("{0}", REFRESH_MODE)),
            Keyword::REGCLASS => f.write_fmt(format_args!("{0}", REGCLASS)),
            Keyword::REGEXP => f.write_fmt(format_args!("{0}", REGEXP)),
            Keyword::REGION => f.write_fmt(format_args!("{0}", REGION)),
            Keyword::REGR_AVGX => f.write_fmt(format_args!("{0}", REGR_AVGX)),
            Keyword::REGR_AVGY => f.write_fmt(format_args!("{0}", REGR_AVGY)),
            Keyword::REGR_COUNT =>
                f.write_fmt(format_args!("{0}", REGR_COUNT)),
            Keyword::REGR_INTERCEPT =>
                f.write_fmt(format_args!("{0}", REGR_INTERCEPT)),
            Keyword::REGR_R2 => f.write_fmt(format_args!("{0}", REGR_R2)),
            Keyword::REGR_SLOPE =>
                f.write_fmt(format_args!("{0}", REGR_SLOPE)),
            Keyword::REGR_SXX => f.write_fmt(format_args!("{0}", REGR_SXX)),
            Keyword::REGR_SXY => f.write_fmt(format_args!("{0}", REGR_SXY)),
            Keyword::REGR_SYY => f.write_fmt(format_args!("{0}", REGR_SYY)),
            Keyword::REINDEX => f.write_fmt(format_args!("{0}", REINDEX)),
            Keyword::RELATIVE => f.write_fmt(format_args!("{0}", RELATIVE)),
            Keyword::RELAY => f.write_fmt(format_args!("{0}", RELAY)),
            Keyword::RELEASE => f.write_fmt(format_args!("{0}", RELEASE)),
            Keyword::RELEASES => f.write_fmt(format_args!("{0}", RELEASES)),
            Keyword::REMAINDER => f.write_fmt(format_args!("{0}", REMAINDER)),
            Keyword::REMOTE => f.write_fmt(format_args!("{0}", REMOTE)),
            Keyword::REMOVE => f.write_fmt(format_args!("{0}", REMOVE)),
            Keyword::REMOVEQUOTES =>
                f.write_fmt(format_args!("{0}", REMOVEQUOTES)),
            Keyword::RENAME => f.write_fmt(format_args!("{0}", RENAME)),
            Keyword::REORG => f.write_fmt(format_args!("{0}", REORG)),
            Keyword::REPAIR => f.write_fmt(format_args!("{0}", REPAIR)),
            Keyword::REPEATABLE =>
                f.write_fmt(format_args!("{0}", REPEATABLE)),
            Keyword::REPLACE => f.write_fmt(format_args!("{0}", REPLACE)),
            Keyword::REPLACE_INVALID_CHARACTERS =>
                f.write_fmt(format_args!("{0}", REPLACE_INVALID_CHARACTERS)),
            Keyword::REPLICA => f.write_fmt(format_args!("{0}", REPLICA)),
            Keyword::REPLICATE => f.write_fmt(format_args!("{0}", REPLICATE)),
            Keyword::REPLICATION =>
                f.write_fmt(format_args!("{0}", REPLICATION)),
            Keyword::REQUIRE => f.write_fmt(format_args!("{0}", REQUIRE)),
            Keyword::RESET => f.write_fmt(format_args!("{0}", RESET)),
            Keyword::RESOLVE => f.write_fmt(format_args!("{0}", RESOLVE)),
            Keyword::RESOURCE => f.write_fmt(format_args!("{0}", RESOURCE)),
            Keyword::RESPECT => f.write_fmt(format_args!("{0}", RESPECT)),
            Keyword::RESTART => f.write_fmt(format_args!("{0}", RESTART)),
            Keyword::RESTRICT => f.write_fmt(format_args!("{0}", RESTRICT)),
            Keyword::RESTRICTED =>
                f.write_fmt(format_args!("{0}", RESTRICTED)),
            Keyword::RESTRICTIONS =>
                f.write_fmt(format_args!("{0}", RESTRICTIONS)),
            Keyword::RESTRICTIVE =>
                f.write_fmt(format_args!("{0}", RESTRICTIVE)),
            Keyword::RESULT => f.write_fmt(format_args!("{0}", RESULT)),
            Keyword::RESULTSET => f.write_fmt(format_args!("{0}", RESULTSET)),
            Keyword::RESUME => f.write_fmt(format_args!("{0}", RESUME)),
            Keyword::RETAIN => f.write_fmt(format_args!("{0}", RETAIN)),
            Keyword::RETURN => f.write_fmt(format_args!("{0}", RETURN)),
            Keyword::RETURNING => f.write_fmt(format_args!("{0}", RETURNING)),
            Keyword::RETURNS => f.write_fmt(format_args!("{0}", RETURNS)),
            Keyword::REVOKE => f.write_fmt(format_args!("{0}", REVOKE)),
            Keyword::RIGHT => f.write_fmt(format_args!("{0}", RIGHT)),
            Keyword::RIGHTARG => f.write_fmt(format_args!("{0}", RIGHTARG)),
            Keyword::RLIKE => f.write_fmt(format_args!("{0}", RLIKE)),
            Keyword::RM => f.write_fmt(format_args!("{0}", RM)),
            Keyword::ROLE => f.write_fmt(format_args!("{0}", ROLE)),
            Keyword::ROLES => f.write_fmt(format_args!("{0}", ROLES)),
            Keyword::ROLLBACK => f.write_fmt(format_args!("{0}", ROLLBACK)),
            Keyword::ROLLUP => f.write_fmt(format_args!("{0}", ROLLUP)),
            Keyword::ROOT => f.write_fmt(format_args!("{0}", ROOT)),
            Keyword::ROW => f.write_fmt(format_args!("{0}", ROW)),
            Keyword::ROWGROUPSIZE =>
                f.write_fmt(format_args!("{0}", ROWGROUPSIZE)),
            Keyword::ROWID => f.write_fmt(format_args!("{0}", ROWID)),
            Keyword::ROWS => f.write_fmt(format_args!("{0}", ROWS)),
            Keyword::ROW_FORMAT =>
                f.write_fmt(format_args!("{0}", ROW_FORMAT)),
            Keyword::ROW_NUMBER =>
                f.write_fmt(format_args!("{0}", ROW_NUMBER)),
            Keyword::RULE => f.write_fmt(format_args!("{0}", RULE)),
            Keyword::RUN => f.write_fmt(format_args!("{0}", RUN)),
            Keyword::SAFE => f.write_fmt(format_args!("{0}", SAFE)),
            Keyword::SAFE_CAST => f.write_fmt(format_args!("{0}", SAFE_CAST)),
            Keyword::SAMPLE => f.write_fmt(format_args!("{0}", SAMPLE)),
            Keyword::SAVEPOINT => f.write_fmt(format_args!("{0}", SAVEPOINT)),
            Keyword::SCHEMA => f.write_fmt(format_args!("{0}", SCHEMA)),
            Keyword::SCHEMAS => f.write_fmt(format_args!("{0}", SCHEMAS)),
            Keyword::SCOPE => f.write_fmt(format_args!("{0}", SCOPE)),
            Keyword::SCROLL => f.write_fmt(format_args!("{0}", SCROLL)),
            Keyword::SEARCH => f.write_fmt(format_args!("{0}", SEARCH)),
            Keyword::SECOND => f.write_fmt(format_args!("{0}", SECOND)),
            Keyword::SECONDARY => f.write_fmt(format_args!("{0}", SECONDARY)),
            Keyword::SECONDARY_ENGINE_ATTRIBUTE =>
                f.write_fmt(format_args!("{0}", SECONDARY_ENGINE_ATTRIBUTE)),
            Keyword::SECONDS => f.write_fmt(format_args!("{0}", SECONDS)),
            Keyword::SECRET => f.write_fmt(format_args!("{0}", SECRET)),
            Keyword::SECURE => f.write_fmt(format_args!("{0}", SECURE)),
            Keyword::SECURITY => f.write_fmt(format_args!("{0}", SECURITY)),
            Keyword::SEED => f.write_fmt(format_args!("{0}", SEED)),
            Keyword::SELECT => f.write_fmt(format_args!("{0}", SELECT)),
            Keyword::SEMANTIC_VIEW =>
                f.write_fmt(format_args!("{0}", SEMANTIC_VIEW)),
            Keyword::SEMI => f.write_fmt(format_args!("{0}", SEMI)),
            Keyword::SEND => f.write_fmt(format_args!("{0}", SEND)),
            Keyword::SENSITIVE => f.write_fmt(format_args!("{0}", SENSITIVE)),
            Keyword::SEPARATOR => f.write_fmt(format_args!("{0}", SEPARATOR)),
            Keyword::SEQUENCE => f.write_fmt(format_args!("{0}", SEQUENCE)),
            Keyword::SEQUENCEFILE =>
                f.write_fmt(format_args!("{0}", SEQUENCEFILE)),
            Keyword::SEQUENCES => f.write_fmt(format_args!("{0}", SEQUENCES)),
            Keyword::SERDE => f.write_fmt(format_args!("{0}", SERDE)),
            Keyword::SERDEPROPERTIES =>
                f.write_fmt(format_args!("{0}", SERDEPROPERTIES)),
            Keyword::SERIALIZABLE =>
                f.write_fmt(format_args!("{0}", SERIALIZABLE)),
            Keyword::SERVER => f.write_fmt(format_args!("{0}", SERVER)),
            Keyword::SERVICE => f.write_fmt(format_args!("{0}", SERVICE)),
            Keyword::SESSION => f.write_fmt(format_args!("{0}", SESSION)),
            Keyword::SESSION_USER =>
                f.write_fmt(format_args!("{0}", SESSION_USER)),
            Keyword::SET => f.write_fmt(format_args!("{0}", SET)),
            Keyword::SETERROR => f.write_fmt(format_args!("{0}", SETERROR)),
            Keyword::SETS => f.write_fmt(format_args!("{0}", SETS)),
            Keyword::SETTINGS => f.write_fmt(format_args!("{0}", SETTINGS)),
            Keyword::SHARE => f.write_fmt(format_args!("{0}", SHARE)),
            Keyword::SHARED => f.write_fmt(format_args!("{0}", SHARED)),
            Keyword::SHARING => f.write_fmt(format_args!("{0}", SHARING)),
            Keyword::SHOW => f.write_fmt(format_args!("{0}", SHOW)),
            Keyword::SIGNED => f.write_fmt(format_args!("{0}", SIGNED)),
            Keyword::SIMILAR => f.write_fmt(format_args!("{0}", SIMILAR)),
            Keyword::SIMPLE => f.write_fmt(format_args!("{0}", SIMPLE)),
            Keyword::SIZE => f.write_fmt(format_args!("{0}", SIZE)),
            Keyword::SKIP => f.write_fmt(format_args!("{0}", SKIP)),
            Keyword::SLOW => f.write_fmt(format_args!("{0}", SLOW)),
            Keyword::SMALLINT => f.write_fmt(format_args!("{0}", SMALLINT)),
            Keyword::SNAPSHOT => f.write_fmt(format_args!("{0}", SNAPSHOT)),
            Keyword::SOME => f.write_fmt(format_args!("{0}", SOME)),
            Keyword::SORT => f.write_fmt(format_args!("{0}", SORT)),
            Keyword::SORTED => f.write_fmt(format_args!("{0}", SORTED)),
            Keyword::SOURCE => f.write_fmt(format_args!("{0}", SOURCE)),
            Keyword::SPATIAL => f.write_fmt(format_args!("{0}", SPATIAL)),
            Keyword::SPECIFIC => f.write_fmt(format_args!("{0}", SPECIFIC)),
            Keyword::SPECIFICTYPE =>
                f.write_fmt(format_args!("{0}", SPECIFICTYPE)),
            Keyword::SPGIST => f.write_fmt(format_args!("{0}", SPGIST)),
            Keyword::SQL => f.write_fmt(format_args!("{0}", SQL)),
            Keyword::SQLEXCEPTION =>
                f.write_fmt(format_args!("{0}", SQLEXCEPTION)),
            Keyword::SQLSTATE => f.write_fmt(format_args!("{0}", SQLSTATE)),
            Keyword::SQLWARNING =>
                f.write_fmt(format_args!("{0}", SQLWARNING)),
            Keyword::SQL_BIG_RESULT =>
                f.write_fmt(format_args!("{0}", SQL_BIG_RESULT)),
            Keyword::SQL_BUFFER_RESULT =>
                f.write_fmt(format_args!("{0}", SQL_BUFFER_RESULT)),
            Keyword::SQL_CALC_FOUND_ROWS =>
                f.write_fmt(format_args!("{0}", SQL_CALC_FOUND_ROWS)),
            Keyword::SQL_NO_CACHE =>
                f.write_fmt(format_args!("{0}", SQL_NO_CACHE)),
            Keyword::SQL_SMALL_RESULT =>
                f.write_fmt(format_args!("{0}", SQL_SMALL_RESULT)),
            Keyword::SQRT => f.write_fmt(format_args!("{0}", SQRT)),
            Keyword::SRID => f.write_fmt(format_args!("{0}", SRID)),
            Keyword::STABLE => f.write_fmt(format_args!("{0}", STABLE)),
            Keyword::STAGE => f.write_fmt(format_args!("{0}", STAGE)),
            Keyword::START => f.write_fmt(format_args!("{0}", START)),
            Keyword::STARTS => f.write_fmt(format_args!("{0}", STARTS)),
            Keyword::STATEMENT => f.write_fmt(format_args!("{0}", STATEMENT)),
            Keyword::STATIC => f.write_fmt(format_args!("{0}", STATIC)),
            Keyword::STATISTICS =>
                f.write_fmt(format_args!("{0}", STATISTICS)),
            Keyword::STATS_AUTO_RECALC =>
                f.write_fmt(format_args!("{0}", STATS_AUTO_RECALC)),
            Keyword::STATS_PERSISTENT =>
                f.write_fmt(format_args!("{0}", STATS_PERSISTENT)),
            Keyword::STATS_SAMPLE_PAGES =>
                f.write_fmt(format_args!("{0}", STATS_SAMPLE_PAGES)),
            Keyword::STATUPDATE =>
                f.write_fmt(format_args!("{0}", STATUPDATE)),
            Keyword::STATUS => f.write_fmt(format_args!("{0}", STATUS)),
            Keyword::STDDEV_POP =>
                f.write_fmt(format_args!("{0}", STDDEV_POP)),
            Keyword::STDDEV_SAMP =>
                f.write_fmt(format_args!("{0}", STDDEV_SAMP)),
            Keyword::STDIN => f.write_fmt(format_args!("{0}", STDIN)),
            Keyword::STDOUT => f.write_fmt(format_args!("{0}", STDOUT)),
            Keyword::STEP => f.write_fmt(format_args!("{0}", STEP)),
            Keyword::STORAGE => f.write_fmt(format_args!("{0}", STORAGE)),
            Keyword::STORAGE_INTEGRATION =>
                f.write_fmt(format_args!("{0}", STORAGE_INTEGRATION)),
            Keyword::STORAGE_SERIALIZATION_POLICY =>
                f.write_fmt(format_args!("{0}",
                        STORAGE_SERIALIZATION_POLICY)),
            Keyword::STORED => f.write_fmt(format_args!("{0}", STORED)),
            Keyword::STRAIGHT_JOIN =>
                f.write_fmt(format_args!("{0}", STRAIGHT_JOIN)),
            Keyword::STREAM => f.write_fmt(format_args!("{0}", STREAM)),
            Keyword::STRICT => f.write_fmt(format_args!("{0}", STRICT)),
            Keyword::STRING => f.write_fmt(format_args!("{0}", STRING)),
            Keyword::STRUCT => f.write_fmt(format_args!("{0}", STRUCT)),
            Keyword::SUBMULTISET =>
                f.write_fmt(format_args!("{0}", SUBMULTISET)),
            Keyword::SUBSCRIPT => f.write_fmt(format_args!("{0}", SUBSCRIPT)),
            Keyword::SUBSTR => f.write_fmt(format_args!("{0}", SUBSTR)),
            Keyword::SUBSTRING => f.write_fmt(format_args!("{0}", SUBSTRING)),
            Keyword::SUBSTRING_REGEX =>
                f.write_fmt(format_args!("{0}", SUBSTRING_REGEX)),
            Keyword::SUBTYPE => f.write_fmt(format_args!("{0}", SUBTYPE)),
            Keyword::SUBTYPE_DIFF =>
                f.write_fmt(format_args!("{0}", SUBTYPE_DIFF)),
            Keyword::SUBTYPE_OPCLASS =>
                f.write_fmt(format_args!("{0}", SUBTYPE_OPCLASS)),
            Keyword::SUCCEEDS => f.write_fmt(format_args!("{0}", SUCCEEDS)),
            Keyword::SUM => f.write_fmt(format_args!("{0}", SUM)),
            Keyword::SUPER => f.write_fmt(format_args!("{0}", SUPER)),
            Keyword::SUPERUSER => f.write_fmt(format_args!("{0}", SUPERUSER)),
            Keyword::SUPPORT => f.write_fmt(format_args!("{0}", SUPPORT)),
            Keyword::SUSPEND => f.write_fmt(format_args!("{0}", SUSPEND)),
            Keyword::SWAP => f.write_fmt(format_args!("{0}", SWAP)),
            Keyword::SYMMETRIC => f.write_fmt(format_args!("{0}", SYMMETRIC)),
            Keyword::SYNC => f.write_fmt(format_args!("{0}", SYNC)),
            Keyword::SYNONYM => f.write_fmt(format_args!("{0}", SYNONYM)),
            Keyword::SYSTEM => f.write_fmt(format_args!("{0}", SYSTEM)),
            Keyword::SYSTEM_TIME =>
                f.write_fmt(format_args!("{0}", SYSTEM_TIME)),
            Keyword::SYSTEM_USER =>
                f.write_fmt(format_args!("{0}", SYSTEM_USER)),
            Keyword::TABLE => f.write_fmt(format_args!("{0}", TABLE)),
            Keyword::TABLES => f.write_fmt(format_args!("{0}", TABLES)),
            Keyword::TABLESAMPLE =>
                f.write_fmt(format_args!("{0}", TABLESAMPLE)),
            Keyword::TABLESPACE =>
                f.write_fmt(format_args!("{0}", TABLESPACE)),
            Keyword::TAG => f.write_fmt(format_args!("{0}", TAG)),
            Keyword::TARGET => f.write_fmt(format_args!("{0}", TARGET)),
            Keyword::TARGET_LAG =>
                f.write_fmt(format_args!("{0}", TARGET_LAG)),
            Keyword::TASK => f.write_fmt(format_args!("{0}", TASK)),
            Keyword::TBLPROPERTIES =>
                f.write_fmt(format_args!("{0}", TBLPROPERTIES)),
            Keyword::TEMP => f.write_fmt(format_args!("{0}", TEMP)),
            Keyword::TEMPORARY => f.write_fmt(format_args!("{0}", TEMPORARY)),
            Keyword::TEMPTABLE => f.write_fmt(format_args!("{0}", TEMPTABLE)),
            Keyword::TERMINATED =>
                f.write_fmt(format_args!("{0}", TERMINATED)),
            Keyword::TERSE => f.write_fmt(format_args!("{0}", TERSE)),
            Keyword::TEXT => f.write_fmt(format_args!("{0}", TEXT)),
            Keyword::TEXTFILE => f.write_fmt(format_args!("{0}", TEXTFILE)),
            Keyword::THEN => f.write_fmt(format_args!("{0}", THEN)),
            Keyword::TIES => f.write_fmt(format_args!("{0}", TIES)),
            Keyword::TIME => f.write_fmt(format_args!("{0}", TIME)),
            Keyword::TIMEFORMAT =>
                f.write_fmt(format_args!("{0}", TIMEFORMAT)),
            Keyword::TIMESTAMP => f.write_fmt(format_args!("{0}", TIMESTAMP)),
            Keyword::TIMESTAMPTZ =>
                f.write_fmt(format_args!("{0}", TIMESTAMPTZ)),
            Keyword::TIMESTAMP_NTZ =>
                f.write_fmt(format_args!("{0}", TIMESTAMP_NTZ)),
            Keyword::TIMETZ => f.write_fmt(format_args!("{0}", TIMETZ)),
            Keyword::TIMEZONE => f.write_fmt(format_args!("{0}", TIMEZONE)),
            Keyword::TIMEZONE_ABBR =>
                f.write_fmt(format_args!("{0}", TIMEZONE_ABBR)),
            Keyword::TIMEZONE_HOUR =>
                f.write_fmt(format_args!("{0}", TIMEZONE_HOUR)),
            Keyword::TIMEZONE_MINUTE =>
                f.write_fmt(format_args!("{0}", TIMEZONE_MINUTE)),
            Keyword::TIMEZONE_REGION =>
                f.write_fmt(format_args!("{0}", TIMEZONE_REGION)),
            Keyword::TINYBLOB => f.write_fmt(format_args!("{0}", TINYBLOB)),
            Keyword::TINYINT => f.write_fmt(format_args!("{0}", TINYINT)),
            Keyword::TINYTEXT => f.write_fmt(format_args!("{0}", TINYTEXT)),
            Keyword::TO => f.write_fmt(format_args!("{0}", TO)),
            Keyword::TOP => f.write_fmt(format_args!("{0}", TOP)),
            Keyword::TOTALS => f.write_fmt(format_args!("{0}", TOTALS)),
            Keyword::TOTP => f.write_fmt(format_args!("{0}", TOTP)),
            Keyword::TRACE => f.write_fmt(format_args!("{0}", TRACE)),
            Keyword::TRAILING => f.write_fmt(format_args!("{0}", TRAILING)),
            Keyword::TRANSACTION =>
                f.write_fmt(format_args!("{0}", TRANSACTION)),
            Keyword::TRANSIENT => f.write_fmt(format_args!("{0}", TRANSIENT)),
            Keyword::TRANSLATE => f.write_fmt(format_args!("{0}", TRANSLATE)),
            Keyword::TRANSLATE_REGEX =>
                f.write_fmt(format_args!("{0}", TRANSLATE_REGEX)),
            Keyword::TRANSLATION =>
                f.write_fmt(format_args!("{0}", TRANSLATION)),
            Keyword::TREAT => f.write_fmt(format_args!("{0}", TREAT)),
            Keyword::TREE => f.write_fmt(format_args!("{0}", TREE)),
            Keyword::TRIGGER => f.write_fmt(format_args!("{0}", TRIGGER)),
            Keyword::TRIM => f.write_fmt(format_args!("{0}", TRIM)),
            Keyword::TRIM_ARRAY =>
                f.write_fmt(format_args!("{0}", TRIM_ARRAY)),
            Keyword::TRUE => f.write_fmt(format_args!("{0}", TRUE)),
            Keyword::TRUNCATE => f.write_fmt(format_args!("{0}", TRUNCATE)),
            Keyword::TRUNCATECOLUMNS =>
                f.write_fmt(format_args!("{0}", TRUNCATECOLUMNS)),
            Keyword::TRY => f.write_fmt(format_args!("{0}", TRY)),
            Keyword::TRY_CAST => f.write_fmt(format_args!("{0}", TRY_CAST)),
            Keyword::TRY_CONVERT =>
                f.write_fmt(format_args!("{0}", TRY_CONVERT)),
            Keyword::TSQUERY => f.write_fmt(format_args!("{0}", TSQUERY)),
            Keyword::TSVECTOR => f.write_fmt(format_args!("{0}", TSVECTOR)),
            Keyword::TUPLE => f.write_fmt(format_args!("{0}", TUPLE)),
            Keyword::TYPE => f.write_fmt(format_args!("{0}", TYPE)),
            Keyword::TYPMOD_IN => f.write_fmt(format_args!("{0}", TYPMOD_IN)),
            Keyword::TYPMOD_OUT =>
                f.write_fmt(format_args!("{0}", TYPMOD_OUT)),
            Keyword::UBIGINT => f.write_fmt(format_args!("{0}", UBIGINT)),
            Keyword::UESCAPE => f.write_fmt(format_args!("{0}", UESCAPE)),
            Keyword::UHUGEINT => f.write_fmt(format_args!("{0}", UHUGEINT)),
            Keyword::UINT128 => f.write_fmt(format_args!("{0}", UINT128)),
            Keyword::UINT16 => f.write_fmt(format_args!("{0}", UINT16)),
            Keyword::UINT256 => f.write_fmt(format_args!("{0}", UINT256)),
            Keyword::UINT32 => f.write_fmt(format_args!("{0}", UINT32)),
            Keyword::UINT64 => f.write_fmt(format_args!("{0}", UINT64)),
            Keyword::UINT8 => f.write_fmt(format_args!("{0}", UINT8)),
            Keyword::UNBOUNDED => f.write_fmt(format_args!("{0}", UNBOUNDED)),
            Keyword::UNCACHE => f.write_fmt(format_args!("{0}", UNCACHE)),
            Keyword::UNCOMMITTED =>
                f.write_fmt(format_args!("{0}", UNCOMMITTED)),
            Keyword::UNDEFINED => f.write_fmt(format_args!("{0}", UNDEFINED)),
            Keyword::UNFREEZE => f.write_fmt(format_args!("{0}", UNFREEZE)),
            Keyword::UNION => f.write_fmt(format_args!("{0}", UNION)),
            Keyword::UNIQUE => f.write_fmt(format_args!("{0}", UNIQUE)),
            Keyword::UNKNOWN => f.write_fmt(format_args!("{0}", UNKNOWN)),
            Keyword::UNLISTEN => f.write_fmt(format_args!("{0}", UNLISTEN)),
            Keyword::UNLOAD => f.write_fmt(format_args!("{0}", UNLOAD)),
            Keyword::UNLOCK => f.write_fmt(format_args!("{0}", UNLOCK)),
            Keyword::UNLOGGED => f.write_fmt(format_args!("{0}", UNLOGGED)),
            Keyword::UNMATCHED => f.write_fmt(format_args!("{0}", UNMATCHED)),
            Keyword::UNNEST => f.write_fmt(format_args!("{0}", UNNEST)),
            Keyword::UNPIVOT => f.write_fmt(format_args!("{0}", UNPIVOT)),
            Keyword::UNSAFE => f.write_fmt(format_args!("{0}", UNSAFE)),
            Keyword::UNSET => f.write_fmt(format_args!("{0}", UNSET)),
            Keyword::UNSIGNED => f.write_fmt(format_args!("{0}", UNSIGNED)),
            Keyword::UNTIL => f.write_fmt(format_args!("{0}", UNTIL)),
            Keyword::UPDATE => f.write_fmt(format_args!("{0}", UPDATE)),
            Keyword::UPPER => f.write_fmt(format_args!("{0}", UPPER)),
            Keyword::URL => f.write_fmt(format_args!("{0}", URL)),
            Keyword::USAGE => f.write_fmt(format_args!("{0}", USAGE)),
            Keyword::USE => f.write_fmt(format_args!("{0}", USE)),
            Keyword::USER => f.write_fmt(format_args!("{0}", USER)),
            Keyword::USER_RESOURCES =>
                f.write_fmt(format_args!("{0}", USER_RESOURCES)),
            Keyword::USING => f.write_fmt(format_args!("{0}", USING)),
            Keyword::USMALLINT => f.write_fmt(format_args!("{0}", USMALLINT)),
            Keyword::UTINYINT => f.write_fmt(format_args!("{0}", UTINYINT)),
            Keyword::UUID => f.write_fmt(format_args!("{0}", UUID)),
            Keyword::VACUUM => f.write_fmt(format_args!("{0}", VACUUM)),
            Keyword::VALID => f.write_fmt(format_args!("{0}", VALID)),
            Keyword::VALIDATE => f.write_fmt(format_args!("{0}", VALIDATE)),
            Keyword::VALIDATION_MODE =>
                f.write_fmt(format_args!("{0}", VALIDATION_MODE)),
            Keyword::VALUE => f.write_fmt(format_args!("{0}", VALUE)),
            Keyword::VALUES => f.write_fmt(format_args!("{0}", VALUES)),
            Keyword::VALUE_OF => f.write_fmt(format_args!("{0}", VALUE_OF)),
            Keyword::VARBINARY => f.write_fmt(format_args!("{0}", VARBINARY)),
            Keyword::VARBIT => f.write_fmt(format_args!("{0}", VARBIT)),
            Keyword::VARCHAR => f.write_fmt(format_args!("{0}", VARCHAR)),
            Keyword::VARCHAR2 => f.write_fmt(format_args!("{0}", VARCHAR2)),
            Keyword::VARIABLE => f.write_fmt(format_args!("{0}", VARIABLE)),
            Keyword::VARIABLES => f.write_fmt(format_args!("{0}", VARIABLES)),
            Keyword::VARYING => f.write_fmt(format_args!("{0}", VARYING)),
            Keyword::VAR_POP => f.write_fmt(format_args!("{0}", VAR_POP)),
            Keyword::VAR_SAMP => f.write_fmt(format_args!("{0}", VAR_SAMP)),
            Keyword::VERBOSE => f.write_fmt(format_args!("{0}", VERBOSE)),
            Keyword::VERSION => f.write_fmt(format_args!("{0}", VERSION)),
            Keyword::VERSIONING =>
                f.write_fmt(format_args!("{0}", VERSIONING)),
            Keyword::VERSIONS => f.write_fmt(format_args!("{0}", VERSIONS)),
            Keyword::VIEW => f.write_fmt(format_args!("{0}", VIEW)),
            Keyword::VIEWS => f.write_fmt(format_args!("{0}", VIEWS)),
            Keyword::VIRTUAL => f.write_fmt(format_args!("{0}", VIRTUAL)),
            Keyword::VOLATILE => f.write_fmt(format_args!("{0}", VOLATILE)),
            Keyword::VOLUME => f.write_fmt(format_args!("{0}", VOLUME)),
            Keyword::WAREHOUSE => f.write_fmt(format_args!("{0}", WAREHOUSE)),
            Keyword::WAREHOUSES =>
                f.write_fmt(format_args!("{0}", WAREHOUSES)),
            Keyword::WEEK => f.write_fmt(format_args!("{0}", WEEK)),
            Keyword::WEEKS => f.write_fmt(format_args!("{0}", WEEKS)),
            Keyword::WHEN => f.write_fmt(format_args!("{0}", WHEN)),
            Keyword::WHENEVER => f.write_fmt(format_args!("{0}", WHENEVER)),
            Keyword::WHERE => f.write_fmt(format_args!("{0}", WHERE)),
            Keyword::WHILE => f.write_fmt(format_args!("{0}", WHILE)),
            Keyword::WIDTH_BUCKET =>
                f.write_fmt(format_args!("{0}", WIDTH_BUCKET)),
            Keyword::WINDOW => f.write_fmt(format_args!("{0}", WINDOW)),
            Keyword::WITH => f.write_fmt(format_args!("{0}", WITH)),
            Keyword::WITHIN => f.write_fmt(format_args!("{0}", WITHIN)),
            Keyword::WITHOUT => f.write_fmt(format_args!("{0}", WITHOUT)),
            Keyword::WITHOUT_ARRAY_WRAPPER =>
                f.write_fmt(format_args!("{0}", WITHOUT_ARRAY_WRAPPER)),
            Keyword::WORK => f.write_fmt(format_args!("{0}", WORK)),
            Keyword::WORKLOAD_IDENTITY =>
                f.write_fmt(format_args!("{0}", WORKLOAD_IDENTITY)),
            Keyword::WRAPPER => f.write_fmt(format_args!("{0}", WRAPPER)),
            Keyword::WRITE => f.write_fmt(format_args!("{0}", WRITE)),
            Keyword::XML => f.write_fmt(format_args!("{0}", XML)),
            Keyword::XMLNAMESPACES =>
                f.write_fmt(format_args!("{0}", XMLNAMESPACES)),
            Keyword::XMLTABLE => f.write_fmt(format_args!("{0}", XMLTABLE)),
            Keyword::XOR => f.write_fmt(format_args!("{0}", XOR)),
            Keyword::YEAR => f.write_fmt(format_args!("{0}", YEAR)),
            Keyword::YEARS => f.write_fmt(format_args!("{0}", YEARS)),
            Keyword::ZONE => f.write_fmt(format_args!("{0}", ZONE)),
            Keyword::ZORDER => f.write_fmt(format_args!("{0}", ZORDER)),
            Keyword::ZSTD => f.write_fmt(format_args!("{0}", ZSTD)),
        }
    }
}define_keywords!(
92    ABORT,
93    ABS,
94    ABSENT,
95    ABSOLUTE,
96    ACCEPTANYDATE,
97    ACCEPTINVCHARS,
98    ACCESS,
99    ACCOUNT,
100    ACTION,
101    ADD,
102    ADDQUOTES,
103    ADMIN,
104    AFTER,
105    AGAINST,
106    AGGREGATE,
107    AGGREGATION,
108    ALERT,
109    ALGORITHM,
110    ALIAS,
111    ALIGNMENT,
112    ALL,
113    ALLOCATE,
114    ALLOWOVERWRITE,
115    ALTER,
116    ALWAYS,
117    ANALYZE,
118    AND,
119    ANTI,
120    ANY,
121    APPLICATION,
122    APPLY,
123    APPLYBUDGET,
124    ARCHIVE,
125    ARE,
126    ARRAY,
127    ARRAY_MAX_CARDINALITY,
128    AS,
129    ASC,
130    ASENSITIVE,
131    ASOF,
132    ASSERT,
133    ASYMMETRIC,
134    AT,
135    ATOMIC,
136    ATTACH,
137    AUDIT,
138    AUTHENTICATION,
139    AUTHORIZATION,
140    AUTHORIZATIONS,
141    AUTO,
142    AUTOEXTEND_SIZE,
143    AUTOINCREMENT,
144    AUTO_INCREMENT,
145    AVG,
146    AVG_ROW_LENGTH,
147    AVRO,
148    BACKWARD,
149    BASE64,
150    BASE_LOCATION,
151    BEFORE,
152    BEGIN,
153    BEGIN_FRAME,
154    BEGIN_PARTITION,
155    BERNOULLI,
156    BETWEEN,
157    BIGDECIMAL,
158    BIGINT,
159    BIGNUMERIC,
160    BINARY,
161    BIND,
162    BINDING,
163    BIT,
164    BLANKSASNULL,
165    BLOB,
166    BLOCK,
167    BLOOM,
168    BLOOMFILTER,
169    BOOL,
170    BOOLEAN,
171    BOOST,
172    BOTH,
173    BOX,
174    BRIN,
175    BROWSE,
176    BTREE,
177    BUCKET,
178    BUCKETS,
179    BY,
180    BYPASSRLS,
181    BYTEA,
182    BYTES,
183    BZIP2,
184    CACHE,
185    CALL,
186    CALLED,
187    CANONICAL,
188    CARDINALITY,
189    CASCADE,
190    CASCADED,
191    CASE,
192    CASES,
193    CAST,
194    CATALOG,
195    CATALOG_SYNC,
196    CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER,
197    CATALOG_SYNC_NAMESPACE_MODE,
198    CATCH,
199    CATEGORY,
200    CEIL,
201    CEILING,
202    CENTURY,
203    CHAIN,
204    CHANGE,
205    CHANGE_TRACKING,
206    CHANNEL,
207    CHAR,
208    CHARACTER,
209    CHARACTERISTICS,
210    CHARACTERS,
211    CHARACTER_LENGTH,
212    CHARSET,
213    CHAR_LENGTH,
214    CHECK,
215    CHECKSUM,
216    CIRCLE,
217    CLASS,
218    CLEANPATH,
219    CLEAR,
220    CLOB,
221    CLONE,
222    CLOSE,
223    CLUSTER,
224    CLUSTERED,
225    CLUSTERING,
226    COALESCE,
227    COLLATABLE,
228    COLLATE,
229    COLLATION,
230    COLLECT,
231    COLLECTION,
232    COLUMN,
233    COLUMNS,
234    COLUMNSTORE,
235    COMMENT,
236    COMMIT,
237    COMMITTED,
238    COMMUTATOR,
239    COMPATIBLE,
240    COMPRESS,
241    COMPRESSION,
242    COMPUPDATE,
243    COMPUTE,
244    CONCURRENTLY,
245    CONDITION,
246    CONFLICT,
247    CONNECT,
248    CONNECTION,
249    CONNECTOR,
250    CONNECT_BY_ROOT,
251    CONSTRAINT,
252    CONTACT,
253    CONTAINS,
254    CONTINUE,
255    CONVERT,
256    COPY,
257    COPY_OPTIONS,
258    CORR,
259    CORRESPONDING,
260    COUNT,
261    COVAR_POP,
262    COVAR_SAMP,
263    CREATE,
264    CREATEDB,
265    CREATEROLE,
266    CREDENTIALS,
267    CROSS,
268    CSV,
269    CUBE,
270    CUME_DIST,
271    CURRENT,
272    CURRENT_CATALOG,
273    CURRENT_DATE,
274    CURRENT_DEFAULT_TRANSFORM_GROUP,
275    CURRENT_PATH,
276    CURRENT_ROLE,
277    CURRENT_ROW,
278    CURRENT_SCHEMA,
279    CURRENT_TIME,
280    CURRENT_TIMESTAMP,
281    CURRENT_TRANSFORM_GROUP_FOR_TYPE,
282    CURRENT_USER,
283    CURSOR,
284    CYCLE,
285    DATA,
286    DATABASE,
287    DATABASES,
288    DATA_RETENTION_TIME_IN_DAYS,
289    DATE,
290    DATE32,
291    DATEFORMAT,
292    DATETIME,
293    DATETIME64,
294    DAY,
295    DAYOFWEEK,
296    DAYOFYEAR,
297    DAYS,
298    DCPROPERTIES,
299    DEALLOCATE,
300    DEC,
301    DECADE,
302    DECIMAL,
303    DECLARE,
304    DEDUPLICATE,
305    DEFAULT,
306    DEFAULTS,
307    DEFAULT_DDL_COLLATION,
308    DEFAULT_MFA_METHOD,
309    DEFAULT_SECONDARY_ROLES,
310    DEFERRABLE,
311    DEFERRED,
312    DEFINE,
313    DEFINED,
314    DEFINER,
315    DELAYED,
316    DELAY_KEY_WRITE,
317    DELEGATED,
318    DELETE,
319    DELIMITED,
320    DELIMITER,
321    DELTA,
322    DENSE_RANK,
323    DENY,
324    DEREF,
325    DESC,
326    DESCRIBE,
327    DETACH,
328    DETAIL,
329    DETERMINISTIC,
330    DIMENSIONS,
331    DIRECTORY,
332    DISABLE,
333    DISCARD,
334    DISCONNECT,
335    DISTINCT,
336    DISTINCTROW,
337    DISTRIBUTE,
338    DIV,
339    DO,
340    DOMAIN,
341    DOUBLE,
342    DOW,
343    DOWNSTREAM,
344    DOY,
345    DROP,
346    DRY,
347    DUO,
348    DUPLICATE,
349    DYNAMIC,
350    EACH,
351    ELEMENT,
352    ELEMENTS,
353    ELSE,
354    ELSEIF,
355    EMPTY,
356    EMPTYASNULL,
357    ENABLE,
358    ENABLE_SCHEMA_EVOLUTION,
359    ENCODING,
360    ENCRYPTED,
361    ENCRYPTION,
362    END,
363    END_EXEC = "END-EXEC",
364    ENDPOINT,
365    END_FRAME,
366    END_PARTITION,
367    ENFORCED,
368    ENGINE,
369    ENGINE_ATTRIBUTE,
370    ENROLL,
371    ENUM,
372    ENUM16,
373    ENUM8,
374    EPHEMERAL,
375    EPOCH,
376    EQUALS,
377    ERROR,
378    ESCAPE,
379    ESCAPED,
380    ESTIMATE,
381    EVENT,
382    EVERY,
383    EVOLVE,
384    EXCEPT,
385    EXCEPTION,
386    EXCHANGE,
387    EXCLUDE,
388    EXCLUDING,
389    EXCLUSIVE,
390    EXEC,
391    EXECUTE,
392    EXECUTION,
393    EXISTS,
394    EXP,
395    EXPANSION,
396    EXPLAIN,
397    EXPLICIT,
398    EXPORT,
399    EXTEND,
400    EXTENDED,
401    EXTENSION,
402    EXTERNAL,
403    EXTERNAL_VOLUME,
404    EXTRACT,
405    FACTS,
406    FAIL,
407    FAILOVER,
408    FALSE,
409    FAMILY,
410    FETCH,
411    FIELDS,
412    FILE,
413    FILES,
414    FILE_FORMAT,
415    FILL,
416    FILTER,
417    FINAL,
418    FIRST,
419    FIRST_VALUE,
420    FIXEDSTRING,
421    FIXEDWIDTH,
422    FLATTEN,
423    FLOAT,
424    FLOAT32,
425    FLOAT4,
426    FLOAT64,
427    FLOAT8,
428    FLOOR,
429    FLUSH,
430    FN,
431    FOLLOWING,
432    FOR,
433    FORCE,
434    FORCE_NOT_NULL,
435    FORCE_NULL,
436    FORCE_QUOTE,
437    FOREIGN,
438    FORMAT,
439    FORMATTED,
440    FORWARD,
441    FRAME_ROW,
442    FREE,
443    FREEZE,
444    FROM,
445    FSCK,
446    FULFILLMENT,
447    FULL,
448    FULLTEXT,
449    FUNCTION,
450    FUNCTIONS,
451    FUSION,
452    FUTURE,
453    GB,
454    GENERAL,
455    GENERATE,
456    GENERATED,
457    GEOGRAPHY,
458    GET,
459    GIN,
460    GIST,
461    GLOBAL,
462    GRANT,
463    GRANTED,
464    GRANTS,
465    GRAPHVIZ,
466    GROUP,
467    GROUPING,
468    GROUPS,
469    GZIP,
470    HASH,
471    HASHES,
472    HAVING,
473    HEADER,
474    HEAP,
475    HIGH_PRIORITY,
476    HISTORY,
477    HIVEVAR,
478    HOLD,
479    HOSTS,
480    HOUR,
481    HOURS,
482    HUGEINT,
483    IAM_ROLE,
484    ICEBERG,
485    ID,
486    IDENTIFIED,
487    IDENTITY,
488    IDENTITY_INSERT,
489    IF,
490    IGNORE,
491    IGNOREHEADER,
492    ILIKE,
493    IMMEDIATE,
494    IMMUTABLE,
495    IMPORT,
496    IMPORTED,
497    IN,
498    INCLUDE,
499    INCLUDE_NULL_VALUES,
500    INCLUDING,
501    INCREMENT,
502    INCREMENTAL,
503    INDEX,
504    INDICATOR,
505    INHERIT,
506    INHERITS,
507    INITIALIZE,
508    INITIALLY,
509    INNER,
510    INOUT,
511    INPATH,
512    INPLACE,
513    INPUT,
514    INPUTFORMAT,
515    INSENSITIVE,
516    INSERT,
517    INSERT_METHOD,
518    INSTALL,
519    INSTANT,
520    INSTEAD,
521    INT,
522    INT128,
523    INT16,
524    INT2,
525    INT256,
526    INT32,
527    INT4,
528    INT64,
529    INT8,
530    INTEGER,
531    INTEGRATION,
532    INTERNALLENGTH,
533    INTERPOLATE,
534    INTERSECT,
535    INTERSECTION,
536    INTERVAL,
537    INTO,
538    INVISIBLE,
539    INVOKER,
540    IO,
541    IS,
542    ISODOW,
543    ISOLATION,
544    ISOWEEK,
545    ISOYEAR,
546    ITEMS,
547    JAR,
548    JOIN,
549    JSON,
550    JSONB,
551    JSONFILE,
552    JSON_TABLE,
553    JULIAN,
554    KEY,
555    KEYS,
556    KEY_BLOCK_SIZE,
557    KILL,
558    LAG,
559    LAMBDA,
560    LANGUAGE,
561    LARGE,
562    LAST,
563    LAST_VALUE,
564    LATERAL,
565    LEAD,
566    LEADING,
567    LEAKPROOF,
568    LEAST,
569    LEFT,
570    LEFTARG,
571    LEVEL,
572    LIKE,
573    LIKE_REGEX,
574    LIMIT,
575    LINE,
576    LINES,
577    LIST,
578    LISTEN,
579    LISTING,
580    LN,
581    LOAD,
582    LOCAL,
583    LOCALTIME,
584    LOCALTIMESTAMP,
585    LOCATION,
586    LOCK,
587    LOCKED,
588    LOG,
589    LOGIN,
590    LOGS,
591    LONG,
592    LONGBLOB,
593    LONGTEXT,
594    LOWCARDINALITY,
595    LOWER,
596    LOW_PRIORITY,
597    LS,
598    LSEG,
599    MACRO,
600    MAIN,
601    MANAGE,
602    MANAGED,
603    MANAGEDLOCATION,
604    MANIFEST,
605    MAP,
606    MASKING,
607    MATCH,
608    MATCHED,
609    MATCHES,
610    MATCH_CONDITION,
611    MATCH_RECOGNIZE,
612    MATERIALIZE,
613    MATERIALIZED,
614    MAX,
615    MAXFILESIZE,
616    MAXVALUE,
617    MAX_DATA_EXTENSION_TIME_IN_DAYS,
618    MAX_ROWS,
619    MB,
620    MEASURES,
621    MEDIUMBLOB,
622    MEDIUMINT,
623    MEDIUMTEXT,
624    MEMBER,
625    MERGE,
626    MERGES,
627    MESSAGE,
628    METADATA,
629    METHOD,
630    METRIC,
631    METRICS,
632    MFA,
633    MICROSECOND,
634    MICROSECONDS,
635    MILLENIUM,
636    MILLENNIUM,
637    MILLISECOND,
638    MILLISECONDS,
639    MIN,
640    MINUS,
641    MINUTE,
642    MINUTES,
643    MINVALUE,
644    MIN_ROWS,
645    MOD,
646    MODE,
647    MODIFIES,
648    MODIFY,
649    MODULE,
650    MODULUS,
651    MONITOR,
652    MONTH,
653    MONTHS,
654    MSCK,
655    MULTIRANGE_TYPE_NAME,
656    MULTISET,
657    MUTATION,
658    NAME,
659    NAMES,
660    NANOSECOND,
661    NANOSECONDS,
662    NATIONAL,
663    NATURAL,
664    NCHAR,
665    NCLOB,
666    NEGATOR,
667    NEST,
668    NESTED,
669    NETWORK,
670    NEW,
671    NEXT,
672    NFC,
673    NFD,
674    NFKC,
675    NFKD,
676    NO,
677    NOBYPASSRLS,
678    NOCOMPRESS,
679    NOCREATEDB,
680    NOCREATEROLE,
681    NOCYCLE,
682    NOINHERIT,
683    NOLOGIN,
684    NONE,
685    NOORDER,
686    NOREPLICATION,
687    NORMALIZE,
688    NORMALIZED,
689    NOSCAN,
690    NOSUPERUSER,
691    NOT,
692    NOTHING,
693    NOTIFY,
694    NOTNULL,
695    NOWAIT,
696    NO_WRITE_TO_BINLOG,
697    NTH_VALUE,
698    NTILE,
699    NULL,
700    NULLABLE,
701    NULLIF,
702    NULLS,
703    NUMBER,
704    NUMERIC,
705    NVARCHAR,
706    OBJECT,
707    OBJECTS,
708    OCCURRENCES_REGEX,
709    OCTETS,
710    OCTET_LENGTH,
711    OF,
712    OFF,
713    OFFSET,
714    OFFSETS,
715    OLD,
716    OMIT,
717    ON,
718    ONE,
719    ONLY,
720    ON_CREATE,
721    ON_SCHEDULE,
722    OPEN,
723    OPENJSON,
724    OPERATE,
725    OPERATOR,
726    OPTIMIZATION,
727    OPTIMIZE,
728    OPTIMIZED,
729    OPTIMIZER_COSTS,
730    OPTION,
731    OPTIONS,
732    OR,
733    ORC,
734    ORDER,
735    ORDINALITY,
736    ORGANIZATION,
737    OTHER,
738    OTP,
739    OUT,
740    OUTER,
741    OUTPUT,
742    OUTPUTFORMAT,
743    OVER,
744    OVERFLOW,
745    OVERLAPS,
746    OVERLAY,
747    OVERRIDE,
748    OVERWRITE,
749    OWNED,
750    OWNER,
751    OWNERSHIP,
752    PACKAGE,
753    PACKAGES,
754    PACK_KEYS,
755    PARALLEL,
756    PARAMETER,
757    PARQUET,
758    PART,
759    PARTIAL,
760    PARTITION,
761    PARTITIONED,
762    PARTITIONS,
763    PASSEDBYVALUE,
764    PASSING,
765    PASSKEY,
766    PASSWORD,
767    PAST,
768    PATH,
769    PATTERN,
770    PCTFREE,
771    PER,
772    PERCENT,
773    PERCENTILE_CONT,
774    PERCENTILE_DISC,
775    PERCENT_RANK,
776    PERIOD,
777    PERMISSIVE,
778    PERSISTENT,
779    PIVOT,
780    PLACING,
781    PLAIN,
782    PLAN,
783    PLANS,
784    POINT,
785    POLICY,
786    POLYGON,
787    POOL,
788    PORTION,
789    POSITION,
790    POSITION_REGEX,
791    POWER,
792    PRAGMA,
793    PRECEDES,
794    PRECEDING,
795    PRECISION,
796    PREFERRED,
797    PREPARE,
798    PRESERVE,
799    PRESET,
800    PREWHERE,
801    PRIMARY,
802    PRINT,
803    PRIOR,
804    PRIVILEGES,
805    PROCEDURE,
806    PROFILE,
807    PROGRAM,
808    PROJECTION,
809    PUBLIC,
810    PURCHASE,
811    PURGE,
812    QUALIFY,
813    QUARTER,
814    QUERIES,
815    QUERY,
816    QUOTE,
817    RAISE,
818    RAISERROR,
819    RANGE,
820    RANK,
821    RAW,
822    RCFILE,
823    READ,
824    READS,
825    READ_ONLY,
826    REAL,
827    RECEIVE,
828    RECLUSTER,
829    RECURSIVE,
830    REF,
831    REFERENCES,
832    REFERENCING,
833    REFRESH,
834    REFRESH_MODE,
835    REGCLASS,
836    REGEXP,
837    REGION,
838    REGR_AVGX,
839    REGR_AVGY,
840    REGR_COUNT,
841    REGR_INTERCEPT,
842    REGR_R2,
843    REGR_SLOPE,
844    REGR_SXX,
845    REGR_SXY,
846    REGR_SYY,
847    REINDEX,
848    RELATIVE,
849    RELAY,
850    RELEASE,
851    RELEASES,
852    REMAINDER,
853    REMOTE,
854    REMOVE,
855    REMOVEQUOTES,
856    RENAME,
857    REORG,
858    REPAIR,
859    REPEATABLE,
860    REPLACE,
861    REPLACE_INVALID_CHARACTERS,
862    REPLICA,
863    REPLICATE,
864    REPLICATION,
865    REQUIRE,
866    RESET,
867    RESOLVE,
868    RESOURCE,
869    RESPECT,
870    RESTART,
871    RESTRICT,
872    RESTRICTED,
873    RESTRICTIONS,
874    RESTRICTIVE,
875    RESULT,
876    RESULTSET,
877    RESUME,
878    RETAIN,
879    RETURN,
880    RETURNING,
881    RETURNS,
882    REVOKE,
883    RIGHT,
884    RIGHTARG,
885    RLIKE,
886    RM,
887    ROLE,
888    ROLES,
889    ROLLBACK,
890    ROLLUP,
891    ROOT,
892    ROW,
893    ROWGROUPSIZE,
894    ROWID,
895    ROWS,
896    ROW_FORMAT,
897    ROW_NUMBER,
898    RULE,
899    RUN,
900    SAFE,
901    SAFE_CAST,
902    SAMPLE,
903    SAVEPOINT,
904    SCHEMA,
905    SCHEMAS,
906    SCOPE,
907    SCROLL,
908    SEARCH,
909    SECOND,
910    SECONDARY,
911    SECONDARY_ENGINE_ATTRIBUTE,
912    SECONDS,
913    SECRET,
914    SECURE,
915    SECURITY,
916    SEED,
917    SELECT,
918    SEMANTIC_VIEW,
919    SEMI,
920    SEND,
921    SENSITIVE,
922    SEPARATOR,
923    SEQUENCE,
924    SEQUENCEFILE,
925    SEQUENCES,
926    SERDE,
927    SERDEPROPERTIES,
928    SERIALIZABLE,
929    SERVER,
930    SERVICE,
931    SESSION,
932    SESSION_USER,
933    SET,
934    SETERROR,
935    SETS,
936    SETTINGS,
937    SHARE,
938    SHARED,
939    SHARING,
940    SHOW,
941    SIGNED,
942    SIMILAR,
943    SIMPLE,
944    SIZE,
945    SKIP,
946    SLOW,
947    SMALLINT,
948    SNAPSHOT,
949    SOME,
950    SORT,
951    SORTED,
952    SOURCE,
953    SPATIAL,
954    SPECIFIC,
955    SPECIFICTYPE,
956    SPGIST,
957    SQL,
958    SQLEXCEPTION,
959    SQLSTATE,
960    SQLWARNING,
961    SQL_BIG_RESULT,
962    SQL_BUFFER_RESULT,
963    SQL_CALC_FOUND_ROWS,
964    SQL_NO_CACHE,
965    SQL_SMALL_RESULT,
966    SQRT,
967    SRID,
968    STABLE,
969    STAGE,
970    START,
971    STARTS,
972    STATEMENT,
973    STATIC,
974    STATISTICS,
975    STATS_AUTO_RECALC,
976    STATS_PERSISTENT,
977    STATS_SAMPLE_PAGES,
978    STATUPDATE,
979    STATUS,
980    STDDEV_POP,
981    STDDEV_SAMP,
982    STDIN,
983    STDOUT,
984    STEP,
985    STORAGE,
986    STORAGE_INTEGRATION,
987    STORAGE_SERIALIZATION_POLICY,
988    STORED,
989    STRAIGHT_JOIN,
990    STREAM,
991    STRICT,
992    STRING,
993    STRUCT,
994    SUBMULTISET,
995    SUBSCRIPT,
996    SUBSTR,
997    SUBSTRING,
998    SUBSTRING_REGEX,
999    SUBTYPE,
1000    SUBTYPE_DIFF,
1001    SUBTYPE_OPCLASS,
1002    SUCCEEDS,
1003    SUM,
1004    SUPER,
1005    SUPERUSER,
1006    SUPPORT,
1007    SUSPEND,
1008    SWAP,
1009    SYMMETRIC,
1010    SYNC,
1011    SYNONYM,
1012    SYSTEM,
1013    SYSTEM_TIME,
1014    SYSTEM_USER,
1015    TABLE,
1016    TABLES,
1017    TABLESAMPLE,
1018    TABLESPACE,
1019    TAG,
1020    TARGET,
1021    TARGET_LAG,
1022    TASK,
1023    TBLPROPERTIES,
1024    TEMP,
1025    TEMPORARY,
1026    TEMPTABLE,
1027    TERMINATED,
1028    TERSE,
1029    TEXT,
1030    TEXTFILE,
1031    THEN,
1032    TIES,
1033    TIME,
1034    TIMEFORMAT,
1035    TIMESTAMP,
1036    TIMESTAMPTZ,
1037    TIMESTAMP_NTZ,
1038    TIMETZ,
1039    TIMEZONE,
1040    TIMEZONE_ABBR,
1041    TIMEZONE_HOUR,
1042    TIMEZONE_MINUTE,
1043    TIMEZONE_REGION,
1044    TINYBLOB,
1045    TINYINT,
1046    TINYTEXT,
1047    TO,
1048    TOP,
1049    TOTALS,
1050    TOTP,
1051    TRACE,
1052    TRAILING,
1053    TRANSACTION,
1054    TRANSIENT,
1055    TRANSLATE,
1056    TRANSLATE_REGEX,
1057    TRANSLATION,
1058    TREAT,
1059    TREE,
1060    TRIGGER,
1061    TRIM,
1062    TRIM_ARRAY,
1063    TRUE,
1064    TRUNCATE,
1065    TRUNCATECOLUMNS,
1066    TRY,
1067    TRY_CAST,
1068    TRY_CONVERT,
1069    TSQUERY,
1070    TSVECTOR,
1071    TUPLE,
1072    TYPE,
1073    TYPMOD_IN,
1074    TYPMOD_OUT,
1075    UBIGINT,
1076    UESCAPE,
1077    UHUGEINT,
1078    UINT128,
1079    UINT16,
1080    UINT256,
1081    UINT32,
1082    UINT64,
1083    UINT8,
1084    UNBOUNDED,
1085    UNCACHE,
1086    UNCOMMITTED,
1087    UNDEFINED,
1088    UNFREEZE,
1089    UNION,
1090    UNIQUE,
1091    UNKNOWN,
1092    UNLISTEN,
1093    UNLOAD,
1094    UNLOCK,
1095    UNLOGGED,
1096    UNMATCHED,
1097    UNNEST,
1098    UNPIVOT,
1099    UNSAFE,
1100    UNSET,
1101    UNSIGNED,
1102    UNTIL,
1103    UPDATE,
1104    UPPER,
1105    URL,
1106    USAGE,
1107    USE,
1108    USER,
1109    USER_RESOURCES,
1110    USING,
1111    USMALLINT,
1112    UTINYINT,
1113    UUID,
1114    VACUUM,
1115    VALID,
1116    VALIDATE,
1117    VALIDATION_MODE,
1118    VALUE,
1119    VALUES,
1120    VALUE_OF,
1121    VARBINARY,
1122    VARBIT,
1123    VARCHAR,
1124    VARCHAR2,
1125    VARIABLE,
1126    VARIABLES,
1127    VARYING,
1128    VAR_POP,
1129    VAR_SAMP,
1130    VERBOSE,
1131    VERSION,
1132    VERSIONING,
1133    VERSIONS,
1134    VIEW,
1135    VIEWS,
1136    VIRTUAL,
1137    VOLATILE,
1138    VOLUME,
1139    WAREHOUSE,
1140    WAREHOUSES,
1141    WEEK,
1142    WEEKS,
1143    WHEN,
1144    WHENEVER,
1145    WHERE,
1146    WHILE,
1147    WIDTH_BUCKET,
1148    WINDOW,
1149    WITH,
1150    WITHIN,
1151    WITHOUT,
1152    WITHOUT_ARRAY_WRAPPER,
1153    WORK,
1154    WORKLOAD_IDENTITY,
1155    WRAPPER,
1156    WRITE,
1157    XML,
1158    XMLNAMESPACES,
1159    XMLTABLE,
1160    XOR,
1161    YEAR,
1162    YEARS,
1163    ZONE,
1164    ZORDER,
1165    ZSTD
1166);
1167
1168/// These keywords can't be used as a table alias, so that `FROM table_name alias`
1169/// can be parsed unambiguously without looking ahead.
1170pub const RESERVED_FOR_TABLE_ALIAS: &[Keyword] = &[
1171    // Reserved as both a table and a column alias:
1172    Keyword::WITH,
1173    Keyword::EXPLAIN,
1174    Keyword::ANALYZE,
1175    Keyword::SELECT,
1176    Keyword::WHERE,
1177    Keyword::GROUP,
1178    Keyword::SORT,
1179    Keyword::HAVING,
1180    Keyword::ORDER,
1181    Keyword::PIVOT,
1182    Keyword::UNPIVOT,
1183    Keyword::TOP,
1184    Keyword::LATERAL,
1185    Keyword::VIEW,
1186    Keyword::LIMIT,
1187    Keyword::OFFSET,
1188    Keyword::FETCH,
1189    Keyword::UNION,
1190    Keyword::EXCEPT,
1191    Keyword::INTERSECT,
1192    Keyword::MINUS,
1193    // Reserved only as a table alias in the `FROM`/`JOIN` clauses:
1194    Keyword::ON,
1195    Keyword::JOIN,
1196    Keyword::INNER,
1197    Keyword::CROSS,
1198    Keyword::FULL,
1199    Keyword::LEFT,
1200    Keyword::RIGHT,
1201    Keyword::NATURAL,
1202    Keyword::USING,
1203    Keyword::CLUSTER,
1204    Keyword::DISTRIBUTE,
1205    Keyword::GLOBAL,
1206    Keyword::ANTI,
1207    Keyword::SEMI,
1208    Keyword::RETURNING,
1209    Keyword::ASOF,
1210    Keyword::MATCH_CONDITION,
1211    // for MSSQL-specific OUTER APPLY (seems reserved in most dialects)
1212    Keyword::OUTER,
1213    Keyword::SET,
1214    Keyword::QUALIFY,
1215    Keyword::WINDOW,
1216    Keyword::END,
1217    Keyword::FOR,
1218    // for MYSQL PARTITION SELECTION
1219    Keyword::PARTITION,
1220    // for Clickhouse PREWHERE
1221    Keyword::PREWHERE,
1222    Keyword::SETTINGS,
1223    Keyword::FORMAT,
1224    // for Snowflake START WITH .. CONNECT BY
1225    Keyword::START,
1226    Keyword::CONNECT,
1227    // Reserved for snowflake MATCH_RECOGNIZE
1228    Keyword::MATCH_RECOGNIZE,
1229    // Reserved for Snowflake table sample
1230    Keyword::SAMPLE,
1231    Keyword::TABLESAMPLE,
1232    Keyword::FROM,
1233    Keyword::OPEN,
1234];
1235
1236/// Can't be used as a column alias, so that `SELECT <expr> alias`
1237/// can be parsed unambiguously without looking ahead.
1238pub const RESERVED_FOR_COLUMN_ALIAS: &[Keyword] = &[
1239    // Reserved as both a table and a column alias:
1240    Keyword::WITH,
1241    Keyword::EXPLAIN,
1242    Keyword::ANALYZE,
1243    Keyword::SELECT,
1244    Keyword::WHERE,
1245    Keyword::GROUP,
1246    Keyword::SORT,
1247    Keyword::HAVING,
1248    Keyword::ORDER,
1249    Keyword::TOP,
1250    Keyword::LATERAL,
1251    Keyword::VIEW,
1252    Keyword::LIMIT,
1253    Keyword::OFFSET,
1254    Keyword::FETCH,
1255    Keyword::UNION,
1256    Keyword::EXCEPT,
1257    Keyword::EXCLUDE,
1258    Keyword::INTERSECT,
1259    Keyword::MINUS,
1260    Keyword::CLUSTER,
1261    Keyword::DISTRIBUTE,
1262    Keyword::RETURNING,
1263    // Reserved only as a column alias in the `SELECT` clause
1264    Keyword::FROM,
1265    Keyword::INTO,
1266    Keyword::END,
1267];
1268
1269/// Global list of reserved keywords allowed after FROM.
1270/// Parser should call Dialect::get_reserved_keyword_after_from
1271/// to allow for each dialect to customize the list.
1272pub const RESERVED_FOR_TABLE_FACTOR: &[Keyword] = &[
1273    Keyword::INTO,
1274    Keyword::LIMIT,
1275    Keyword::HAVING,
1276    Keyword::WHERE,
1277];
1278
1279/// Global list of reserved keywords that cannot be parsed as identifiers
1280/// without special handling like quoting. Parser should call `Dialect::is_reserved_for_identifier`
1281/// to allow for each dialect to customize the list.
1282pub const RESERVED_FOR_IDENTIFIER: &[Keyword] = &[
1283    Keyword::EXISTS,
1284    Keyword::INTERVAL,
1285    Keyword::STRUCT,
1286    Keyword::TRIM,
1287];