mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-10 02:14:58 +00:00
added ability to parse extension to parse_comment inside postgres dialect (#1451)
This commit is contained in:
parent
e849f7f143
commit
8ccb87a835
3 changed files with 21 additions and 0 deletions
|
@ -1855,6 +1855,7 @@ impl fmt::Display for ShowCreateObject {
|
||||||
pub enum CommentObject {
|
pub enum CommentObject {
|
||||||
Column,
|
Column,
|
||||||
Table,
|
Table,
|
||||||
|
Extension,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for CommentObject {
|
impl fmt::Display for CommentObject {
|
||||||
|
@ -1862,6 +1863,7 @@ impl fmt::Display for CommentObject {
|
||||||
match self {
|
match self {
|
||||||
CommentObject::Column => f.write_str("COLUMN"),
|
CommentObject::Column => f.write_str("COLUMN"),
|
||||||
CommentObject::Table => f.write_str("TABLE"),
|
CommentObject::Table => f.write_str("TABLE"),
|
||||||
|
CommentObject::Extension => f.write_str("EXTENSION"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,6 +205,10 @@ pub fn parse_comment(parser: &mut Parser) -> Result<Statement, ParserError> {
|
||||||
let object_name = parser.parse_object_name(false)?;
|
let object_name = parser.parse_object_name(false)?;
|
||||||
(CommentObject::Table, object_name)
|
(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)?,
|
_ => parser.expected("comment object_type", token)?,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2902,6 +2902,21 @@ fn parse_comments() {
|
||||||
_ => unreachable!(),
|
_ => 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'") {
|
match pg().verified_stmt("COMMENT ON TABLE public.tab IS 'comment'") {
|
||||||
Statement::Comment {
|
Statement::Comment {
|
||||||
object_type,
|
object_type,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue