diff --git a/fuzz/fuzz_seeds/postgres_alter_extension.sql b/fuzz/fuzz_seeds/postgres_alter_extension.sql index 82276d2e49..1b8532c1de 100644 --- a/fuzz/fuzz_seeds/postgres_alter_extension.sql +++ b/fuzz/fuzz_seeds/postgres_alter_extension.sql @@ -17,3 +17,4 @@ ALTER EXTENSION citext DROP CONVERSION public.conv; ALTER EXTENSION citext ADD TEXT SEARCH CONFIGURATION public.cfg; ALTER EXTENSION citext ADD TEXT SEARCH DICTIONARY public.dict; ALTER EXTENSION citext DROP TEXT SEARCH PARSER public.pgrm; +ALTER EXTENSION citext ADD TEXT SEARCH TEMPLATE public.tpl; diff --git a/src/ast/ddl.rs b/src/ast/ddl.rs index bbe8880b73..72f233b936 100644 --- a/src/ast/ddl.rs +++ b/src/ast/ddl.rs @@ -4961,6 +4961,8 @@ pub enum AlterExtensionMember { TextSearchDictionary(ObjectName), /// `TEXT SEARCH PARSER object_name` TextSearchParser(ObjectName), + /// `TEXT SEARCH TEMPLATE object_name` + TextSearchTemplate(ObjectName), /// `VIEW object_name` View(ObjectName), } @@ -5014,6 +5016,9 @@ impl fmt::Display for AlterExtensionMember { write!(f, "TEXT SEARCH DICTIONARY {name}") } AlterExtensionMember::TextSearchParser(name) => write!(f, "TEXT SEARCH PARSER {name}"), + AlterExtensionMember::TextSearchTemplate(name) => { + write!(f, "TEXT SEARCH TEMPLATE {name}") + } AlterExtensionMember::View(name) => write!(f, "VIEW {name}"), } } diff --git a/src/parser/mod.rs b/src/parser/mod.rs index b2f278c139..fa65140131 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -12595,6 +12595,10 @@ impl<'a> Parser<'a> { Ok(AlterExtensionMember::TextSearchParser( self.parse_object_name(false)?, )) + } else if self.parse_keywords(&[Keyword::TEXT, Keyword::SEARCH, Keyword::TEMPLATE]) { + Ok(AlterExtensionMember::TextSearchTemplate( + 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 617cec1ae4..f1a52892c1 100644 --- a/tests/sqlparser_postgres.rs +++ b/tests/sqlparser_postgres.rs @@ -13547,6 +13547,7 @@ fn alter_extension_member_round_trip_forms(action: &str) { format!("ALTER EXTENSION ext_name {action} TEXT SEARCH CONFIGURATION cfg"), format!("ALTER EXTENSION ext_name {action} TEXT SEARCH DICTIONARY dict"), format!("ALTER EXTENSION ext_name {action} TEXT SEARCH PARSER pgrm"), + format!("ALTER EXTENSION ext_name {action} TEXT SEARCH TEMPLATE tpl"), format!("ALTER EXTENSION ext_name {action} VIEW v"), ]; for sql in sqls { @@ -13739,6 +13740,7 @@ fn parse_alter_extension_add_member() { "TEXT SEARCH CONFIGURATION", "TEXT SEARCH DICTIONARY", "TEXT SEARCH PARSER", + "TEXT SEARCH TEMPLATE", "VIEW", ] { let sql = format!("ALTER EXTENSION ext_name ADD {member}");