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>,
}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 (from --limit / limit= param).
Applied after runtime extent evaluation.
cursor_kind: CursorKindWhat kind of cursor this is. Default Range (the legacy
bounded-finite cursor); ExtendingTimed { ... } declares
the cursor as runtime-extending under a wall-clock
minimum-duration policy. The executor branches on this
to pick between RangeSourceFactory and
ExtendingRangeSourceFactory at phase setup.
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). The executor pulls this output
at phase setup and applies it to the source factory’s
[start, end) range. The output value’s type drives
the resolution:
Value::Str(s)— parsesas a partition spec, resolve, use partition 0.Value::Ext(Partition)— use the resolved partition’sstart_ord/end_ord.Value::Ext(PartitionSpec)— resolve against the cursor’s extent, use partition 0.Value::Ext(PartitionList)— use partition 0.Value::None— no narrowing (cursor uses its full extent).
None means the cursor was declared without an over
clause; the cursor uses its full declared extent.
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 more