From 07bfeadd563787607d82f052e5d8bd1460d8b595 Mon Sep 17 00:00:00 2001 From: Diego Reis Date: Mon, 12 May 2025 13:25:11 -0300 Subject: [PATCH] core: Simplify error handling of malformed strings for prepared statements --- core/lib.rs | 50 ++++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/core/lib.rs b/core/lib.rs index 4d1d107e7..965023022 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -336,35 +336,29 @@ impl Connection { let mut parser = Parser::new(sql.as_bytes()); let cmd = parser.next()?; let syms = self.syms.borrow(); - if let Some(cmd) = cmd { - match cmd { - Cmd::Stmt(stmt) => { - let program = Rc::new(translate::translate( - self.schema - .try_read() - .ok_or(LimboError::SchemaLocked)? - .deref(), - stmt, - self.header.clone(), - self.pager.clone(), - Rc::downgrade(self), - &syms, - QueryMode::Normal, - )?); - Ok(Statement::new( - program, - self._db.mv_store.clone(), - self.pager.clone(), - )) - } - Cmd::Explain(_stmt) => todo!(), - Cmd::ExplainQueryPlan(_stmt) => todo!(), + let cmd = cmd.expect("Successful parse on nonempty input string should produce a command"); + match cmd { + Cmd::Stmt(stmt) => { + let program = Rc::new(translate::translate( + self.schema + .try_read() + .ok_or(LimboError::SchemaLocked)? + .deref(), + stmt, + self.header.clone(), + self.pager.clone(), + Rc::downgrade(self), + &syms, + QueryMode::Normal, + )?); + Ok(Statement::new( + program, + self._db.mv_store.clone(), + self.pager.clone(), + )) } - } else { - // Shouln't happen - Err(LimboError::ParseError( - "The supplied SQL string contains no statements".to_string(), - )) + Cmd::Explain(_stmt) => todo!(), + Cmd::ExplainQueryPlan(_stmt) => todo!(), } }