Convert `update.assignments` into `Vec<(col, SqlExpr)>`.
(assignments: &[ast::Assignment])
| 270 | |
| 271 | /// Convert `update.assignments` into `Vec<(col, SqlExpr)>`. |
| 272 | fn convert_assignments(assignments: &[ast::Assignment]) -> Result<Vec<(String, SqlExpr)>> { |
| 273 | assignments |
| 274 | .iter() |
| 275 | .map(|a| { |
| 276 | let col = match &a.target { |
| 277 | ast::AssignmentTarget::ColumnName(name) => { |
| 278 | if name.0.len() > 1 { |
| 279 | return Err(SqlError::Unsupported { |
| 280 | detail: format!( |
| 281 | "qualified column name in SET target: {SCHEMA_QUALIFIED_MSG}" |
| 282 | ), |
| 283 | }); |
| 284 | } |
| 285 | normalize_object_name_checked(name)? |
| 286 | } |
| 287 | ast::AssignmentTarget::Tuple(names) => names |
| 288 | .iter() |
| 289 | .map(normalize_object_name_checked) |
| 290 | .collect::<Result<Vec<_>>>()? |
| 291 | .join(","), |
| 292 | }; |
| 293 | let val = convert_expr(&a.value)?; |
| 294 | Ok((col, val)) |
| 295 | }) |
| 296 | .collect() |
| 297 | } |
| 298 | |
| 299 | /// Plan a DELETE statement. |
| 300 | pub fn plan_delete(stmt: &ast::Statement, catalog: &dyn SqlCatalog) -> Result<Vec<SqlPlan>> { |
no test coverage detected