MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / plan_insert_array

Function plan_insert_array

nodedb-sql/src/planner/array_dml.rs:17–36  ·  view source on GitHub ↗
(ast: &InsertArrayAst, catalog: &dyn SqlCatalog)

Source from the content-addressed store, hash-verified

15use crate::types_array::{ArrayAttrLiteral, ArrayAttrType, ArrayCoordLiteral, ArrayDimType};
16
17pub fn plan_insert_array(ast: &InsertArrayAst, catalog: &dyn SqlCatalog) -> Result<Vec<SqlPlan>> {
18 let view = catalog
19 .lookup_array(&ast.name)
20 .ok_or_else(|| SqlError::Parse {
21 detail: format!("INSERT INTO ARRAY {}: array not found", ast.name),
22 })?;
23 if ast.rows.is_empty() {
24 return Err(SqlError::Parse {
25 detail: format!("INSERT INTO ARRAY {}: at least one row required", ast.name),
26 });
27 }
28 for (ri, row) in ast.rows.iter().enumerate() {
29 validate_coords(&ast.name, ri, &row.coords, &view)?;
30 validate_attrs(&ast.name, ri, &row.attrs, &view)?;
31 }
32 Ok(vec![SqlPlan::InsertArray {
33 name: ast.name.clone(),
34 rows: ast.rows.clone(),
35 }])
36}
37
38pub fn plan_delete_array(ast: &DeleteArrayAst, catalog: &dyn SqlCatalog) -> Result<Vec<SqlPlan>> {
39 let view = catalog

Callers 2

plan_array_statementFunction · 0.85
insert_happyFunction · 0.85

Calls 5

validate_coordsFunction · 0.85
validate_attrsFunction · 0.85
lookup_arrayMethod · 0.45
is_emptyMethod · 0.45
iterMethod · 0.45

Tested by 1

insert_happyFunction · 0.68