pub struct SourceSchema {
pub name: String,
pub projections: Vec<(String, PortType)>,
pub extent: Option<u64>,
pub extent_outputs: Option<(String, String)>,
pub extent_limit: Option<u64>,
pub cursor_kind: CursorKind,
pub partition_output: Option<String>,
pub partitions: Option<Vec<Partition>>,
}Expand description
Schema describing what a source yields.
Fields§
§name: StringSource name as declared in the Polydat graph.
projections: Vec<(String, PortType)>Field names and types available for projection (e.g., ordinal: U64, vector: Json).
extent: Option<u64>Known extent, if finite. None for infinite sources.
None may also mean the extent is computable but only at runtime
(e.g., the cursor’s range(...) bounds depend on iteration-variable
externs). In that case extent_outputs carries the kernel output
names whose values yield [start, end) once externs are bound.
extent_outputs: Option<(String, String)>Optional aux output names (start, end) that the runtime can pull
from the kernel after externs are populated to compute extent. Set
when range(...) bounds are non-literal (e.g., wire-bound dataset
function calls). The compiler also writes back to extent if both
values fold to constants at compile time.
extent_limit: Option<u64>Optional cursor limit clamp, taken from
CompileOptions::cursor_limit (a host’s --limit-style option).
Applied after runtime extent evaluation.
cursor_kind: CursorKindWhat kind of cursor this is. Default Range, the bounded
range(start, end) cursor; the Extending* variants declare a
runtime-extending cursor under a wall-clock, count, or
predicate policy. A host picks ExtendingRangeSourceFactory
for those, and cursor_over_partitions treats them as
open-extent when it resolves an over clause.
partition_output: Option<String>SRD 71: name of the kernel output that carries the
partition-narrowing source (the over <expr> clause on
the cursor declaration). cursor_over_partitions pulls it and
resolves it through cursor_partition::resolve_over into the
full partition list: a spec string or a PartitionSpec
resolves against the cursor’s extent, a Partition or a
PartitionList is re-projected onto it, and Value::None
yields no partitions. A host, such as activation setup,
selects one partition and writes it with set_cursor.
None means the cursor was declared without an over
clause; the cursor uses its full declared extent.
partitions: Option<Vec<Partition>>The partitions the over clause denotes, resolved by the
compiler when the clause is a literal spec and the extent is
known at build (engine_parity.md, step 3). A host reads them
without evaluating anything; cursor_over_partitions returns
them without a pull. None when the clause or the extent is
only known at run time, or the cursor has no over clause.
Trait Implementations§
Source§impl Clone for SourceSchema
impl Clone for SourceSchema
Source§fn clone(&self) -> SourceSchema
fn clone(&self) -> SourceSchema
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SourceSchema
impl RefUnwindSafe for SourceSchema
impl Send for SourceSchema
impl Sync for SourceSchema
impl Unpin for SourceSchema
impl UnsafeUnpin for SourceSchema
impl UnwindSafe for SourceSchema
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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