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

Function require_array_name

nodedb-sql/src/planner/array_fn/helpers.rs:24–55  ·  view source on GitHub ↗
(
    args: &[ast::Expr],
    idx: usize,
    fn_name: &str,
    catalog: &dyn SqlCatalog,
)

Source from the content-addressed store, hash-verified

22}
23
24pub(super) fn require_array_name(
25 args: &[ast::Expr],
26 idx: usize,
27 fn_name: &str,
28 catalog: &dyn SqlCatalog,
29) -> Result<String> {
30 let expr = args.get(idx).ok_or_else(|| SqlError::Unsupported {
31 detail: format!("{fn_name}: missing array name at arg {idx}"),
32 })?;
33 let name = match expr {
34 ast::Expr::Identifier(ident) => normalize_ident(ident),
35 ast::Expr::CompoundIdentifier(parts) if parts.len() >= 2 => {
36 let qualified: String = parts
37 .iter()
38 .map(normalize_ident)
39 .collect::<Vec<_>>()
40 .join(".");
41 return Err(SqlError::Unsupported {
42 detail: format!(
43 "schema-qualified array name '{qualified}': {SCHEMA_QUALIFIED_MSG}"
44 ),
45 });
46 }
47 _ => expect_string_literal(expr, &format!("{fn_name} array name"))?,
48 };
49 if !catalog.array_exists(&name) {
50 return Err(SqlError::Unsupported {
51 detail: format!("{fn_name}: array '{name}' not found"),
52 });
53 }
54 Ok(name)
55}
56
57pub(super) fn expect_string_literal(expr: &ast::Expr, ctx: &str) -> Result<String> {
58 match expr {

Callers 5

try_plan_array_maint_fnFunction · 0.85
plan_sliceFunction · 0.85
plan_projectFunction · 0.85
plan_aggFunction · 0.85
plan_elementwiseFunction · 0.85

Calls 7

normalize_identFunction · 0.85
expect_string_literalFunction · 0.85
joinMethod · 0.80
getMethod · 0.45
lenMethod · 0.45
iterMethod · 0.45
array_existsMethod · 0.45

Tested by

no test coverage detected