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 GK 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).Nonemeans the cursor was declared without anoverclause; 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 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
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