aharpervc opened a new issue, #1800: URL: https://github.com/apache/datafusion-sqlparser-rs/issues/1800
It would be extremely useful if this library was able to properly parse multiple statements, particularly in a object definition body, without requiring semi-colons which are optional for SQL Server. --- The following otherwise valid SQL fails parsing (MSSQL dialect): ```mssql create or alter procedure test() as begin declare @x bit = 1 if @x = 1 begin select 1 end end ``` The error is at the `if @x = 1` line: ``` end of statement, found: if ``` The problem appears to be related to parsing multiple statements in the object definition body. The parsing concludes successfully if the code is changed to `declare @x bit = 1;` with a semi-colon. There's also the similar case of two top level statements: ```mssql declare @x bit = 1 if @x = 1 begin select 1 end ``` The API I was using was parse_sql: ```rust static DIALECT: sqlparser::dialect::MsSqlDialect = sqlparser::dialect::MsSqlDialect {}; let sql_text = ... let mut statements = Parser::parse_sql(&DIALECT, sql_text.as_str())?; // error: end of statement, found: if ``` There's a workaround for the multiple top level statements scenario, but that won't work for the stored procedure example: ```rust fn parse_all_statements(sql_text: &str) -> Result<Vec<Statement>, Box<dyn std::error::Error>> { let mut parser = Parser::new(&DIALECT) .try_with_sql(&sql_text)?; let mut statements = Vec::new(); loop { if let Token::EOF = parser.peek_token_ref().token { break; } statements.push(parser.parse_statement()?); while let Token::SemiColon = parser.peek_token_ref().token { parser.advance_token(); } } return Ok(statements); } ``` --- follow up from: https://github.com/apache/datafusion-sqlparser-rs/pull/1791#issuecomment-2784202219 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org