diff --git a/crates/squawk_parser/src/syntax_kind.rs b/crates/squawk_parser/src/syntax_kind.rs index fdcf4243..cdb15b79 100644 --- a/crates/squawk_parser/src/syntax_kind.rs +++ b/crates/squawk_parser/src/syntax_kind.rs @@ -340,6 +340,8 @@ pub enum SyntaxKind { ENCRYPTED_KW, /// `end` END_KW, + /// `enforced` + ENFORCED_KW, /// `enum` ENUM_KW, /// `error` @@ -648,6 +650,8 @@ pub enum SyntaxKind { NUMERIC_KW, /// `object` OBJECT_KW, + /// `objects` + OBJECTS_KW, /// `of` OF_KW, /// `off` @@ -1014,6 +1018,8 @@ pub enum SyntaxKind { VIEW_KW, /// `views` VIEWS_KW, + /// `virtual` + VIRTUAL_KW, /// `volatile` VOLATILE_KW, /// `when` @@ -1775,6 +1781,8 @@ impl SyntaxKind { SyntaxKind::ENCRYPTED_KW } else if ident.eq_ignore_ascii_case("end") { SyntaxKind::END_KW + } else if ident.eq_ignore_ascii_case("enforced") { + SyntaxKind::ENFORCED_KW } else if ident.eq_ignore_ascii_case("enum") { SyntaxKind::ENUM_KW } else if ident.eq_ignore_ascii_case("error") { @@ -2083,6 +2091,8 @@ impl SyntaxKind { SyntaxKind::NUMERIC_KW } else if ident.eq_ignore_ascii_case("object") { SyntaxKind::OBJECT_KW + } else if ident.eq_ignore_ascii_case("objects") { + SyntaxKind::OBJECTS_KW } else if ident.eq_ignore_ascii_case("of") { SyntaxKind::OF_KW } else if ident.eq_ignore_ascii_case("off") { @@ -2449,6 +2459,8 @@ impl SyntaxKind { SyntaxKind::VIEW_KW } else if ident.eq_ignore_ascii_case("views") { SyntaxKind::VIEWS_KW + } else if ident.eq_ignore_ascii_case("virtual") { + SyntaxKind::VIRTUAL_KW } else if ident.eq_ignore_ascii_case("volatile") { SyntaxKind::VOLATILE_KW } else if ident.eq_ignore_ascii_case("when") { @@ -2602,6 +2614,7 @@ pub(crate) const COLUMN_OR_TABLE_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::ENABLE_KW, SyntaxKind::ENCODING_KW, SyntaxKind::ENCRYPTED_KW, + SyntaxKind::ENFORCED_KW, SyntaxKind::ENUM_KW, SyntaxKind::ERROR_KW, SyntaxKind::ESCAPE_KW, @@ -2725,6 +2738,7 @@ pub(crate) const COLUMN_OR_TABLE_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::NULLS_KW, SyntaxKind::NUMERIC_KW, SyntaxKind::OBJECT_KW, + SyntaxKind::OBJECTS_KW, SyntaxKind::OF_KW, SyntaxKind::OFF_KW, SyntaxKind::OIDS_KW, @@ -2878,6 +2892,7 @@ pub(crate) const COLUMN_OR_TABLE_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::VERSION_KW, SyntaxKind::VIEW_KW, SyntaxKind::VIEWS_KW, + SyntaxKind::VIRTUAL_KW, SyntaxKind::VOLATILE_KW, SyntaxKind::WHITESPACE_KW, SyntaxKind::WITHIN_KW, @@ -3001,6 +3016,7 @@ pub(crate) const TYPE_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::ENABLE_KW, SyntaxKind::ENCODING_KW, SyntaxKind::ENCRYPTED_KW, + SyntaxKind::ENFORCED_KW, SyntaxKind::ENUM_KW, SyntaxKind::ERROR_KW, SyntaxKind::ESCAPE_KW, @@ -3135,6 +3151,7 @@ pub(crate) const TYPE_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::NULLS_KW, SyntaxKind::NUMERIC_KW, SyntaxKind::OBJECT_KW, + SyntaxKind::OBJECTS_KW, SyntaxKind::OF_KW, SyntaxKind::OFF_KW, SyntaxKind::OIDS_KW, @@ -3294,6 +3311,7 @@ pub(crate) const TYPE_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::VERSION_KW, SyntaxKind::VIEW_KW, SyntaxKind::VIEWS_KW, + SyntaxKind::VIRTUAL_KW, SyntaxKind::VOLATILE_KW, SyntaxKind::WHITESPACE_KW, SyntaxKind::WITHIN_KW, @@ -3447,6 +3465,7 @@ pub(crate) const ALL_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::ENCODING_KW, SyntaxKind::ENCRYPTED_KW, SyntaxKind::END_KW, + SyntaxKind::ENFORCED_KW, SyntaxKind::ENUM_KW, SyntaxKind::ERROR_KW, SyntaxKind::ESCAPE_KW, @@ -3601,6 +3620,7 @@ pub(crate) const ALL_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::NULLS_KW, SyntaxKind::NUMERIC_KW, SyntaxKind::OBJECT_KW, + SyntaxKind::OBJECTS_KW, SyntaxKind::OF_KW, SyntaxKind::OFF_KW, SyntaxKind::OFFSET_KW, @@ -3784,6 +3804,7 @@ pub(crate) const ALL_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::VERSION_KW, SyntaxKind::VIEW_KW, SyntaxKind::VIEWS_KW, + SyntaxKind::VIRTUAL_KW, SyntaxKind::VOLATILE_KW, SyntaxKind::WHEN_KW, SyntaxKind::WHERE_KW, @@ -3935,6 +3956,7 @@ pub(crate) const BARE_LABEL_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::ENCODING_KW, SyntaxKind::ENCRYPTED_KW, SyntaxKind::END_KW, + SyntaxKind::ENFORCED_KW, SyntaxKind::ENUM_KW, SyntaxKind::ERROR_KW, SyntaxKind::ESCAPE_KW, @@ -4073,6 +4095,7 @@ pub(crate) const BARE_LABEL_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::NULLS_KW, SyntaxKind::NUMERIC_KW, SyntaxKind::OBJECT_KW, + SyntaxKind::OBJECTS_KW, SyntaxKind::OF_KW, SyntaxKind::OFF_KW, SyntaxKind::OIDS_KW, @@ -4245,6 +4268,7 @@ pub(crate) const BARE_LABEL_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::VERSION_KW, SyntaxKind::VIEW_KW, SyntaxKind::VIEWS_KW, + SyntaxKind::VIRTUAL_KW, SyntaxKind::VOLATILE_KW, SyntaxKind::WHEN_KW, SyntaxKind::WHITESPACE_KW, @@ -4351,6 +4375,7 @@ pub(crate) const UNRESERVED_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::ENABLE_KW, SyntaxKind::ENCODING_KW, SyntaxKind::ENCRYPTED_KW, + SyntaxKind::ENFORCED_KW, SyntaxKind::ENUM_KW, SyntaxKind::ERROR_KW, SyntaxKind::ESCAPE_KW, @@ -4446,6 +4471,7 @@ pub(crate) const UNRESERVED_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::NOWAIT_KW, SyntaxKind::NULLS_KW, SyntaxKind::OBJECT_KW, + SyntaxKind::OBJECTS_KW, SyntaxKind::OF_KW, SyntaxKind::OFF_KW, SyntaxKind::OIDS_KW, @@ -4584,6 +4610,7 @@ pub(crate) const UNRESERVED_KEYWORDS: TokenSet = TokenSet::new(&[ SyntaxKind::VERSION_KW, SyntaxKind::VIEW_KW, SyntaxKind::VIEWS_KW, + SyntaxKind::VIRTUAL_KW, SyntaxKind::VOLATILE_KW, SyntaxKind::WHITESPACE_KW, SyntaxKind::WITHIN_KW, diff --git a/crates/squawk_parser/tests/snapshots/tests__listen_ok.snap b/crates/squawk_parser/tests/snapshots/tests__listen_ok.snap index 0727eb84..c39dc446 100644 --- a/crates/squawk_parser/tests/snapshots/tests__listen_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__listen_ok.snap @@ -1,7 +1,6 @@ --- source: crates/squawk_parser/tests/tests.rs input_file: crates/squawk_parser/tests/data/ok/listen.sql -snapshot_kind: text --- SOURCE_FILE COMMENT "-- pg_docs" @@ -17,6 +16,6 @@ SOURCE_FILE LISTEN_KW "LISTEN" WHITESPACE " " NAME - IDENT "virtual" + VIRTUAL_KW "virtual" SEMICOLON ";" WHITESPACE "\n\n" diff --git a/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap b/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap index 5b226531..d3f6b1a8 100644 --- a/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__notify_ok.snap @@ -1,7 +1,6 @@ --- source: crates/squawk_parser/tests/tests.rs input_file: crates/squawk_parser/tests/data/ok/notify.sql -snapshot_kind: text --- SOURCE_FILE COMMENT "-- notify_stmt" @@ -17,7 +16,7 @@ SOURCE_FILE NOTIFY_KW "NOTIFY" WHITESPACE " " NAME - IDENT "virtual" + VIRTUAL_KW "virtual" COMMA "," WHITESPACE " " LITERAL diff --git a/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap b/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap index 8b93ad5c..627cf364 100644 --- a/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap +++ b/crates/squawk_parser/tests/snapshots/tests__unlisten_ok.snap @@ -1,7 +1,6 @@ --- source: crates/squawk_parser/tests/tests.rs input_file: crates/squawk_parser/tests/data/ok/unlisten.sql -snapshot_kind: text --- SOURCE_FILE COMMENT "-- pg_docs" @@ -10,7 +9,7 @@ SOURCE_FILE UNLISTEN_KW "unlisten" WHITESPACE " " NAME - IDENT "virtual" + VIRTUAL_KW "virtual" SEMICOLON ";" WHITESPACE "\n\n" UNLISTEN_STMT diff --git a/crates/xtask/src/generate_keywords.rs b/crates/xtask/src/generate_keywords.rs index 964272ed..032b1e22 100644 --- a/crates/xtask/src/generate_keywords.rs +++ b/crates/xtask/src/generate_keywords.rs @@ -81,9 +81,9 @@ pub(crate) fn generate_keywords() -> Result<()> { } fn update_syntax_kind(keywords: &HashMap) -> Result<()> { - let path = "crates/parser/src/syntax_kind.rs"; + let path = "crates/squawk_parser/src/syntax_kind.rs"; - let data = std::fs::read_to_string(path)?; + let data = std::fs::read_to_string(path).context("opening syntax_kind.rs")?; let mut keys: Vec<_> = keywords.keys().collect(); keys.sort(); diff --git a/postgres/kwlist.h b/postgres/kwlist.h index 9516e2ed..577b3b45 100644 --- a/postgres/kwlist.h +++ b/postgres/kwlist.h @@ -1,7 +1,7 @@ // synced from: -// commit: e032e4c7ddd0e1f7865b246ec18944365d4f8614 -// committed at: 2024-11-30T17:42:19Z -// file: https://github.com/postgres/postgres/blob/e032e4c7ddd0e1f7865b246ec18944365d4f8614/src/include/parser/kwlist.h +// commit: cb1456423d3925f9c70a488b58f03f186561f00f +// committed at: 2025-05-22T21:14:54Z +// file: https://github.com/postgres/postgres/blob/cb1456423d3925f9c70a488b58f03f186561f00f/src/include/parser/kwlist.h // // update via: // cargo xtask sync-kwlist @@ -15,7 +15,7 @@ * by the PG_KEYWORD macro, which is not defined in this file; it can * be defined by the caller for special purposes. * - * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION @@ -161,6 +161,7 @@ PG_KEYWORD("enable", ENABLE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("encoding", ENCODING, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("encrypted", ENCRYPTED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("end", END_P, RESERVED_KEYWORD, BARE_LABEL) +PG_KEYWORD("enforced", ENFORCED, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("enum", ENUM_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("error", ERROR_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("escape", ESCAPE, UNRESERVED_KEYWORD, BARE_LABEL) @@ -315,6 +316,7 @@ PG_KEYWORD("nullif", NULLIF, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("nulls", NULLS_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("numeric", NUMERIC, COL_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("object", OBJECT_P, UNRESERVED_KEYWORD, BARE_LABEL) +PG_KEYWORD("objects", OBJECTS_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("of", OF, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("off", OFF, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("offset", OFFSET, RESERVED_KEYWORD, AS_LABEL) @@ -498,6 +500,7 @@ PG_KEYWORD("verbose", VERBOSE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) PG_KEYWORD("version", VERSION_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("view", VIEW, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("views", VIEWS, UNRESERVED_KEYWORD, BARE_LABEL) +PG_KEYWORD("virtual", VIRTUAL, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("volatile", VOLATILE, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("when", WHEN, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("where", WHERE, RESERVED_KEYWORD, AS_LABEL)