mod skip;
pub fn is_multi_statement(sql: &str) -> bool {
statement_count(sql) > 1
}
fn statement_count(sql: &str) -> usize {
let mut count = 0;
let mut is_empty = true;
let mut chars = sql.chars().peekable();
while let Some(character) = chars.next() {
match character {
'\'' | '"' => {
skip::quoted(&mut chars, character);
is_empty = false;
}
'-' if chars.peek() == Some(&'-') => skip::line_comment(&mut chars),
'/' if chars.peek() == Some(&'*') => skip::block_comment(&mut chars),
';' => {
count += usize::from(!is_empty);
is_empty = true;
}
c if c.is_whitespace() => {}
_ => is_empty = false,
}
}
count + usize::from(!is_empty)
}