mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-22 15:04:04 +00:00
feat: Support SHOW CREATE TABLE|EVENT|FUNCTION (MySQL specific) (#338)
* feat: Support SHOW CREATE TABLE|EVENT|FUNCTION (MySQL specific) * misc: Simplify test with loop over enum values
This commit is contained in:
parent
69af5a1d99
commit
9a5716d94b
4 changed files with 87 additions and 1 deletions
|
@ -2541,7 +2541,9 @@ impl<'a> Parser<'a> {
|
|||
.is_some()
|
||||
{
|
||||
self.prev_token();
|
||||
self.parse_show_columns()
|
||||
Ok(self.parse_show_columns()?)
|
||||
} else if self.parse_one_of_keywords(&[Keyword::CREATE]).is_some() {
|
||||
Ok(self.parse_show_create()?)
|
||||
} else {
|
||||
Ok(Statement::ShowVariable {
|
||||
variable: self.parse_identifiers()?,
|
||||
|
@ -2549,6 +2551,30 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
fn parse_show_create(&mut self) -> Result<Statement, ParserError> {
|
||||
let obj_type = match self.expect_one_of_keywords(&[
|
||||
Keyword::TABLE,
|
||||
Keyword::TRIGGER,
|
||||
Keyword::FUNCTION,
|
||||
Keyword::PROCEDURE,
|
||||
Keyword::EVENT,
|
||||
])? {
|
||||
Keyword::TABLE => Ok(ShowCreateObject::Table),
|
||||
Keyword::TRIGGER => Ok(ShowCreateObject::Trigger),
|
||||
Keyword::FUNCTION => Ok(ShowCreateObject::Function),
|
||||
Keyword::PROCEDURE => Ok(ShowCreateObject::Procedure),
|
||||
Keyword::EVENT => Ok(ShowCreateObject::Event),
|
||||
keyword => Err(ParserError::ParserError(format!(
|
||||
"Unable to map keyword to ShowCreateObject: {:?}",
|
||||
keyword
|
||||
))),
|
||||
}?;
|
||||
|
||||
let obj_name = self.parse_object_name()?;
|
||||
|
||||
Ok(Statement::ShowCreate { obj_type, obj_name })
|
||||
}
|
||||
|
||||
fn parse_show_columns(&mut self) -> Result<Statement, ParserError> {
|
||||
let extended = self.parse_keyword(Keyword::EXTENDED);
|
||||
let full = self.parse_keyword(Keyword::FULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue