diff --git a/src/parser/implements/dml/select.rs b/src/parser/implements/dml/select.rs index 444cfe7a..e13bf447 100644 --- a/src/parser/implements/dml/select.rs +++ b/src/parser/implements/dml/select.rs @@ -312,6 +312,11 @@ impl Parser { // 현재 select_item은 종료된 것으로 판단. Ok(select_item.build()) } + Token::SemiColon => { + self.unget_next_token(current_token); + // 현재 select_item은 종료된 것으로 판단. + Ok(select_item.build()) + } _ => Err(ParsingError::wrap(format!( "E0308 expected expression. but your input word is '{:?}'", current_token diff --git a/src/parser/test/select.rs b/src/parser/test/select.rs index 8b036763..06fcb7b1 100644 --- a/src/parser/test/select.rs +++ b/src/parser/test/select.rs @@ -1432,6 +1432,18 @@ fn test_select_query() { expected: Default::default(), want_error: true, }, + TestCase { + name: r#"SELECT 1;"#.into(), + input: vec![Token::Select, Token::Integer(1), Token::SemiColon], + expected: SelectQuery::builder() + .add_select_item( + SelectItem::builder() + .set_item(SQLExpression::Integer(1)) + .build(), + ) + .build(), + want_error: false, + }, ]; for t in test_cases {