Skip to content

Replace Option<Vec<T>> with Vec<T> #73

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/sqlast/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ pub struct SQLQuery {
/// SELECT or UNION / EXCEPT / INTECEPT
pub body: SQLSetExpr,
/// ORDER BY
pub order_by: Option<Vec<SQLOrderByExpr>>,
pub order_by: Vec<SQLOrderByExpr>,
/// LIMIT
pub limit: Option<ASTNode>,
}
Expand All @@ -21,8 +21,8 @@ impl ToString for SQLQuery {
s += &format!("WITH {} ", comma_separated_string(&self.ctes))
}
s += &self.body.to_string();
if let Some(ref order_by) = self.order_by {
s += &format!(" ORDER BY {}", comma_separated_string(order_by));
if !self.order_by.is_empty() {
s += &format!(" ORDER BY {}", comma_separated_string(&self.order_by));
}
if let Some(ref limit) = self.limit {
s += &format!(" LIMIT {}", limit.to_string());
Expand Down Expand Up @@ -106,7 +106,7 @@ pub struct SQLSelect {
/// WHERE
pub selection: Option<ASTNode>,
/// GROUP BY
pub group_by: Option<Vec<ASTNode>>,
pub group_by: Vec<ASTNode>,
/// HAVING
pub having: Option<ASTNode>,
}
Expand All @@ -127,8 +127,8 @@ impl ToString for SQLSelect {
if let Some(ref selection) = self.selection {
s += &format!(" WHERE {}", selection.to_string());
}
if let Some(ref group_by) = self.group_by {
s += &format!(" GROUP BY {}", comma_separated_string(group_by));
if !self.group_by.is_empty() {
s += &format!(" GROUP BY {}", comma_separated_string(&self.group_by));
}
if let Some(ref having) = self.having {
s += &format!(" HAVING {}", having.to_string());
Expand Down Expand Up @@ -193,7 +193,7 @@ pub enum TableFactor {
/// Arguments of a table-valued function, as supported by Postgres
/// and MSSQL. Note that deprecated MSSQL `FROM foo (NOLOCK)` syntax
/// will also be parsed as `args`.
args: Option<Vec<ASTNode>>,
args: Vec<ASTNode>,
/// MSSQL-specific `WITH (...)` hints such as NOLOCK.
with_hints: Vec<ASTNode>,
},
Expand All @@ -213,7 +213,7 @@ impl ToString for TableFactor {
with_hints,
} => {
let mut s = name.to_string();
if let Some(args) = args {
if !args.is_empty() {
s += &format!("({})", comma_separated_string(args))
};
if let Some(alias) = alias {
Expand Down
12 changes: 6 additions & 6 deletions src/sqlparser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1198,9 +1198,9 @@ impl Parser {
let body = self.parse_query_body(0)?;

let order_by = if self.parse_keywords(vec!["ORDER", "BY"]) {
Some(self.parse_order_by_expr_list()?)
self.parse_order_by_expr_list()?
} else {
None
vec![]
};

let limit = if self.parse_keyword("LIMIT") {
Expand Down Expand Up @@ -1318,9 +1318,9 @@ impl Parser {
};

let group_by = if self.parse_keywords(vec!["GROUP", "BY"]) {
Some(self.parse_expr_list()?)
self.parse_expr_list()?
} else {
None
vec![]
};

let having = if self.parse_keyword("HAVING") {
Expand Down Expand Up @@ -1351,9 +1351,9 @@ impl Parser {
let name = self.parse_object_name()?;
// Postgres, MSSQL: table-valued functions:
let args = if self.consume_token(&Token::LParen) {
Some(self.parse_optional_args()?)
self.parse_optional_args()?
} else {
None
vec![]
};
let alias = self.parse_optional_alias(keywords::RESERVED_FOR_TABLE_ALIAS)?;
// MSSQL-specific table hints:
Expand Down
22 changes: 11 additions & 11 deletions tests/sqlparser_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ fn parse_select_order_by() {
fn chk(sql: &str) {
let select = verified_query(sql);
assert_eq!(
Some(vec![
vec![
SQLOrderByExpr {
expr: ASTNode::SQLIdentifier("lname".to_string()),
asc: Some(true),
Expand All @@ -468,7 +468,7 @@ fn parse_select_order_by() {
expr: ASTNode::SQLIdentifier("id".to_string()),
asc: None,
},
]),
],
select.order_by
);
}
Expand All @@ -484,7 +484,7 @@ fn parse_select_order_by_limit() {
ORDER BY lname ASC, fname DESC LIMIT 2";
let select = verified_query(sql);
assert_eq!(
Some(vec![
vec![
SQLOrderByExpr {
expr: ASTNode::SQLIdentifier("lname".to_string()),
asc: Some(true),
Expand All @@ -493,7 +493,7 @@ fn parse_select_order_by_limit() {
expr: ASTNode::SQLIdentifier("fname".to_string()),
asc: Some(false),
},
]),
],
select.order_by
);
assert_eq!(Some(ASTNode::SQLValue(Value::Long(2))), select.limit);
Expand All @@ -504,10 +504,10 @@ fn parse_select_group_by() {
let sql = "SELECT id, fname, lname FROM customer GROUP BY lname, fname";
let select = verified_only_select(sql);
assert_eq!(
Some(vec![
vec![
ASTNode::SQLIdentifier("lname".to_string()),
ASTNode::SQLIdentifier("fname".to_string()),
]),
],
select.group_by
);
}
Expand Down Expand Up @@ -746,7 +746,7 @@ fn parse_delimited_identifiers() {
} => {
assert_eq!(vec![r#""a table""#.to_string()], name.0);
assert_eq!(r#""alias""#, alias.unwrap());
assert!(args.is_none());
assert!(args.is_empty());
assert!(with_hints.is_empty());
}
_ => panic!("Expecting TableFactor::Table"),
Expand Down Expand Up @@ -870,7 +870,7 @@ fn parse_implicit_join() {
relation: TableFactor::Table {
name: SQLObjectName(vec!["t2".to_string()]),
alias: None,
args: None,
args: vec![],
with_hints: vec![],
},
join_operator: JoinOperator::Implicit
Expand All @@ -888,7 +888,7 @@ fn parse_cross_join() {
relation: TableFactor::Table {
name: SQLObjectName(vec!["t2".to_string()]),
alias: None,
args: None,
args: vec![],
with_hints: vec![],
},
join_operator: JoinOperator::Cross
Expand All @@ -908,7 +908,7 @@ fn parse_joins_on() {
relation: TableFactor::Table {
name: SQLObjectName(vec![relation.into()]),
alias,
args: None,
args: vec![],
with_hints: vec![],
},
join_operator: f(JoinConstraint::On(ASTNode::SQLBinaryExpr {
Expand Down Expand Up @@ -961,7 +961,7 @@ fn parse_joins_using() {
relation: TableFactor::Table {
name: SQLObjectName(vec![relation.into()]),
alias,
args: None,
args: vec![],
with_hints: vec![],
},
join_operator: f(JoinConstraint::Using(vec!["c1".into()])),
Expand Down