From bbbd1df1ab31b5c8418bddc8e531ef5d88e9e6db Mon Sep 17 00:00:00 2001 From: PThorpe92 Date: Wed, 26 Mar 2025 13:37:34 -0400 Subject: [PATCH] Replace unwrap in update translation with parse error --- core/translate/update.rs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/core/translate/update.rs b/core/translate/update.rs index 086e7719b..d3e1bdb2f 100644 --- a/core/translate/update.rs +++ b/core/translate/update.rs @@ -94,22 +94,29 @@ pub fn prepare_update_plan(schema: &Schema, body: &mut Update) -> crate::Result< .iter_mut() .map(|set| { let ident = normalize_ident(set.col_names[0].0.as_str()); + let col_index = btree_table .columns .iter() .enumerate() - .find(|(_, col)| { + .find_map(|(i, col)| { col.name .as_ref() - .unwrap_or(&String::new()) - .eq_ignore_ascii_case(&ident) + .filter(|name| name.eq_ignore_ascii_case(&ident)) + .map(|_| i) }) - .map(|(i, _)| i) - .unwrap(); + .ok_or_else(|| { + crate::LimboError::ParseError(format!( + "column '{}' not found in table '{}'", + ident, table_name.0 + )) + })?; + let _ = bind_column_references(&mut set.expr, &table_references, None); - (col_index, set.expr.clone()) + + Ok((col_index, set.expr.clone())) }) - .collect::>(); + .collect::, crate::LimboError>>()?; let mut where_clause = vec![]; let mut result_columns = vec![];