mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-01 19:57:30 +00:00
Standardize comments on parsing optional keywords (#773)
This commit is contained in:
parent
61c661c234
commit
b1a000f149
1 changed files with 12 additions and 14 deletions
|
@ -1230,7 +1230,7 @@ impl<'a> Parser<'a> {
|
||||||
/// if `named` is `true`, came from an expression like `ARRAY[ex1, ex2]`
|
/// if `named` is `true`, came from an expression like `ARRAY[ex1, ex2]`
|
||||||
pub fn parse_array_expr(&mut self, named: bool) -> Result<Expr, ParserError> {
|
pub fn parse_array_expr(&mut self, named: bool) -> Result<Expr, ParserError> {
|
||||||
if self.peek_token().token == Token::RBracket {
|
if self.peek_token().token == Token::RBracket {
|
||||||
let _ = self.next_token();
|
let _ = self.next_token(); // consume ]
|
||||||
Ok(Expr::Array(Array {
|
Ok(Expr::Array(Array {
|
||||||
elem: vec![],
|
elem: vec![],
|
||||||
named,
|
named,
|
||||||
|
@ -2723,8 +2723,7 @@ impl<'a> Parser<'a> {
|
||||||
let if_not_exists = self.parse_keywords(&[Keyword::IF, Keyword::NOT, Keyword::EXISTS]);
|
let if_not_exists = self.parse_keywords(&[Keyword::IF, Keyword::NOT, Keyword::EXISTS]);
|
||||||
let names = self.parse_comma_separated(Parser::parse_object_name)?;
|
let names = self.parse_comma_separated(Parser::parse_object_name)?;
|
||||||
|
|
||||||
// Parse optional WITH
|
let _ = self.parse_keyword(Keyword::WITH); // [ WITH ]
|
||||||
let _ = self.parse_keyword(Keyword::WITH);
|
|
||||||
|
|
||||||
let optional_keywords = if dialect_of!(self is MsSqlDialect) {
|
let optional_keywords = if dialect_of!(self is MsSqlDialect) {
|
||||||
vec![Keyword::AUTHORIZATION]
|
vec![Keyword::AUTHORIZATION]
|
||||||
|
@ -3664,7 +3663,7 @@ impl<'a> Parser<'a> {
|
||||||
let object_type = self.expect_one_of_keywords(&[Keyword::TABLE, Keyword::INDEX])?;
|
let object_type = self.expect_one_of_keywords(&[Keyword::TABLE, Keyword::INDEX])?;
|
||||||
match object_type {
|
match object_type {
|
||||||
Keyword::TABLE => {
|
Keyword::TABLE => {
|
||||||
let _ = self.parse_keyword(Keyword::ONLY);
|
let _ = self.parse_keyword(Keyword::ONLY); // [ ONLY ]
|
||||||
let table_name = self.parse_object_name()?;
|
let table_name = self.parse_object_name()?;
|
||||||
let operation = if self.parse_keyword(Keyword::ADD) {
|
let operation = if self.parse_keyword(Keyword::ADD) {
|
||||||
if let Some(constraint) = self.parse_optional_table_constraint()? {
|
if let Some(constraint) = self.parse_optional_table_constraint()? {
|
||||||
|
@ -3711,7 +3710,7 @@ impl<'a> Parser<'a> {
|
||||||
let table_name = self.parse_object_name()?;
|
let table_name = self.parse_object_name()?;
|
||||||
AlterTableOperation::RenameTable { table_name }
|
AlterTableOperation::RenameTable { table_name }
|
||||||
} else {
|
} else {
|
||||||
let _ = self.parse_keyword(Keyword::COLUMN);
|
let _ = self.parse_keyword(Keyword::COLUMN); // [ COLUMN ]
|
||||||
let old_column_name = self.parse_identifier()?;
|
let old_column_name = self.parse_identifier()?;
|
||||||
self.expect_keyword(Keyword::TO)?;
|
self.expect_keyword(Keyword::TO)?;
|
||||||
let new_column_name = self.parse_identifier()?;
|
let new_column_name = self.parse_identifier()?;
|
||||||
|
@ -3751,7 +3750,7 @@ impl<'a> Parser<'a> {
|
||||||
{
|
{
|
||||||
AlterTableOperation::DropPrimaryKey
|
AlterTableOperation::DropPrimaryKey
|
||||||
} else {
|
} else {
|
||||||
let _ = self.parse_keyword(Keyword::COLUMN);
|
let _ = self.parse_keyword(Keyword::COLUMN); // [ COLUMN ]
|
||||||
let if_exists = self.parse_keywords(&[Keyword::IF, Keyword::EXISTS]);
|
let if_exists = self.parse_keywords(&[Keyword::IF, Keyword::EXISTS]);
|
||||||
let column_name = self.parse_identifier()?;
|
let column_name = self.parse_identifier()?;
|
||||||
let cascade = self.parse_keyword(Keyword::CASCADE);
|
let cascade = self.parse_keyword(Keyword::CASCADE);
|
||||||
|
@ -3775,7 +3774,7 @@ impl<'a> Parser<'a> {
|
||||||
new_partitions: renames,
|
new_partitions: renames,
|
||||||
}
|
}
|
||||||
} else if self.parse_keyword(Keyword::CHANGE) {
|
} else if self.parse_keyword(Keyword::CHANGE) {
|
||||||
let _ = self.parse_keyword(Keyword::COLUMN);
|
let _ = self.parse_keyword(Keyword::COLUMN); // [ COLUMN ]
|
||||||
let old_name = self.parse_identifier()?;
|
let old_name = self.parse_identifier()?;
|
||||||
let new_name = self.parse_identifier()?;
|
let new_name = self.parse_identifier()?;
|
||||||
let data_type = self.parse_data_type()?;
|
let data_type = self.parse_data_type()?;
|
||||||
|
@ -3791,7 +3790,7 @@ impl<'a> Parser<'a> {
|
||||||
options,
|
options,
|
||||||
}
|
}
|
||||||
} else if self.parse_keyword(Keyword::ALTER) {
|
} else if self.parse_keyword(Keyword::ALTER) {
|
||||||
let _ = self.parse_keyword(Keyword::COLUMN);
|
let _ = self.parse_keyword(Keyword::COLUMN); // [ COLUMN ]
|
||||||
let column_name = self.parse_identifier()?;
|
let column_name = self.parse_identifier()?;
|
||||||
let is_postgresql = dialect_of!(self is PostgreSqlDialect);
|
let is_postgresql = dialect_of!(self is PostgreSqlDialect);
|
||||||
|
|
||||||
|
@ -3834,7 +3833,6 @@ impl<'a> Parser<'a> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Keyword::INDEX => {
|
Keyword::INDEX => {
|
||||||
let _ = self.parse_keyword(Keyword::ONLY);
|
|
||||||
let index_name = self.parse_object_name()?;
|
let index_name = self.parse_object_name()?;
|
||||||
let operation = if self.parse_keyword(Keyword::RENAME) {
|
let operation = if self.parse_keyword(Keyword::RENAME) {
|
||||||
if self.parse_keyword(Keyword::TO) {
|
if self.parse_keyword(Keyword::TO) {
|
||||||
|
@ -3879,7 +3877,7 @@ impl<'a> Parser<'a> {
|
||||||
filename: self.parse_literal_string()?,
|
filename: self.parse_literal_string()?,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let _ = self.parse_keyword(Keyword::WITH);
|
let _ = self.parse_keyword(Keyword::WITH); // [ WITH ]
|
||||||
let mut options = vec![];
|
let mut options = vec![];
|
||||||
if self.consume_token(&Token::LParen) {
|
if self.consume_token(&Token::LParen) {
|
||||||
options = self.parse_comma_separated(Parser::parse_copy_option)?;
|
options = self.parse_comma_separated(Parser::parse_copy_option)?;
|
||||||
|
@ -5376,12 +5374,12 @@ impl<'a> Parser<'a> {
|
||||||
|
|
||||||
let join_operator_type = match peek_keyword {
|
let join_operator_type = match peek_keyword {
|
||||||
Keyword::INNER | Keyword::JOIN => {
|
Keyword::INNER | Keyword::JOIN => {
|
||||||
let _ = self.parse_keyword(Keyword::INNER);
|
let _ = self.parse_keyword(Keyword::INNER); // [ INNER ]
|
||||||
self.expect_keyword(Keyword::JOIN)?;
|
self.expect_keyword(Keyword::JOIN)?;
|
||||||
JoinOperator::Inner
|
JoinOperator::Inner
|
||||||
}
|
}
|
||||||
kw @ Keyword::LEFT | kw @ Keyword::RIGHT => {
|
kw @ Keyword::LEFT | kw @ Keyword::RIGHT => {
|
||||||
let _ = self.next_token();
|
let _ = self.next_token(); // consume LEFT/RIGHT
|
||||||
let is_left = kw == Keyword::LEFT;
|
let is_left = kw == Keyword::LEFT;
|
||||||
let join_type = self.parse_one_of_keywords(&[
|
let join_type = self.parse_one_of_keywords(&[
|
||||||
Keyword::OUTER,
|
Keyword::OUTER,
|
||||||
|
@ -5430,8 +5428,8 @@ impl<'a> Parser<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Keyword::FULL => {
|
Keyword::FULL => {
|
||||||
let _ = self.next_token();
|
let _ = self.next_token(); // consume FULL
|
||||||
let _ = self.parse_keyword(Keyword::OUTER);
|
let _ = self.parse_keyword(Keyword::OUTER); // [ OUTER ]
|
||||||
self.expect_keyword(Keyword::JOIN)?;
|
self.expect_keyword(Keyword::JOIN)?;
|
||||||
JoinOperator::FullOuter
|
JoinOperator::FullOuter
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue