diff --git a/core/lib.rs b/core/lib.rs index c72ee9a3d..f093762fb 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -596,7 +596,10 @@ impl Iterator for QueryRunner<'_> { match self.parser.next() { Ok(Some(cmd)) => Some(self.conn.run_cmd(cmd)), Ok(None) => None, - Err(err) => Some(Err(LimboError::from(err))), + Err(err) => { + self.parser.finalize(); + Some(Result::Err(LimboError::from(err))) + } } } } diff --git a/vendored/sqlite3-parser/src/lexer/sql/mod.rs b/vendored/sqlite3-parser/src/lexer/sql/mod.rs index fa98282cc..185aa2183 100644 --- a/vendored/sqlite3-parser/src/lexer/sql/mod.rs +++ b/vendored/sqlite3-parser/src/lexer/sql/mod.rs @@ -28,6 +28,7 @@ pub use error::Error; pub struct Parser<'input> { input: &'input [u8], scanner: Scanner, + /// lemon parser parser: yyParser<'input>, } @@ -62,6 +63,11 @@ impl<'input> Parser<'input> { pub fn offset(&self) -> usize { self.scanner.offset() } + + /// Public API for sqlite3ParserFinalize() + pub fn finalize(&mut self) { + self.parser.sqlite3ParserFinalize(); + } } /*