diff --git a/fuzz/fuzz_seeds/postgres_alter_extension.sql b/fuzz/fuzz_seeds/postgres_alter_extension.sql index 867a079c74..7633f0e876 100644 --- a/fuzz/fuzz_seeds/postgres_alter_extension.sql +++ b/fuzz/fuzz_seeds/postgres_alter_extension.sql @@ -14,3 +14,4 @@ ALTER EXTENSION citext ADD FOREIGN DATA WRAPPER fdw; ALTER EXTENSION citext DROP SERVER srv; ALTER EXTENSION citext ADD COLLATION public.coll; ALTER EXTENSION citext DROP CONVERSION public.conv; +ALTER EXTENSION citext ADD TEXT SEARCH CONFIGURATION public.cfg; diff --git a/src/ast/ddl.rs b/src/ast/ddl.rs index 8c7bd76c0d..c843dfb187 100644 --- a/src/ast/ddl.rs +++ b/src/ast/ddl.rs @@ -4955,6 +4955,8 @@ pub enum AlterExtensionMember { Server(Ident), /// `TABLE object_name` Table(ObjectName), + /// `TEXT SEARCH CONFIGURATION object_name` + TextSearchConfiguration(ObjectName), /// `VIEW object_name` View(ObjectName), } @@ -5001,6 +5003,9 @@ impl fmt::Display for AlterExtensionMember { AlterExtensionMember::Sequence(name) => write!(f, "SEQUENCE {name}"), AlterExtensionMember::Server(name) => write!(f, "SERVER {name}"), AlterExtensionMember::Table(name) => write!(f, "TABLE {name}"), + AlterExtensionMember::TextSearchConfiguration(name) => { + write!(f, "TEXT SEARCH CONFIGURATION {name}") + } AlterExtensionMember::View(name) => write!(f, "VIEW {name}"), } } diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 2e019d3e85..5ce9da5362 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -12583,6 +12583,10 @@ impl<'a> Parser<'a> { Ok(AlterExtensionMember::Server(self.parse_identifier()?)) } else if self.parse_keyword(Keyword::TABLE) { Ok(AlterExtensionMember::Table(self.parse_object_name(false)?)) + } else if self.parse_keywords(&[Keyword::TEXT, Keyword::SEARCH, Keyword::CONFIGURATION]) { + Ok(AlterExtensionMember::TextSearchConfiguration( + self.parse_object_name(false)?, + )) } else if self.parse_keyword(Keyword::VIEW) { Ok(AlterExtensionMember::View(self.parse_object_name(false)?)) } else { diff --git a/tests/sqlparser_postgres.rs b/tests/sqlparser_postgres.rs index bdcc35c0b0..d32a8837ea 100644 --- a/tests/sqlparser_postgres.rs +++ b/tests/sqlparser_postgres.rs @@ -13544,6 +13544,7 @@ fn alter_extension_member_round_trip_forms(action: &str) { format!("ALTER EXTENSION ext_name {action} SERVER srv"), format!("ALTER EXTENSION ext_name {action} TABLE t"), format!("ALTER EXTENSION ext_name {action} TABLE schema.t"), + format!("ALTER EXTENSION ext_name {action} TEXT SEARCH CONFIGURATION cfg"), format!("ALTER EXTENSION ext_name {action} VIEW v"), ]; for sql in sqls { @@ -13733,6 +13734,7 @@ fn parse_alter_extension_add_member() { "SEQUENCE", "SERVER", "TABLE", + "TEXT SEARCH CONFIGURATION", "VIEW", ] { let sql = format!("ALTER EXTENSION ext_name ADD {member}");