pub struct BodyColumnI32 {
pub column: String,
/* private fields */
}Expand description
body_column_i32(body, "name") — extract the named column from
every row of a JSON result body, parse each as i32, and return
the values as a VecI32 wire.
This is the canonical capture path for tabular result data into
typed-vector wires. Adapter result bodies that already serialize
to [{ "key": 1, ... }, { "key": 2, ... }, ...]-shaped JSON can
expose per-column wires for downstream readers (the recall
evaluator, custom metrics, etc.) without forcing string
round-trips through the metric reader.
Robust extraction rules:
- Body shape
[{...}, {...}, ...]: walks each row, looks up the column by name, parses as i32 viajson_value_as_i32. - Body shape
{ "rows": [...] }: walksrows; same per-row extraction as above. Matches common envelope formats (Jolokia, HTTP wrappers). - Body shape
{ "key": value, ... }(single row at top level): produces a single-element vector. - Non-JSON input: empty vector. This preserves the “no values extracted” diagnostic at the evaluator instead of panicking here.
Rows whose column is absent / null / unparseable contribute
nothing (no zero-fill, no error). Mirrors the legacy host-side
extract_indices_from_json JSON-walk so workloads can swap to
this typed-wire path without recall-value drift.
The body is a PolyWire so the non-Json fallback (“empty vector,
no panic”) applies; column is a const string with no default
(required workload arg).
Fields§
§column: StringThe column argument, as given at construction.
Implementations§
Trait Implementations§
Source§impl PolydatNode for BodyColumnI32
impl PolydatNode for BodyColumnI32
Source§fn compiled_slot(&self, wire_types: &[PortType]) -> Option<CompiledSlotKit>
fn compiled_slot(&self, wire_types: &[PortType]) -> Option<CompiledSlotKit>
(ptr, len) slot
pairs; vector outputs write into kernel-owned scratch.
Checked by the compiled-kernel builders AFTER
Self::compiled_u64 — pure-scalar nodes never need it.
Default None: the node stays on typed eval.Source§fn accepts_none_inputs(&self) -> bool
fn accepts_none_inputs(&self) -> bool
Value::None inputs
directly rather than have the kernel propagate None through
it. Default: false — most nodes follow SRD-74 Rule 1
(None in → None out, no eval invocation). Read moreSource§fn scratch_layout(&self) -> Vec<ScratchElem>
fn scratch_layout(&self) -> Vec<ScratchElem>
Self::eval_in. Empty for a node that evaluates over
Values alone, which is every node but a native cone.Source§fn eval_in(
&self,
scratch: &mut [ScratchBuf],
inputs: &[Value],
outputs: &mut [Value],
)
fn eval_in( &self, scratch: &mut [ScratchBuf], inputs: &[Value], outputs: &mut [Value], )
Self::eval with the node’s scratch, which the evaluating
state owns and hands in: storage belongs to the state, never to
the node, which is shared by every state of the program.Source§fn commutativity(&self) -> Commutativity
fn commutativity(&self) -> Commutativity
Source§fn compiled_u64(&self) -> Option<CompiledU64Op>
fn compiled_u64(&self) -> Option<CompiledU64Op>
Source§fn jit_constants(&self) -> Vec<u64>
fn jit_constants(&self) -> Vec<u64>
Source§fn purity(&self) -> Purity
fn purity(&self) -> Purity
runtime_model.md’s D2 axiom. Default:
Purity::Pure. Override to declare an observable
side channel (Purity::SideChannel) or
eval-call-spanning state (Purity::Nondeterministic). Read moreSource§fn simd_variant(&self) -> Option<SimdVariant>
fn simd_variant(&self) -> Option<SimdVariant>
Source§fn fusion_subgraph(&self) -> Option<FusionSubgraph<'_>>
fn fusion_subgraph(&self) -> Option<FusionSubgraph<'_>>
PolydatProgram::canonical_hash) walks THROUGH fusion
nodes into this subgraph, so identity is invariant to the
engine mix: jit=off and jit=auto compiles of the same
source hash identically, and resume-skip matching survives
mode changes. Default None: ordinary nodes hash as
themselves.Auto Trait Implementations§
impl Freeze for BodyColumnI32
impl RefUnwindSafe for BodyColumnI32
impl Send for BodyColumnI32
impl Sync for BodyColumnI32
impl Unpin for BodyColumnI32
impl UnsafeUnpin for BodyColumnI32
impl UnwindSafe for BodyColumnI32
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more