Skip to content

Commit c7ad0f8

Browse files
committed
chore: exists statement ast refactored
1 parent d9ee3e2 commit c7ad0f8

File tree

3 files changed

+11
-17
lines changed

3 files changed

+11
-17
lines changed

src/ast/expression/mod.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,12 @@ pub enum InExpressionType {
278278
TableFunction(Identifier, Vec<Expression>),
279279
}
280280

281-
/// An exists statement type
281+
/// An exists statement, i.e. $expr EXISTS (select statement)
282282
#[derive(Debug, PartialEq, Clone)]
283-
pub enum ExistsStatement {
284-
/// Exists
285-
Exists(SelectStatement),
283+
pub struct ExistsStatement {
284+
pub select_statement: SelectStatement,
286285

287-
/// Not Exists
288-
NotExists(SelectStatement),
286+
pub not: bool,
289287
}
290288

291289
/// A case expression

src/parser/expression/exists_expr.rs

+4-7
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,10 @@ impl ExistsExpressionParser for Parser<'_> {
2020
// Consume the enclosing right parenthesis
2121
self.consume_as(TokenType::RightParen)?;
2222

23-
let exists_statement = if is_not {
24-
ExistsStatement::NotExists(select_statement)
25-
} else {
26-
ExistsStatement::Exists(select_statement)
27-
};
28-
29-
Ok(Expression::ExistsStatement(exists_statement))
23+
Ok(Expression::ExistsStatement(ExistsStatement {
24+
select_statement,
25+
not: is_not,
26+
}))
3027
}
3128
}
3229

src/parser/expression/mod.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -374,10 +374,9 @@ pub(crate) mod test_utils {
374374
}
375375

376376
pub fn exist_expr(is_not: bool, statement: SelectStatement) -> Expression {
377-
Expression::ExistsStatement(if is_not {
378-
ExistsStatement::NotExists(statement)
379-
} else {
380-
ExistsStatement::Exists(statement)
377+
Expression::ExistsStatement(ExistsStatement {
378+
select_statement: statement,
379+
not: is_not,
381380
})
382381
}
383382

0 commit comments

Comments
 (0)