Skip to main content

PlanVTable

Trait PlanVTable 

Source
pub trait PlanVTable:
    'static
    + Clone
    + Sized
    + Send
    + Sync
    + Debug {
    type PlanData: 'static + Send + Sync + Clone + Debug;
    type Metadata: SerializeMetadata + DeserializeMetadata + Debug;

    // Required methods
    fn id(&self) -> PlanId;
    fn metadata(plan: &Plan<Self>) -> Option<Self::Metadata>;

    // Provided methods
    fn fmt(plan: &Plan<Self>, formatter: &mut Formatter<'_>) -> Result { ... }
    fn with_children(
        plan: &Plan<Self>,
        children: &PlanChildren,
        data: &mut Self::PlanData,
    ) -> VortexResult<()> { ... }
    fn child_name(plan: &Plan<Self>, index: usize) -> Cow<'_, str> { ... }
}
Expand description

Operator-specific behavior for a typed Plan.

Common fields — dtype, row count, and children — are stored outside the erased operator data. Implementations own only their operator-specific data, its metadata codec, and a callback for refreshing cached data after generic child replacement.

Operators describe physical work over a row domain. Their identity and operator-specific data do not depend on the source layout kind. The common lazy-child storage may nevertheless own a hidden source-layout reference used for on-demand lowering.

Required Associated Types§

Source

type PlanData: 'static + Send + Sync + Clone + Debug

Operator-specific data, excluding children.

Children belong in PlanParts::children so that traversal and rewriting can discover them generically.

Source

type Metadata: SerializeMetadata + DeserializeMetadata + Debug

Serialized form of PlanData.

Required Methods§

Source

fn id(&self) -> PlanId

Returns the globally unique operator ID.

Source

fn metadata(plan: &Plan<Self>) -> Option<Self::Metadata>

Returns the serializable metadata for this operator.

Returns None when the operator holds state that cannot be serialized.

Provided Methods§

Source

fn fmt(plan: &Plan<Self>, formatter: &mut Formatter<'_>) -> Result

Writes operator-specific fields after the plan’s standard display summary.

Source

fn with_children( plan: &Plan<Self>, children: &PlanChildren, data: &mut Self::PlanData, ) -> VortexResult<()>

Refreshes cloned operator data after the common child container is replaced.

The plan layer clones PlanData, replaces the children externally, and invokes this callback. Implementations validate the new children and update any derived values in data; they do not rebuild the plan itself.

Source

fn child_name(plan: &Plan<Self>, index: usize) -> Cow<'_, str>

Returns the display name of the child at index.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§