mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-01 03:37:21 +00:00
Merge pull request #63 from nickolay/pr/refactor-keywords
Use smarter macros to avoid duplication in keywords.rs
This commit is contained in:
commit
908082d26f
1 changed files with 25 additions and 358 deletions
|
@ -12,365 +12,32 @@
|
||||||
/// 3) a `RESERVED_FOR_TABLE_ALIAS` array with keywords reserved in a
|
/// 3) a `RESERVED_FOR_TABLE_ALIAS` array with keywords reserved in a
|
||||||
/// "table alias" context.
|
/// "table alias" context.
|
||||||
|
|
||||||
macro_rules! keyword {
|
/// Defines a string constant for a single keyword: `kw_def!(SELECT);`
|
||||||
($($ident:ident),*) => {
|
/// expands to `pub const SELECT = "SELECT";`
|
||||||
$(pub const $ident: &'static str = stringify!($ident);)*
|
macro_rules! kw_def {
|
||||||
|
($ident:ident = $string_keyword:expr) => {
|
||||||
|
pub const $ident: &'static str = $string_keyword;
|
||||||
|
};
|
||||||
|
($ident:ident) => {
|
||||||
|
kw_def!($ident = stringify!($ident));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Expands to a list of `kw_def!()` invocations for each keyword
|
||||||
|
/// and defines an ALL_KEYWORDS array of the defined constants.
|
||||||
|
macro_rules! define_keywords {
|
||||||
|
($(
|
||||||
|
$ident:ident $(= $string_keyword:expr)?
|
||||||
|
),*) => {
|
||||||
|
$(kw_def!($ident $(= $string_keyword)?);)*
|
||||||
|
|
||||||
|
pub const ALL_KEYWORDS: &[&str] = &[
|
||||||
|
$($ident),*
|
||||||
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyword!(
|
define_keywords!(
|
||||||
ABS,
|
|
||||||
ADD,
|
|
||||||
ASC,
|
|
||||||
ALL,
|
|
||||||
ALLOCATE,
|
|
||||||
ALTER,
|
|
||||||
AND,
|
|
||||||
ANY,
|
|
||||||
ARE,
|
|
||||||
ARRAY,
|
|
||||||
ARRAY_AGG,
|
|
||||||
ARRAY_MAX_CARDINALITY,
|
|
||||||
AS,
|
|
||||||
ASENSITIVE,
|
|
||||||
ASYMMETRIC,
|
|
||||||
AT,
|
|
||||||
ATOMIC,
|
|
||||||
AUTHORIZATION,
|
|
||||||
AVG,
|
|
||||||
BEGIN,
|
|
||||||
BEGIN_FRAME,
|
|
||||||
BEGIN_PARTITION,
|
|
||||||
BETWEEN,
|
|
||||||
BIGINT,
|
|
||||||
BINARY,
|
|
||||||
BLOB,
|
|
||||||
BOOLEAN,
|
|
||||||
BOTH,
|
|
||||||
BY,
|
|
||||||
BYTEA,
|
|
||||||
CALL,
|
|
||||||
CALLED,
|
|
||||||
CARDINALITY,
|
|
||||||
CASCADED,
|
|
||||||
CASE,
|
|
||||||
CAST,
|
|
||||||
CEIL,
|
|
||||||
CEILING,
|
|
||||||
CHAR,
|
|
||||||
CHAR_LENGTH,
|
|
||||||
CHARACTER,
|
|
||||||
CHARACTER_LENGTH,
|
|
||||||
CHECK,
|
|
||||||
CLOB,
|
|
||||||
CLOSE,
|
|
||||||
COALESCE,
|
|
||||||
COLLATE,
|
|
||||||
COLLECT,
|
|
||||||
COLUMN,
|
|
||||||
COMMIT,
|
|
||||||
CONDITION,
|
|
||||||
CONNECT,
|
|
||||||
CONSTRAINT,
|
|
||||||
CONTAINS,
|
|
||||||
CONVERT,
|
|
||||||
COPY,
|
|
||||||
CORR,
|
|
||||||
CORRESPONDING,
|
|
||||||
COUNT,
|
|
||||||
COVAR_POP,
|
|
||||||
COVAR_SAMP,
|
|
||||||
CREATE,
|
|
||||||
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,
|
|
||||||
DATE,
|
|
||||||
DAY,
|
|
||||||
DEALLOCATE,
|
|
||||||
DEC,
|
|
||||||
DECIMAL,
|
|
||||||
DECLARE,
|
|
||||||
DEFAULT,
|
|
||||||
DELETE,
|
|
||||||
DENSE_RANK,
|
|
||||||
DEREF,
|
|
||||||
DESC,
|
|
||||||
DESCRIBE,
|
|
||||||
DETERMINISTIC,
|
|
||||||
DISCONNECT,
|
|
||||||
DISTINCT,
|
|
||||||
DOUBLE,
|
|
||||||
DROP,
|
|
||||||
DYNAMIC,
|
|
||||||
EACH,
|
|
||||||
ELEMENT,
|
|
||||||
ELSE,
|
|
||||||
END,
|
|
||||||
END_FRAME,
|
|
||||||
END_PARTITION,
|
|
||||||
EQUALS,
|
|
||||||
ESCAPE,
|
|
||||||
EVERY,
|
|
||||||
EXCEPT,
|
|
||||||
EXEC,
|
|
||||||
EXECUTE,
|
|
||||||
EXISTS,
|
|
||||||
EXP,
|
|
||||||
EXTERNAL,
|
|
||||||
EXTRACT,
|
|
||||||
FALSE,
|
|
||||||
FETCH,
|
|
||||||
FILTER,
|
|
||||||
FIRST_VALUE,
|
|
||||||
FLOAT,
|
|
||||||
FLOOR,
|
|
||||||
FOLLOWING,
|
|
||||||
FOR,
|
|
||||||
FOREIGN,
|
|
||||||
FRAME_ROW,
|
|
||||||
FREE,
|
|
||||||
FROM,
|
|
||||||
FULL,
|
|
||||||
FUNCTION,
|
|
||||||
FUSION,
|
|
||||||
GET,
|
|
||||||
GLOBAL,
|
|
||||||
GRANT,
|
|
||||||
GROUP,
|
|
||||||
GROUPING,
|
|
||||||
GROUPS,
|
|
||||||
HAVING,
|
|
||||||
HEADER,
|
|
||||||
HOLD,
|
|
||||||
HOUR,
|
|
||||||
IDENTITY,
|
|
||||||
IN,
|
|
||||||
INDICATOR,
|
|
||||||
INNER,
|
|
||||||
INOUT,
|
|
||||||
INSENSITIVE,
|
|
||||||
INSERT,
|
|
||||||
INT,
|
|
||||||
INTEGER,
|
|
||||||
INTERSECT,
|
|
||||||
INTERSECTION,
|
|
||||||
INTERVAL,
|
|
||||||
INTO,
|
|
||||||
IS,
|
|
||||||
JOIN,
|
|
||||||
KEY,
|
|
||||||
LAG,
|
|
||||||
LANGUAGE,
|
|
||||||
LARGE,
|
|
||||||
LAST_VALUE,
|
|
||||||
LATERAL,
|
|
||||||
LEAD,
|
|
||||||
LEADING,
|
|
||||||
LEFT,
|
|
||||||
LIKE,
|
|
||||||
LIKE_REGEX,
|
|
||||||
LIMIT,
|
|
||||||
LN,
|
|
||||||
LOCAL,
|
|
||||||
LOCALTIME,
|
|
||||||
LOCALTIMESTAMP,
|
|
||||||
LOCATION,
|
|
||||||
LOWER,
|
|
||||||
MATCH,
|
|
||||||
MATERIALIZED,
|
|
||||||
MAX,
|
|
||||||
MEMBER,
|
|
||||||
MERGE,
|
|
||||||
METHOD,
|
|
||||||
MIN,
|
|
||||||
MINUTE,
|
|
||||||
MOD,
|
|
||||||
MODIFIES,
|
|
||||||
MODULE,
|
|
||||||
MONTH,
|
|
||||||
MULTISET,
|
|
||||||
NATIONAL,
|
|
||||||
NATURAL,
|
|
||||||
NCHAR,
|
|
||||||
NCLOB,
|
|
||||||
NEW,
|
|
||||||
NO,
|
|
||||||
NONE,
|
|
||||||
NORMALIZE,
|
|
||||||
NOT,
|
|
||||||
NTH_VALUE,
|
|
||||||
NTILE,
|
|
||||||
NULL,
|
|
||||||
NULLIF,
|
|
||||||
NUMERIC,
|
|
||||||
OBJECT,
|
|
||||||
OCTET_LENGTH,
|
|
||||||
OCCURRENCES_REGEX,
|
|
||||||
OF,
|
|
||||||
OFFSET,
|
|
||||||
OLD,
|
|
||||||
ON,
|
|
||||||
ONLY,
|
|
||||||
OPEN,
|
|
||||||
OR,
|
|
||||||
ORDER,
|
|
||||||
OUT,
|
|
||||||
OUTER,
|
|
||||||
OVER,
|
|
||||||
OVERLAPS,
|
|
||||||
OVERLAY,
|
|
||||||
PARAMETER,
|
|
||||||
PARTITION,
|
|
||||||
PARQUET,
|
|
||||||
PERCENT,
|
|
||||||
PERCENT_RANK,
|
|
||||||
PERCENTILE_CONT,
|
|
||||||
PERCENTILE_DISC,
|
|
||||||
PERIOD,
|
|
||||||
PORTION,
|
|
||||||
POSITION,
|
|
||||||
POSITION_REGEX,
|
|
||||||
POWER,
|
|
||||||
PRECEDES,
|
|
||||||
PRECEDING,
|
|
||||||
PRECISION,
|
|
||||||
PREPARE,
|
|
||||||
PRIMARY,
|
|
||||||
PROCEDURE,
|
|
||||||
RANGE,
|
|
||||||
RANK,
|
|
||||||
READS,
|
|
||||||
REAL,
|
|
||||||
RECURSIVE,
|
|
||||||
REF,
|
|
||||||
REFERENCES,
|
|
||||||
REFERENCING,
|
|
||||||
REGCLASS,
|
|
||||||
REGR_AVGX,
|
|
||||||
REGR_AVGY,
|
|
||||||
REGR_COUNT,
|
|
||||||
REGR_INTERCEPT,
|
|
||||||
REGR_R2,
|
|
||||||
REGR_SLOPE,
|
|
||||||
REGR_SXX,
|
|
||||||
REGR_SXY,
|
|
||||||
REGR_SYY,
|
|
||||||
RELEASE,
|
|
||||||
RESULT,
|
|
||||||
RETURN,
|
|
||||||
RETURNS,
|
|
||||||
REVOKE,
|
|
||||||
RIGHT,
|
|
||||||
ROLLBACK,
|
|
||||||
ROLLUP,
|
|
||||||
ROW,
|
|
||||||
ROW_NUMBER,
|
|
||||||
ROWS,
|
|
||||||
SAVEPOINT,
|
|
||||||
SCOPE,
|
|
||||||
SCROLL,
|
|
||||||
SEARCH,
|
|
||||||
SECOND,
|
|
||||||
SELECT,
|
|
||||||
SENSITIVE,
|
|
||||||
SESSION_USER,
|
|
||||||
SET,
|
|
||||||
SIMILAR,
|
|
||||||
SMALLINT,
|
|
||||||
SOME,
|
|
||||||
SPECIFIC,
|
|
||||||
SPECIFICTYPE,
|
|
||||||
SQL,
|
|
||||||
SQLEXCEPTION,
|
|
||||||
SQLSTATE,
|
|
||||||
SQLWARNING,
|
|
||||||
SQRT,
|
|
||||||
START,
|
|
||||||
STATIC,
|
|
||||||
STDDEV_POP,
|
|
||||||
STDDEV_SAMP,
|
|
||||||
STDIN,
|
|
||||||
STORED,
|
|
||||||
SUBMULTISET,
|
|
||||||
SUBSTRING,
|
|
||||||
SUBSTRING_REGEX,
|
|
||||||
SUCCEEDS,
|
|
||||||
SUM,
|
|
||||||
SYMMETRIC,
|
|
||||||
SYSTEM,
|
|
||||||
SYSTEM_TIME,
|
|
||||||
SYSTEM_USER,
|
|
||||||
TABLE,
|
|
||||||
TABLESAMPLE,
|
|
||||||
TEXT,
|
|
||||||
THEN,
|
|
||||||
TIME,
|
|
||||||
TIMESTAMP,
|
|
||||||
TIMEZONE_HOUR,
|
|
||||||
TIMEZONE_MINUTE,
|
|
||||||
TO,
|
|
||||||
TRAILING,
|
|
||||||
TRANSLATE,
|
|
||||||
TRANSLATE_REGEX,
|
|
||||||
TRANSLATION,
|
|
||||||
TREAT,
|
|
||||||
TRIGGER,
|
|
||||||
TRUNCATE,
|
|
||||||
TRIM,
|
|
||||||
TRIM_ARRAY,
|
|
||||||
TRUE,
|
|
||||||
UESCAPE,
|
|
||||||
UNBOUNDED,
|
|
||||||
UNION,
|
|
||||||
UNIQUE,
|
|
||||||
UNKNOWN,
|
|
||||||
UNNEST,
|
|
||||||
UPDATE,
|
|
||||||
UPPER,
|
|
||||||
USER,
|
|
||||||
USING,
|
|
||||||
UUID,
|
|
||||||
VALUE,
|
|
||||||
VALUES,
|
|
||||||
VALUE_OF,
|
|
||||||
VAR_POP,
|
|
||||||
VAR_SAMP,
|
|
||||||
VARBINARY,
|
|
||||||
VARCHAR,
|
|
||||||
VARYING,
|
|
||||||
VERSIONING,
|
|
||||||
VIEW,
|
|
||||||
WHEN,
|
|
||||||
WHENEVER,
|
|
||||||
WHERE,
|
|
||||||
WIDTH_BUCKET,
|
|
||||||
WINDOW,
|
|
||||||
WITH,
|
|
||||||
WITHIN,
|
|
||||||
WITHOUT,
|
|
||||||
YEAR,
|
|
||||||
ZONE
|
|
||||||
);
|
|
||||||
|
|
||||||
/// special case of keyword where the it is an invalid identifier
|
|
||||||
pub const END_EXEC: &str = "END-EXEC";
|
|
||||||
|
|
||||||
pub const ALL_KEYWORDS: &[&str] = &[
|
|
||||||
ABS,
|
ABS,
|
||||||
ADD,
|
ADD,
|
||||||
ASC,
|
ASC,
|
||||||
|
@ -717,8 +384,8 @@ pub const ALL_KEYWORDS: &[&str] = &[
|
||||||
WITHOUT,
|
WITHOUT,
|
||||||
YEAR,
|
YEAR,
|
||||||
ZONE,
|
ZONE,
|
||||||
END_EXEC,
|
END_EXEC = "END-EXEC"
|
||||||
];
|
);
|
||||||
|
|
||||||
/// These keywords can't be used as a table alias, so that `FROM table_name alias`
|
/// These keywords can't be used as a table alias, so that `FROM table_name alias`
|
||||||
/// can be parsed unambiguously without looking ahead.
|
/// can be parsed unambiguously without looking ahead.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue