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

Method lookup_array

nodedb/src/control/planner/catalog_adapter.rs:300–363  ·  view source on GitHub ↗
(&self, name: &str)

Source from the content-addressed store, hash-verified

298 }
299
300 fn lookup_array(&self, name: &str) -> Option<ArrayCatalogView> {
301 use nodedb_array::schema::{ArraySchema, AttrType as EAT, DimType as EDT};
302 use nodedb_array::types::domain::DomainBound;
303 use nodedb_sql::types_array::{
304 ArrayAttrAst, ArrayAttrType, ArrayDimAst, ArrayDimType, ArrayDomainBound,
305 };
306
307 let handle = self.array_catalog.as_ref()?;
308 let entry = {
309 let cat = handle.read().ok()?;
310 cat.lookup_by_name(name)?
311 };
312 let schema: ArraySchema = zerompk::from_msgpack(&entry.schema_msgpack).ok()?;
313
314 let dims = schema
315 .dims
316 .iter()
317 .map(|d| ArrayDimAst {
318 name: d.name.clone(),
319 dtype: match d.dtype {
320 EDT::Int64 => ArrayDimType::Int64,
321 EDT::Float64 => ArrayDimType::Float64,
322 EDT::TimestampMs => ArrayDimType::TimestampMs,
323 EDT::String => ArrayDimType::String,
324 },
325 lo: bound_engine_to_ast(&d.domain.lo),
326 hi: bound_engine_to_ast(&d.domain.hi),
327 })
328 .collect();
329
330 let attrs = schema
331 .attrs
332 .iter()
333 .map(|a| ArrayAttrAst {
334 name: a.name.clone(),
335 dtype: match a.dtype {
336 EAT::Int64 => ArrayAttrType::Int64,
337 EAT::Float64 => ArrayAttrType::Float64,
338 EAT::String => ArrayAttrType::String,
339 EAT::Bytes => ArrayAttrType::Bytes,
340 },
341 nullable: a.nullable,
342 })
343 .collect();
344
345 let tile_extents = schema.tile_extents.iter().map(|n| *n as i64).collect();
346
347 // Closure-local helper.
348 fn bound_engine_to_ast(b: &DomainBound) -> ArrayDomainBound {
349 match b {
350 DomainBound::Int64(v) => ArrayDomainBound::Int64(*v),
351 DomainBound::Float64(v) => ArrayDomainBound::Float64(*v),
352 DomainBound::TimestampMs(v) => ArrayDomainBound::TimestampMs(*v),
353 DomainBound::String(v) => ArrayDomainBound::String(v.clone()),
354 }
355 }
356
357 Some(ArrayCatalogView {

Callers

nothing calls this directly

Calls 7

lookup_by_nameMethod · 0.80
collectMethod · 0.80
as_refMethod · 0.45
okMethod · 0.45
readMethod · 0.45
iterMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected