added ability to parse extension to parse_comment inside postgres dialect (#1451)

This commit is contained in:
Maxwell Knight 2024-10-04 23:07:26 +03:00 committed by GitHub
parent e849f7f143
commit 8ccb87a835
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 0 deletions

View file

@ -1855,6 +1855,7 @@ impl fmt::Display for ShowCreateObject {
pub enum CommentObject {
Column,
Table,
Extension,
}
impl fmt::Display for CommentObject {
@ -1862,6 +1863,7 @@ impl fmt::Display for CommentObject {
match self {
CommentObject::Column => f.write_str("COLUMN"),
CommentObject::Table => f.write_str("TABLE"),
CommentObject::Extension => f.write_str("EXTENSION"),
}
}
}

View file

@ -205,6 +205,10 @@ pub fn parse_comment(parser: &mut Parser) -> Result<Statement, ParserError> {
let object_name = parser.parse_object_name(false)?;
(CommentObject::Table, object_name)
}
Token::Word(w) if w.keyword == Keyword::EXTENSION => {
let object_name = parser.parse_object_name(false)?;
(CommentObject::Extension, object_name)
}
_ => parser.expected("comment object_type", token)?,
};

View file

@ -2902,6 +2902,21 @@ fn parse_comments() {
_ => unreachable!(),
}
match pg().verified_stmt("COMMENT ON EXTENSION plpgsql IS 'comment'") {
Statement::Comment {
object_type,
object_name,
comment: Some(comment),
if_exists,
} => {
assert_eq!("comment", comment);
assert_eq!("plpgsql", object_name.to_string());
assert_eq!(CommentObject::Extension, object_type);
assert!(!if_exists);
}
_ => unreachable!(),
}
match pg().verified_stmt("COMMENT ON TABLE public.tab IS 'comment'") {
Statement::Comment {
object_type,